From 620e015cff17cfc17601fc3677b52f4f44d0ddad Mon Sep 17 00:00:00 2001 From: JamesBae Date: Wed, 19 Oct 2022 17:26:21 +0900 Subject: [PATCH] Fix bug : New windows close bug --- AUTHORS | 15 + COPYING | 675 ++++++ Makefile.am | 50 + README | 169 ++ README.md | 11 + autogen.sh | 25 + configure.ac | 121 ++ data/Makefile.am | 44 + data/celluloid-marshal.lst | 8 + data/celluloid-mpris-gdbus.xml | 95 + data/io.github.GnomeMpv.gschema.xml | 152 ++ ...ub.celluloid_player.Celluloid-symbolic.svg | 92 + ....celluloid_player.Celluloid.appdata.xml.in | 335 +++ ...thub.celluloid_player.Celluloid.desktop.in | 27 + ...hub.celluloid_player.Celluloid.gschema.xml | 202 ++ ...thub.celluloid_player.Celluloid.service.in | 3 + data/io.github.celluloid_player.Celluloid.svg | 201 ++ data/meson.build | 59 + debian/celluloid.install | 2 + debian/changelog | 124 ++ debian/compat | 1 + debian/control | 36 + debian/copyright | 28 + ....github.celluloid_player.Celluloid.desktop | 187 ++ debian/rules | 14 + debian/source/format | 1 + docs/Makefile.am | 5 + docs/celluloid.1 | 49 + docs/meson.build | 1 + .../io.github.celluloid_player.Celluloid.json | 164 ++ meson-post-install.py | 19 + meson.build | 65 + po/LINGUAS | 31 + po/Makevars | 24 + po/POTFILES.in | 30 + po/bg.po | 1166 ++++++++++ po/ca.po | 1170 +++++++++++ po/cs.po | 1151 ++++++++++ po/da.po | 1150 ++++++++++ po/de.po | 1158 ++++++++++ po/eo.po | 1120 ++++++++++ po/es.po | 1177 +++++++++++ po/eu.po | 1156 ++++++++++ po/fa.po | 1109 ++++++++++ po/fi.po | 1143 ++++++++++ po/fr.po | 1185 +++++++++++ po/hr.po | 1152 ++++++++++ po/hu.po | 1118 ++++++++++ po/is.po | 1103 ++++++++++ po/it.po | 1162 ++++++++++ po/ja.po | 1154 ++++++++++ po/meson.build | 20 + po/nl.po | 1138 ++++++++++ po/pl.po | 1158 ++++++++++ po/pt_BR.po | 1162 ++++++++++ po/pt_PT.po | 1171 +++++++++++ po/ro.po | 1108 ++++++++++ po/ru.po | 1142 ++++++++++ po/sk.po | 1108 ++++++++++ po/sl.po | 1129 ++++++++++ po/sr.po | 1108 ++++++++++ po/sr@latin.po | 1108 ++++++++++ po/sv.po | 1116 ++++++++++ po/tr.po | 1127 ++++++++++ po/uk.po | 1128 ++++++++++ po/zh_CN.po | 1115 ++++++++++ po/zh_TW.po | 1115 ++++++++++ src/Makefile.am | 82 + src/celluloid-application.c | 656 ++++++ src/celluloid-application.h | 45 + src/celluloid-common.c | 296 +++ src/celluloid-common.h | 131 ++ src/celluloid-control-box.c | 750 +++++++ src/celluloid-control-box.h | 64 + src/celluloid-controller-actions.c | 640 ++++++ src/celluloid-controller-actions.h | 34 + src/celluloid-controller-input.c | 304 +++ src/celluloid-controller-input.h | 34 + src/celluloid-controller-private.h | 65 + src/celluloid-controller.c | 1328 ++++++++++++ src/celluloid-controller.h | 60 + src/celluloid-def.h | 278 +++ src/celluloid-file-chooser.c | 203 ++ src/celluloid-file-chooser.h | 47 + src/celluloid-header-bar.c | 280 +++ src/celluloid-header-bar.h | 60 + src/celluloid-main-window-private.h | 67 + src/celluloid-main-window.c | 811 +++++++ src/celluloid-main-window.h | 114 + src/celluloid-main.c | 41 + src/celluloid-menu.c | 380 ++++ src/celluloid-menu.h | 63 + src/celluloid-metadata-cache.c | 382 ++++ src/celluloid-metadata-cache.h | 62 + src/celluloid-model.c | 1224 +++++++++++ src/celluloid-model.h | 148 ++ src/celluloid-mpv-private.h | 60 + src/celluloid-mpv-wrapper.c | 291 +++ src/celluloid-mpv-wrapper.h | 96 + src/celluloid-mpv.c | 780 +++++++ src/celluloid-mpv.h | 86 + src/celluloid-open-location-dialog.c | 230 ++ src/celluloid-open-location-dialog.h | 44 + src/celluloid-option-parser.c | 189 ++ src/celluloid-option-parser.h | 30 + src/celluloid-player-options.c | 481 +++++ src/celluloid-player-options.h | 48 + src/celluloid-player-private.h | 65 + src/celluloid-player.c | 1429 +++++++++++++ src/celluloid-player.h | 61 + src/celluloid-playlist-widget.c | 1213 +++++++++++ src/celluloid-playlist-widget.h | 63 + src/celluloid-plugins-manager-item.c | 268 +++ src/celluloid-plugins-manager-item.h | 40 + src/celluloid-plugins-manager.c | 470 +++++ src/celluloid-plugins-manager.h | 42 + src/celluloid-preferences-dialog.c | 464 ++++ src/celluloid-preferences-dialog.h | 38 + src/celluloid-seek-bar.c | 272 +++ src/celluloid-seek-bar.h | 44 + src/celluloid-shortcuts-window.c | 183 ++ src/celluloid-shortcuts-window.h | 38 + src/celluloid-time-label.c | 295 +++ src/celluloid-time-label.h | 36 + src/celluloid-video-area.c | 580 +++++ src/celluloid-video-area.h | 75 + src/celluloid-view.c | 1869 +++++++++++++++++ src/celluloid-view.h | 143 ++ src/generate-authors.py | 17 + src/media-keys/celluloid-media-keys.c | 329 +++ src/media-keys/celluloid-media-keys.h | 36 + src/meson.build | 138 ++ src/mpris/celluloid-mpris-base.c | 382 ++++ src/mpris/celluloid-mpris-base.h | 38 + src/mpris/celluloid-mpris-module.c | 344 +++ src/mpris/celluloid-mpris-module.h | 63 + src/mpris/celluloid-mpris-player.c | 862 ++++++++ src/mpris/celluloid-mpris-player.h | 38 + src/mpris/celluloid-mpris-track-list.c | 599 ++++++ src/mpris/celluloid-mpris-track-list.h | 40 + src/mpris/celluloid-mpris.c | 288 +++ src/mpris/celluloid-mpris.h | 42 + test/meson.build | 8 + test/test-option-parser.c | 170 ++ zanata.xml | 9 + 145 files changed, 60467 insertions(+) create mode 100644 AUTHORS create mode 100644 COPYING create mode 100644 Makefile.am create mode 100644 README create mode 100644 README.md create mode 100755 autogen.sh create mode 100644 configure.ac create mode 100644 data/Makefile.am create mode 100644 data/celluloid-marshal.lst create mode 100644 data/celluloid-mpris-gdbus.xml create mode 100644 data/io.github.GnomeMpv.gschema.xml create mode 100644 data/io.github.celluloid_player.Celluloid-symbolic.svg create mode 100644 data/io.github.celluloid_player.Celluloid.appdata.xml.in create mode 100644 data/io.github.celluloid_player.Celluloid.desktop.in create mode 100644 data/io.github.celluloid_player.Celluloid.gschema.xml create mode 100644 data/io.github.celluloid_player.Celluloid.service.in create mode 100644 data/io.github.celluloid_player.Celluloid.svg create mode 100644 data/meson.build create mode 100644 debian/celluloid.install create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/io.github.celluloid_player.Celluloid.desktop create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100644 docs/Makefile.am create mode 100644 docs/celluloid.1 create mode 100644 docs/meson.build create mode 100644 flatpak/io.github.celluloid_player.Celluloid.json create mode 100755 meson-post-install.py create mode 100644 meson.build create mode 100644 po/LINGUAS create mode 100644 po/Makevars create mode 100644 po/POTFILES.in create mode 100644 po/bg.po create mode 100644 po/ca.po create mode 100644 po/cs.po create mode 100644 po/da.po create mode 100644 po/de.po create mode 100644 po/eo.po create mode 100644 po/es.po create mode 100644 po/eu.po create mode 100644 po/fa.po create mode 100644 po/fi.po create mode 100644 po/fr.po create mode 100644 po/hr.po create mode 100644 po/hu.po create mode 100644 po/is.po create mode 100644 po/it.po create mode 100644 po/ja.po create mode 100644 po/meson.build create mode 100644 po/nl.po create mode 100644 po/pl.po create mode 100644 po/pt_BR.po create mode 100644 po/pt_PT.po create mode 100644 po/ro.po create mode 100644 po/ru.po create mode 100644 po/sk.po create mode 100644 po/sl.po create mode 100644 po/sr.po create mode 100644 po/sr@latin.po create mode 100644 po/sv.po create mode 100644 po/tr.po create mode 100644 po/uk.po create mode 100644 po/zh_CN.po create mode 100644 po/zh_TW.po create mode 100644 src/Makefile.am create mode 100644 src/celluloid-application.c create mode 100644 src/celluloid-application.h create mode 100644 src/celluloid-common.c create mode 100644 src/celluloid-common.h create mode 100644 src/celluloid-control-box.c create mode 100644 src/celluloid-control-box.h create mode 100644 src/celluloid-controller-actions.c create mode 100644 src/celluloid-controller-actions.h create mode 100644 src/celluloid-controller-input.c create mode 100644 src/celluloid-controller-input.h create mode 100644 src/celluloid-controller-private.h create mode 100644 src/celluloid-controller.c create mode 100644 src/celluloid-controller.h create mode 100644 src/celluloid-def.h create mode 100644 src/celluloid-file-chooser.c create mode 100644 src/celluloid-file-chooser.h create mode 100644 src/celluloid-header-bar.c create mode 100644 src/celluloid-header-bar.h create mode 100644 src/celluloid-main-window-private.h create mode 100644 src/celluloid-main-window.c create mode 100644 src/celluloid-main-window.h create mode 100644 src/celluloid-main.c create mode 100644 src/celluloid-menu.c create mode 100644 src/celluloid-menu.h create mode 100644 src/celluloid-metadata-cache.c create mode 100644 src/celluloid-metadata-cache.h create mode 100644 src/celluloid-model.c create mode 100644 src/celluloid-model.h create mode 100644 src/celluloid-mpv-private.h create mode 100644 src/celluloid-mpv-wrapper.c create mode 100644 src/celluloid-mpv-wrapper.h create mode 100644 src/celluloid-mpv.c create mode 100644 src/celluloid-mpv.h create mode 100644 src/celluloid-open-location-dialog.c create mode 100644 src/celluloid-open-location-dialog.h create mode 100644 src/celluloid-option-parser.c create mode 100644 src/celluloid-option-parser.h create mode 100644 src/celluloid-player-options.c create mode 100644 src/celluloid-player-options.h create mode 100644 src/celluloid-player-private.h create mode 100644 src/celluloid-player.c create mode 100644 src/celluloid-player.h create mode 100644 src/celluloid-playlist-widget.c create mode 100644 src/celluloid-playlist-widget.h create mode 100644 src/celluloid-plugins-manager-item.c create mode 100644 src/celluloid-plugins-manager-item.h create mode 100644 src/celluloid-plugins-manager.c create mode 100644 src/celluloid-plugins-manager.h create mode 100644 src/celluloid-preferences-dialog.c create mode 100644 src/celluloid-preferences-dialog.h create mode 100644 src/celluloid-seek-bar.c create mode 100644 src/celluloid-seek-bar.h create mode 100644 src/celluloid-shortcuts-window.c create mode 100644 src/celluloid-shortcuts-window.h create mode 100644 src/celluloid-time-label.c create mode 100644 src/celluloid-time-label.h create mode 100644 src/celluloid-video-area.c create mode 100644 src/celluloid-video-area.h create mode 100644 src/celluloid-view.c create mode 100644 src/celluloid-view.h create mode 100755 src/generate-authors.py create mode 100644 src/media-keys/celluloid-media-keys.c create mode 100644 src/media-keys/celluloid-media-keys.h create mode 100644 src/meson.build create mode 100644 src/mpris/celluloid-mpris-base.c create mode 100644 src/mpris/celluloid-mpris-base.h create mode 100644 src/mpris/celluloid-mpris-module.c create mode 100644 src/mpris/celluloid-mpris-module.h create mode 100644 src/mpris/celluloid-mpris-player.c create mode 100644 src/mpris/celluloid-mpris-player.h create mode 100644 src/mpris/celluloid-mpris-track-list.c create mode 100644 src/mpris/celluloid-mpris-track-list.h create mode 100644 src/mpris/celluloid-mpris.c create mode 100644 src/mpris/celluloid-mpris.h create mode 100644 test/meson.build create mode 100644 test/test-option-parser.c create mode 100644 zanata.xml diff --git a/AUTHORS b/AUTHORS new file mode 100644 index 0000000..6811228 --- /dev/null +++ b/AUTHORS @@ -0,0 +1,15 @@ +# 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 diff --git a/COPYING b/COPYING new file mode 100644 index 0000000..a737dcf --- /dev/null +++ b/COPYING @@ -0,0 +1,675 @@ + + 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 +. diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..fd7abf3 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,50 @@ +AUTOMAKE_OPTIONS = foreign + +SUBDIRS = src data docs po + +EXTRA_DIST = README.md AUTHORS meson.build docs/meson.build test/meson.build test/test-option-parser.c 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) diff --git a/README b/README new file mode 100644 index 0000000..204fe65 --- /dev/null +++ b/README @@ -0,0 +1,169 @@ +# 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.32 +- 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: https://tracker.debian.org/pkg/celluloid +- 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/celluloid +- Guix: https://guix.gnu.org/en/packages/celluloid-0.20 +- 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 manual](https://mpv.io/manual/stable/) for the full list of options. +The file must be specified and enabled in the preferences dialog under the "MPV +Configuration" section. + +It is also possible to set mpv options by putting the options — as you +would pass to mpv on the command line — in `Extra MPV Options` text box in +the preferences dialog. You can also pass options directly on the command line +by adding `mpv-` prefix to the option name. For example, using the option +`--mpv-vf=flip` when launching Celluloid is equivalent to using `--vf=flip` in +mpv. + +### 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/celluloid-def.h](https://github.com/celluloid-player/celluloid/blob/master/src/celluloid-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 . + diff --git a/README.md b/README.md new file mode 100644 index 0000000..8e73e33 --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# Celluloid 0.21.1 + +- Upstream : https://github.com/celluloid-player/celluloid + +# Issue +- Celluloid 0.22 부터는 GTK4를 사용하기 때문에 Ubuntu 20.04 또는 Linuxmint 20.3 이후 버전에서는 Upstream에서 다시 빌드를 진행해야함 +- 현재 번역 파일 hamonikr-system에서 관리중 + +# Fix bug +### 2022-10-19 +- 새 창을 여러개 열고 닫을 때 모두 꺼지는 문제 해결 diff --git a/autogen.sh b/autogen.sh new file mode 100755 index 0000000..d4ab98a --- /dev/null +++ b/autogen.sh @@ -0,0 +1,25 @@ +#!/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 diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..96a223c --- /dev/null +++ b/configure.ac @@ -0,0 +1,121 @@ +AC_PREREQ([2.69]) + +AC_INIT( [celluloid], + [0.21], + [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]) + +# TODO: Remove AM_GNU_GETTEXT_VERSION once autoreconf supports +# AM_GNU_GETTEXT_REQUIRE_VERSION +AM_GNU_GETTEXT_VERSION([0.19]) +AM_GNU_GETTEXT_REQUIRE_VERSION([0.19]) + +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.107 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]) + +AC_DEFINE_UNQUOTED([G_LOG_DOMAIN], "$PACKAGE_NAME", [Default logging facility]) + +# 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 +" diff --git a/data/Makefile.am b/data/Makefile.am new file mode 100644 index 0000000..5321ed3 --- /dev/null +++ b/data/Makefile.am @@ -0,0 +1,44 @@ +gsettings_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) diff --git a/data/celluloid-marshal.lst b/data/celluloid-marshal.lst new file mode 100644 index 0000000..08ee3fa --- /dev/null +++ b/data/celluloid-marshal.lst @@ -0,0 +1,8 @@ +VOID: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 diff --git a/data/celluloid-mpris-gdbus.xml b/data/celluloid-mpris-gdbus.xml new file mode 100644 index 0000000..df16fda --- /dev/null +++ b/data/celluloid-mpris-gdbus.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/io.github.GnomeMpv.gschema.xml b/data/io.github.GnomeMpv.gschema.xml new file mode 100644 index 0000000..c7e61c1 --- /dev/null +++ b/data/io.github.GnomeMpv.gschema.xml @@ -0,0 +1,152 @@ + + + + + + + + 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 + + + + + diff --git a/data/io.github.celluloid_player.Celluloid-symbolic.svg b/data/io.github.celluloid_player.Celluloid-symbolic.svg new file mode 100644 index 0000000..4be550e --- /dev/null +++ b/data/io.github.celluloid_player.Celluloid-symbolic.svg @@ -0,0 +1,92 @@ + + + + + + + + image/svg+xml + + Gnome Symbolic Icon Theme + + + + + + + Gnome Symbolic Icon Theme + + + + + diff --git a/data/io.github.celluloid_player.Celluloid.appdata.xml.in b/data/io.github.celluloid_player.Celluloid.appdata.xml.in new file mode 100644 index 0000000..1e6263d --- /dev/null +++ b/data/io.github.celluloid_player.Celluloid.appdata.xml.in @@ -0,0 +1,335 @@ + + + + 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
  • +
+
+ The Celluloid Developers + + + +

+ This release contains the following changes: +

+
    +
  • + Add Basque translation by @aldatsa. +
  • +
  • + Make the shuffle and loop command line options work properly. +
  • +
  • + Make the main menu button toggleable by pressing F10. +
  • +
  • + Add a setting for always appending opened files to the playlist. +
  • +
  • + Allow appending files to playlist by holding shift while dropping files + onto the video area. +
  • +
  • + Make CSD header bar toggleable via the mpv property "border". +
  • +
  • + Include Flatpak manifest in the repo. This allows Celluloid to be built in + one click in apps like GNOME Builder. +
  • +
+

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

+
+
+ + +

+ This release contains the following changes: +

+
    +
  • + Make it possible to activate context menu when the playlist is empty. +
  • +
  • + Prevent constant resizing of the seek bar due to timestamp label resizing + as its value changes. +
  • +
  • + Only show a single error dialog when a large number of errors occurs in + rapid succession. +
  • +
  • + Add menu item for opening folders. +
  • +
  • + Adjust position of UI elements of modal dialogs in non-CSD mode to be more + consistent with CSD mode. +
  • +
  • + Add support for loading external video tracks. +
  • +
  • + Make playlist shuffle toggleable. +
  • +
  • + Make arrow key bindings work with arrow keys on numpad. +
  • +
+

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

+
+
+ + +

+ This release contains the following changes: +

+
    +
  • + Adjust the range of volume button based on the value of the volume-max + property. +
  • +
  • + Retain window maximization state across sessions. +
  • +
  • + Retain loop state across sessions. +
  • +
  • + Implement playlist search. +
  • +
  • + Update the list of shortcuts in Keyboard Shortcuts dialog. +
  • +
  • + Correctly handle quotes and escape sequences in extra mpv options. +
  • +
  • + Display time at cursor position when hovering the seek bar. +
  • +
  • + Deprecate '--mpv-options'. Options starting with '--mpv-' can be + used to set mpv options instead. For example, passing + '--mpv-vf=vflip' to Celluloid is equivalent to passing + '--vf=vflip' to mpv. +
  • +
  • + Add support for configuring dead zone, an area in which mouse movement + will not cause controls to be shown. +
  • +
  • + Make window sizing work correctly with HiDPI displays. +
  • +
  • + Add Finnish translation by Kimmo Kujansuu. +
  • +
  • + Add Slovenian translation by @bertronika. +
  • +
+

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

+
+
+ + +

+ 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 + http://translate.zanata.org/project/view/celluloid + gnome-mpv_at_teknik.io +
diff --git a/data/io.github.celluloid_player.Celluloid.desktop.in b/data/io.github.celluloid_player.Celluloid.desktop.in new file mode 100644 index 0000000..bb88123 --- /dev/null +++ b/data/io.github.celluloid_player.Celluloid.desktop.in @@ -0,0 +1,27 @@ +[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=io.github.celluloid_player.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;enqueue; + +[Desktop Action new-window] +Name=New Window +Exec=celluloid --new-window + +[Desktop Action enqueue] +Name=Add to Playlist +Exec=celluloid --enqueue %U diff --git a/data/io.github.celluloid_player.Celluloid.gschema.xml b/data/io.github.celluloid_player.Celluloid.gschema.xml new file mode 100644 index 0000000..8f5e9ab --- /dev/null +++ b/data/io.github.celluloid_player.Celluloid.gschema.xml @@ -0,0 +1,202 @@ + + + + + + + + false + Whether the settings has already been migrated from the previous version + + + + + true + Automatically resize window to fit video + + + + + true + Enable dark theme + + + + + true + Enable client-side decorations + + + + + false + Use floating controls in windowed mode + + + + + false + Automatically hide mouse cursor in windowed mode + + + + + 0 + The minimum cursor speed at which floating controls will be unhidden. + + + + + + 0 + Size of the dead zone in which cursor movement will not cause the controls to be shown. + + + + + false + Use skip buttons for controlling playlist + + + + + false + Make file chooser remember last file's location + + + + + false + Always open new window + + + + + false + Always append opened files to playlist + + + + + "" + Options to pass to mpv + + + + + "" + Path to mpv configuration file + + + + + false + Load mpv configuration file + + + + + "" + Path to mpv input configuration file + + + + + false + Load mpv input configuration file + + + + + true + Enable MPRIS support + + + + + true + Enable media keys support + + + + + true + Prefetch metadata + + + + + false + Ignore playback errors + + + + + true + Inhibit session idling + + + + + + + + 640 + Width of the window + + + + + 480 + Height of the window + + + + + false + Whether or not the window is maximized + + + + + + 1.0 + Volume of player + + + + + false + Whether or not to loop when the end of playlist is reached + + + + + 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 + + + + + diff --git a/data/io.github.celluloid_player.Celluloid.service.in b/data/io.github.celluloid_player.Celluloid.service.in new file mode 100644 index 0000000..0567d65 --- /dev/null +++ b/data/io.github.celluloid_player.Celluloid.service.in @@ -0,0 +1,3 @@ +[D-BUS Service] +Name=io.github.celluloid_player.Celluloid +Exec=@bindir@/celluloid --gapplication-service diff --git a/data/io.github.celluloid_player.Celluloid.svg b/data/io.github.celluloid_player.Celluloid.svg new file mode 100644 index 0000000..aae1095 --- /dev/null +++ b/data/io.github.celluloid_player.Celluloid.svg @@ -0,0 +1,201 @@ + + + Adwaita Icon Template + + + + + + + + + + + + + + + + image/svg+xml + + + + GNOME Design Team + + + + + Adwaita Icon Template + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/data/meson.build b/data/meson.build new file mode 100644 index 0000000..3d5767e --- /dev/null +++ b/data/meson.build @@ -0,0 +1,59 @@ + +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 diff --git a/debian/celluloid.install b/debian/celluloid.install new file mode 100644 index 0000000..5a9c8f6 --- /dev/null +++ b/debian/celluloid.install @@ -0,0 +1,2 @@ +usr/ +debian/io.github.celluloid_player.Celluloid.desktop usr/share/applications/ diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..f92a113 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,124 @@ +celluloid (0.21.1-hamonikr1) uma; urgency=medium + + * Fix celluloid-video-area.c + - Fix bug : create many new windows > close one or two winodws > all windows close + - Delete line 143 : GTK_WIDGET_CLASS(celluloid_video_area_parent_class)->destroy(widget); + + -- HamoniKR Wed, 19 Oct 2022 17:10:22 +0900 + +celluloid (0.21-linuxmint1+uma) uma; urgency=medium + + * Add dependency on ffmpegthumbnailer + * Add build-dep on meson + * l10n: Add translations to desktop file + + -- Clement Lefebvre Thu, 03 Jun 2021 11:25:26 +0100 + +celluloid (0.17-1~bionic2) bionic; urgency=low + + * New upstream release. + * Rename to celluloid. + + -- Xu Zhen Sat, 31 Aug 2019 00:22:44 +0800 + +gnome-mpv (0.16-1~disco1) disco; urgency=low + + * New upstream release. + + -- Xu Zhen Wed, 23 Jan 2019 11:30:35 +0000 + +gnome-mpv (0.15-1~cosmic1) bionic; urgency=low + + * New upstream release. + + -- Xu Zhen Tue, 11 Sep 2018 21:31:29 +0800 + +gnome-mpv (0.14-1~bionic2) bionic; urgency=low + + * Update mpv version requirement. + + -- Xu Zhen Tue, 20 Feb 2018 11:49:48 +0800 + +gnome-mpv (0.14-1~bionic1) bionic; urgency=low + + * New upstream release. + + -- Xu Zhen Tue, 20 Feb 2018 11:38:11 +0800 + +gnome-mpv (0.13-1~artful1) artful; urgency=low + + * New upstream release. + + -- Xu Zhen Sat, 21 Oct 2017 18:21:28 +0800 + +gnome-mpv (0.12-1~zesty1) zesty; urgency=low + + * New upstream release. + + -- Xu Zhen Wed, 14 Jun 2017 19:27:48 +0800 + +gnome-mpv (0.11-1~zesty1) zesty; urgency=low + + * New upstream release. + + -- Xu Zhen Fri, 06 Jan 2017 19:49:59 +0800 + +gnome-mpv (0.10-1~yakkety2) yakkety; urgency=low + + * Rebuild against GTK 3.20 + + -- Xu Zhen Mon, 15 Aug 2016 19:09:31 +0800 + +gnome-mpv (0.10-1~yakkety1) yakkety; urgency=low + + * New upstream release. + + -- Xu Zhen Sun, 31 Jul 2016 19:10:05 +0800 + +gnome-mpv (0.9-1~yakkety2) yakkety; urgency=low + + * Fix FTBFS. + + -- Xu Zhen Wed, 18 May 2016 20:10:35 +0800 + +gnome-mpv (0.9-1~yakkety1) yakkety; urgency=low + + * New upstream release. + + -- Xu Zhen Wed, 18 May 2016 19:43:20 +0800 + +gnome-mpv (0.7-1~xenial1) xenial; urgency=low + + * New upstream release. + + -- Xu Zhen Sun, 31 Jan 2016 16:15:22 +0800 + +gnome-mpv (0.6-1~xenial1) xenial; urgency=low + + * New upstream release. + + -- Xu Zhen Tue, 27 Oct 2015 19:31:50 +0800 + +gnome-mpv (0.5-1~wily1) wily; urgency=low + + * New upstream release. + + -- Xu Zhen Fri, 07 Aug 2015 20:18:30 +0800 + +gnome-mpv (0.4-1~wily2) wily; urgency=low + + * patches/potfile.patch: Fix FTBFS + + -- Xu Zhen Sun, 17 May 2015 13:35:41 +0800 + +gnome-mpv (0.4-1~wily1) wily; urgency=low + + * New upstream release. + + -- Xu Zhen Sun, 17 May 2015 11:22:48 +0800 + +gnome-mpv (0.3-1~vivid1) vivid; urgency=low + + * Initial ubuntu package. + + -- Xu Zhen Wed, 18 Mar 2015 22:53:16 +0800 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..ec63514 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..df2c078 --- /dev/null +++ b/debian/control @@ -0,0 +1,36 @@ +Source: celluloid +Section: video +Priority: optional +Maintainer: Xu Zhen +Build-Depends: debhelper (>= 9), + dh-autoreconf, + appstream-util, + autotools-dev, + autoconf-archive, + intltool (>= 0.40.6), + pkg-config, + libepoxy-dev, + libglib2.0-dev (>= 2.44), + libgtk-3-dev (>= 3.22.23), + libmpv-dev (>= 0.29.0), + meson +Standards-Version: 4.4.0 +Homepage: https://github.com/gnome-mpv/gnome-mpv + +Package: celluloid +Architecture: any +Pre-Depends: ${misc:Pre-Depends} +Depends: ${shlibs:Depends}, ${misc:Depends}, ffmpegthumbnailer +Recommends: youtube-dl +Breaks: gnome-mpv (<= 0.16) +Replaces: gnome-mpv (<= 0.16) +Description: simple GTK+ frontend for mpv + Celluloid (formerly GNOME MPV) interacts with mpv via the client API exported + by libmpv, allowing access to mpv's powerful playback capabilities. + +Package: gnome-mpv +Architecture: all +Depends: celluloid +Description: transitional dummy package + This is a transitional dummy package, it can be safely removed. + diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..853103e --- /dev/null +++ b/debian/copyright @@ -0,0 +1,28 @@ +Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: GNOME MPV +Source: https://github.com/gnome-mpv/gnome-mpv + +Files: * +Copyright: Copyright 2014-2015 gnome-mpv +License: GPL-3+ + +Files: debian/* +Copyright: 2015, Xu Zhen +License: GPL-3+ + +License: GPL-3+ + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + . + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". diff --git a/debian/io.github.celluloid_player.Celluloid.desktop b/debian/io.github.celluloid_player.Celluloid.desktop new file mode 100644 index 0000000..61a3516 --- /dev/null +++ b/debian/io.github.celluloid_player.Celluloid.desktop @@ -0,0 +1,187 @@ +[Desktop Entry] +Version=1.0 +Name=Celluloid +GenericName=Multimedia Player +GenericName[am]=መገናኛ ማጫወቻ +GenericName[ar]=مشغل الوسائط +GenericName[bg]=Мултимедиен плеър +GenericName[ca]=Reproductor multimèdia +GenericName[cs]=Multimediální přehrávač +GenericName[da]=Medieafspiller +GenericName[de]=Medienwiedergabe +GenericName[el]=Αναπαραγωγή πολυμέσων +GenericName[eo]=Plurmedia ludilo +GenericName[es]=Reproductor multimedia +GenericName[et]=Meediaesitaja +GenericName[eu]=Multimedia-erreproduzitzailea +GenericName[fi]=Mediasoitin +GenericName[fi_FI]=Mediasoitin +GenericName[fr]=Lecteur multimédia +GenericName[he]=נגן מדיה +GenericName[hi]=मीडिया प्लेयर +GenericName[hr]=Multimedijski reproduktor +GenericName[hu]=Médialejátszó +GenericName[ia]=Reproductor de medios +GenericName[id]=Pemutar Media +GenericName[is]=Margmiðlunarspilari +GenericName[it]=Riproduttore multimediale +GenericName[ja]=メディアプレイヤー +GenericName[kab]=Ameɣri n umidya +GenericName[ko]=미디어 플레이어 +GenericName[ku]=Lêdarê Medya +GenericName[lt]=Medijos grotuvas +GenericName[nb]=Mediaspiller +GenericName[nl]=Mediaspeler +GenericName[oc]=Lector multimèdia +GenericName[pl]=Odtwarzacz multimediów +GenericName[pt]=Reprodutor de Multimédia +GenericName[pt_BR]=Reprodutor de Mídia +GenericName[ro]=Player media +GenericName[ru]=Медиаплеер +GenericName[sk]=Prehrávač multimédií +GenericName[sl]=Predvajalnik predstavnosti +GenericName[sr]=Медијски програм +GenericName[sr@Latn]=Medijski program +GenericName[sr@cyrillic]=Медијски програм +GenericName[sr@ije]=Медијски програм +GenericName[sr@ijekavianlatin]=Медијски програм +GenericName[sr@latin]=Medijski program +GenericName[sr_Cyrl]=Медијски програм +GenericName[sr_RS]=Медијски програм +GenericName[sr_RS@latin]=Medijski program +GenericName[sv]=Mediaspelare +GenericName[th]=โปรแกรมเล่นสื่อ +GenericName[tr]=Ortam Oynatıcı +GenericName[uk]=Програвач медіа +GenericName[ur]=میڈیا پلیئر +GenericName[zh]=媒体播放器 +GenericName[zh_CN]=媒体播放器 +GenericName[zh_HK]=媒體播放器 +GenericName[zh_TW]=媒體播放器 +Comment=Play movies and videos +Comment[am]=ሙቪ ማጫወቻ +Comment[ar]=تشغيل الأفلام +Comment[as]=চলচিত্ৰসমূহ চলাওক +Comment[be]=Прайграванне фільмаў +Comment[be@latin]=Прайграванне фільмаў +Comment[bg]=Изпълнение на филми и видеоклипове +Comment[ca]=Reproduïu pel·lícules +Comment[crh]=Filmler oynat +Comment[cs]=Přehrávání filmů +Comment[cs_CZ]=Přehrávání filmů +Comment[da]=Afspil film og videoer +Comment[de]=Filme abspielen +Comment[el]=Αναπαραγωγή ταινιών +Comment[eo]=Ludi filmojn +Comment[es]=Reproduce películas y vídeos +Comment[et]=Filmide esitamine +Comment[eu]=Filma erreproduzitzea +Comment[fa]=پخش فیلم‌ها +Comment[fi]=Toista elokuvia +Comment[fr]=Lecture de films et vidéos +Comment[ga]=Seinn scannáin +Comment[gl]=Reproducir filmes +Comment[gu]=ચિત્રપટ વગાડો +Comment[he]=נגינת סרטים +Comment[he_IL]=נגינת סרטים +Comment[hi]=चलाएँ मूवी +Comment[hr]=Gledajte filmove i video snimke +Comment[hu]=Filmek lejátszása +Comment[ia]=Reproducer films +Comment[id]=Memutar film +Comment[is]=Spila myndskeið +Comment[it]=Riproduce filmati +Comment[ja]=動画を再生します +Comment[kab]=Ɣer tividyutin +Comment[kk]=Бейнелерды ойнату +Comment[km]=ចាក់​ភាពយន្ត +Comment[kn]=ಚಲನಚಿತ್ರವನ್ನು ಚಲಾಯಿಸು +Comment[ko]=동영상을 재생합니다 +Comment[lt]=Groti filmus +Comment[lv]=Atskaņot filmas +Comment[ml]=ചലച്ചിത്രം പ്രവര്‍ത്തിപ്പിക്കുക +Comment[mr]=चित्रपट चालवा +Comment[nb]=Spill av filmer +Comment[nl]=Films afspelen +Comment[oc]=Lectura de filmes +Comment[or]=ଚଳଚିତ୍ର ଚଲାନ୍ତୁ +Comment[pa]=ਮੂਵੀ ਚਲਾਓ +Comment[pl]=Odtwarzanie filmów +Comment[pl_PL]=Odtwarzanie filmów +Comment[pt]=Reproduzir filmes +Comment[pt_BR]=Reproduzir filmes +Comment[ro]=Redare filme +Comment[ru]=Воспроизведение фильмов +Comment[sk]=Prehráva filmy +Comment[sl]=Predvajanje posnetkov +Comment[sr]=Пуштајте филмове +Comment[sr@Latn]=Puštajte filmove +Comment[sr@cyrillic]=Пуштајте филмове +Comment[sr@ije]=Пуштајте филмове +Comment[sr@ijekavianlatin]=Пуштајте филмове +Comment[sr@latin]=Puštajte filmove +Comment[sr_Cyrl]=Пуштајте филмове +Comment[sr_RS]=Пуштајте филмове +Comment[sr_RS@latin]=Puštajte filmove +Comment[sv]=Spela upp filmer +Comment[ta]=திரைப்படங்களை இயக்குக +Comment[te]=చలనచిత్రాలను ప్రదర్శించు +Comment[th]=เล่นภาพยนตร์ +Comment[tr]=Filmleri oynat +Comment[ug]=كىنولارنى قويۇش +Comment[uk]=Відтворити фільм +Comment[ur]=فلمیں چلائیں +Comment[vi]=Phát phim +Comment[zh]=播放电影 +Comment[zh_CN]=播放电影 +Comment[zh_HK]=播放影片 +Comment[zh_TW]=播放影片 +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; +Keywords[bg]=Видео;Кино;Филм;Клип;Сериал;Плеър;DVD;TV;Диск, Албум;Музика;Gnome;MPV +Keywords[cs]=Video;Snímek;Film;Klip;Seriál;Přehrávač;DVD;TV;Disk;Album;Hudba;GNOME;mpv; +Keywords[da]=Video;Film;Klip;Serier;Afspiller;DVD;TV;Disk;Album;Musik;GNOME;mpv; +Keywords[de]=Video;Movie;Film;Clip;Serie;Spieler;DVD,TV;Album;Musik;GNOME;mpv +Keywords[eo]=Disko;DVD;Filmo;GNOME;KD;mpv;Muziko;Seriaĵo;Televido;TV; +Keywords[es]=vídeo;película;filme;clip;serie;reproductor;DVD;TV;disco;álbum;música; GNOME;mpv; +Keywords[fr]=Vidéo;Film;Clip;Séries;Lecteur;DVD;TV;Télé;Disque;Album;Musique;GNOME;mpv; +Keywords[pt_BR]=Vídeo;Filme;Clipes;Séries;Tocar;DVD;TV;Disco;Álbum;Música;GNOME;mpv; +Keywords[pt_PT]=Video;Movie;Film;Clip;Series;Player;DVD;TV;Disc;Album;Music;GNOME;mpv; +Keywords[tr]=Video;Film;Müzik;Klip;Diziler;Oynatıcı;DVD;TV;Disk;Albüm;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 +Name[bg]=Нов прозорец +Name[ca]=Finestra nova +Name[cs]=Nové okno +Name[da]=Nyt vindue +Name[de]=Neues Fenster +Name[eo]=Nova fenestro +Name[es]=Ventana nueva +Name[fr]=Nouvelle fenêtre +Name[hr]=Novi prozor +Name[it]=Nuova finestra +Name[ja]=新しいウィンドウ +Name[pl]=Nowe okno +Name[pt_BR]=Nova Janela +Name[pt_PT]=Nova janela +Name[ru]=Новое окно +Name[sr@latin]=Novi prozor +Name[sr]=Нови прозор +Name[sv]=Nytt fönster +Name[tr]=Yeni Pencere +Name[uk]=Нове вікно +Name[zh_CN]=新建窗口 +Exec=celluloid --new-window diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..3503c36 --- /dev/null +++ b/debian/rules @@ -0,0 +1,14 @@ +#!/usr/bin/make -f + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +%: + dh $@ #--with autoreconf + +#override_dh_autoreconf: +# NOCONFIGURE=1 ./autogen.sh + +override_dh_install: + dh_install --list-missing + diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/docs/Makefile.am b/docs/Makefile.am new file mode 100644 index 0000000..5963ed0 --- /dev/null +++ b/docs/Makefile.am @@ -0,0 +1,5 @@ +man_MANS=celluloid.1 + +EXTRA_DIST = $(man_MANS) + + diff --git a/docs/celluloid.1 b/docs/celluloid.1 new file mode 100644 index 0000000..b347b5f --- /dev/null +++ b/docs/celluloid.1 @@ -0,0 +1,49 @@ +.\"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-MPVOPTION=VALUE\fR +Set mpv option \fBMPVOPTION\fR to \fBVALUE\fR. For example, \fB--mpv-vf=vflip\fR +will set the mpv option \fBvf\fR to \fBvflip\fR. This is equivalent to passing +\fB--vf=vflip\fR 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. diff --git a/docs/meson.build b/docs/meson.build new file mode 100644 index 0000000..3d61e5b --- /dev/null +++ b/docs/meson.build @@ -0,0 +1 @@ +install_man('celluloid.1') diff --git a/flatpak/io.github.celluloid_player.Celluloid.json b/flatpak/io.github.celluloid_player.Celluloid.json new file mode 100644 index 0000000..4451be3 --- /dev/null +++ b/flatpak/io.github.celluloid_player.Celluloid.json @@ -0,0 +1,164 @@ +{ + "app-id": "io.github.celluloid_player.Celluloid", + "runtime": "org.gnome.Platform", + "runtime-version": "master", + "sdk": "org.gnome.Sdk", + "command": "celluloid", + "finish-args": [ + "--share=ipc", + "--socket=fallback-x11", + "--socket=wayland", + "--device=all", + "--share=network", + "--socket=pulseaudio", + "--filesystem=xdg-pictures", + "--talk-name=org.gtk.vfs", + "--talk-name=org.gtk.vfs.*", + "--talk-name=org.gnome.SettingsDaemon.MediaKeys", + "--env=LC_NUMERIC=C" + ], + "modules": [ + { + "name": "luajit", + "no-autogen": true, + "cleanup": [ "/bin", "/lib/*.a", "/include", "/lib/pkgconfig", "/share/man" ], + "sources": [ + { + "type": "archive", + "url": "http://luajit.org/download/LuaJIT-2.1.0-beta3.tar.gz", + "sha256": "1ad2e34b111c802f9d0cdf019e986909123237a28c746b21295b63c9e785d9c3" + }, + { + "type": "shell", + "commands": [ "sed -i 's|/usr/local|/app|' ./Makefile" ] + } + ] + }, + { + "name": "libv4l2", + "cleanup": [ "/sbin", "/bin", "/include", "/lib/*.la", "/lib/*/*.la", "/lib*/*/*/*.la", "/lib/pkgconfig", "/share/man" ], + "config-opts": [ "--disable-static", "--disable-bpf", "--with-udevdir=/app/lib/udev" ], + "sources": [ + { + "type": "archive", + "url": "https://linuxtv.org/downloads/v4l-utils/v4l-utils-1.20.0.tar.bz2", + "sha256": "956118713f7ccb405c55c7088a6a2490c32d54300dd9a30d8d5008c28d3726f7" + } + ] + }, + { + "name": "nv-codec-headers", + "cleanup": ["*"], + "no-autogen": true, + "make-install-args": ["PREFIX=/app"], + "sources": [ + { + "type": "git", + "url": "https://git.videolan.org/git/ffmpeg/nv-codec-headers.git", + "commit": "cf8b0b2bb70b59068b06f1d5610627c8aa6d5652" + } + ] + }, + { + "name": "ffmpeg", + "cleanup": [ "/include", "/lib/pkgconfig", "/share/ffmpeg/examples" ], + "config-opts": [ + "--enable-shared", + "--disable-static", + "--enable-gnutls", + "--disable-doc", + "--disable-programs", + "--disable-encoders", + "--disable-muxers", + "--enable-encoder=png", + "--enable-libv4l2", + "--enable-libdav1d" + ], + "sources": [ + { + "type": "git", + "url": "https://git.ffmpeg.org/ffmpeg.git" + } + ] + }, + { + "name": "libass", + "cleanup": [ "/include", "/lib/*.la", "/lib/pkgconfig" ], + "config-opts": [ "--disable-static" ], + "sources": [ + { + "type": "archive", + "url": "https://github.com/libass/libass/releases/download/0.14.0/libass-0.14.0.tar.xz", + "sha256": "881f2382af48aead75b7a0e02e65d88c5ebd369fe46bc77d9270a94aa8fd38a2" + } + ] + }, + { + "name": "uchardet", + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DBUILD_STATIC=0" + ], + "cleanup": [ + "/bin", + "/include", + "/lib/pkgconfig", + "/share/man" + ], + "sources": [ + { + "type": "archive", + "url": "https://www.freedesktop.org/software/uchardet/releases/uchardet-0.0.6.tar.xz", + "sha256": "8351328cdfbcb2432e63938721dd781eb8c11ebc56e3a89d0f84576b96002c61" + } + ] + }, + { + "name": "libmpv", + "cleanup": [ "/include", "/lib/pkgconfig", "/share/man" ], + "buildsystem": "simple", + "build-commands": [ + "python3 waf configure --prefix=/app --enable-libmpv-shared --disable-cplayer --disable-build-date --disable-alsa", + "python3 waf build", + "python3 waf install" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/mpv-player/mpv.git" + }, + { + "type": "file", + "url": "https://waf.io/waf-2.0.19", + "sha256": "ba63c90a865a9bcf46926c4e6776f9a3f73d29f33d49b7f61f96bc37b7397cef", + "dest-filename": "waf" + } + ] + }, + { + "name": "youtube-dl", + "no-autogen": true, + "no-make-install": true, + "make-args": ["youtube-dl", "PYTHON=/usr/bin/python3"], + "post-install": ["install youtube-dl /app/bin"], + "sources": [{ + "type": "git", + "url": "https://github.com/rg3/youtube-dl.git", + "tag": "2020.05.29", + "commit": "228c1d685bb6d35b2c1a73e1adbc085c76da6b75" + }] + }, + { + "name": "celluloid", + "buildsystem": "meson", + "cleanup": ["/share/man"], + "sources": [ + { + "type": "git", + "url": "https://github.com/celluloid-player/celluloid.git" + } + ] + } + ] +} diff --git a/meson-post-install.py b/meson-post-install.py new file mode 100755 index 0000000..351f4d7 --- /dev/null +++ b/meson-post-install.py @@ -0,0 +1,19 @@ +#!/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')]) + diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..771d6ed --- /dev/null +++ b/meson.build @@ -0,0 +1,65 @@ +project('celluloid', 'c', + version: '0.21', + meson_version: '>= 0.49.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') +subdir('test') + +meson.add_install_script('meson-post-install.py') diff --git a/po/LINGUAS b/po/LINGUAS new file mode 100644 index 0000000..feefc4b --- /dev/null +++ b/po/LINGUAS @@ -0,0 +1,31 @@ +bg +ca +cs +da +de +eo +es +eu +fa +fi +fr +hr +hu +is +it +ja +nl +pl +pt_BR +pt_PT +ro +ru +sk +sl +sr +sr@latin +sv +tr +uk +zh_CN +zh_TW diff --git a/po/Makevars b/po/Makevars new file mode 100644 index 0000000..2480cc0 --- /dev/null +++ b/po/Makevars @@ -0,0 +1,24 @@ +subdir = 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 diff --git a/po/POTFILES.in b/po/POTFILES.in new file mode 100644 index 0000000..5d2deea --- /dev/null +++ b/po/POTFILES.in @@ -0,0 +1,30 @@ +data/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-option-parser.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 diff --git a/po/bg.po b/po/bg.po new file mode 100644 index 0000000..10d45aa --- /dev/null +++ b/po/bg.po @@ -0,0 +1,1166 @@ +# cybercop , 2019. #zanata +# gnome-mpv , 2019. #zanata +# cybercop , 2020. #zanata +# gnome-mpv , 2020. #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: 2020-10-09 12:48-0400\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 "Automatically resize window to fit video" +msgstr "Автоматично преоразмеряване на прозореца според видеото" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Включване на тъмната тема" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Включване на вградената Gnome 3 декорация" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Използване на плаващи контролери в прозоречен режим" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Автоматично скриване на курсора при режим на цял екран" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Минималната скорост на курсора, при която да се покажат плаващите " +"контролери." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Размерът на мъртвата зона в която преместването на курсора няма да доведе до" +" показването на контролерите." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Използване на бутони за прескачане за управление на списъка" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" +"Задаване на избора на файлове да запомни местоположението на последния файл" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Винаги да се отваря нов прозорец" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Внасяне на настройки от MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Път до конфигурационен файл на MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Зареждане на mpv конфигурационен файл" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Път до внесения конфигурационен файл на MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Зареждане на входен mpv конфигурационен файл" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Включване поддръжка на MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Включване поддръжка на мултимедийни клавиши" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Предварително изтегляне на метаданни" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Игнориране на грешки при възпроизвеждане" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Задържане на сесията на празен ход" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Ширина на прозореца" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Височина на прозореца" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Да бъде ли максимизиран прозореца" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Сила на звука на плеъра" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Да се превърти ли списъка, когато е достигнат края му" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Ширина на спъсъка за изпълнение" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Да се показват ли контролерите" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Показване и скриване на списъка за изпълнение" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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:30 +msgid "The Celluloid Developers" +msgstr "Разработчиците на Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Това издание съдържа следните промени:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Да бъде възможно активирането на контекстното меню, когато списъкът е " +"празен." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Предотвратяване на постоянното преоразмеряване на лентата за търсене поради " +"преоразмеряването на етикета с времева щампа при промяна на стойността му." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Да се показва само един диалогов прозорец за грешка при поява на голям брой " +"грешки за кратко време." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Добавяне на меню на елементите за отворените папки." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Настройване на позицията на елементите на потребителския интерфейс на " +"модалните диалогови прозорци в режим, който не е CSD, за да бъде по-" +"съгласуван с режима CSD." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Добавяне на поддръжка за зареждане на външни видеозаписи." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Възможност за превключване на разбъркването на списъка." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Клавишите за посоки да могат да работят обвързано с клавишите на цифровата " +"клавиатура." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Списъкът не е завършен. Вижте Git лога за пълния списък с промени." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Регулиране диапазона на бутона за усилване въз основа на зададените от вас " +"стойности за максимално ниво." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Запазване състоянието на максимизиран прозорец през сесиите." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Запазване на състоянието на превъртане през сесиите." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Внедряване на търсене в списъка." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Обновяване на списъка с бързи клавиши в диалога Бързи клавиши." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Коректна работа с цитати и избягване на последователности в допълнителни " +"опции за mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Показване на време в позицията на курсора, когато се намира в лентата за " +"търсене." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Изтегляне на '--mpv-опции'. Опциите, започващи с '--mpv-', могат да се " +"използват вместо задаване на mpv опции. Например, поставянето на на '--mpv-" +"vf=vflip' в Celluloid е еквивалентно на поставянето '--vf=vflip' в mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Добавена е поддръжка за конфигуриране на \"мъртва зона\" - зона, в която " +"движението на мишката няма да доведе до показване на контролите." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Задаване на оразмеряването на прозореца да работи правилно с HiDPI дисплеи." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Добавен е фински превод от Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Добавен е словенски превод от @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Добавен е превод на ирански от @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Добавен е превод на украински от @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Добавена е поддръжка за показване/скриване декорацията на прозореца с " +"използване на MPV опцията --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Добавен е елемент в менюто за отваряне на дискове" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Блокиране на автоматичното скриване на курсора, когато уведомлението за " +"силата на звука е отворено в прозоречен режим" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Фиксиране на срив в MPV 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Проектът е преименуван на Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Добавен е превод на турски от @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Добавен е превод на есперанто от @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Миграция от opengl-cb към нов API за рендиране" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Присвояване на клавиши за цифрова клавиатура" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Присвояване на клавиши за Unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Препращане на медийни ключови събития към mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Добавяне на dconf ключ за контролиране скоростта на курсора, когато " +"контролерите са видими." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Добавяне на опция за игнориране на грешки при възпроизвеждане" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Разделен е разделът Общи в диалога с настройките" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Подобряване на поведението при превключване на списъка за изпълнение при " +"тилинг мениджъри на прозорци " + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Преместени са елементите от менюто на програмите в основното меню" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Използвана е отделна MPRIS DBus връзка за всеки прозорец" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Добавена е поддръжка за свойствата на MPRIS LoopStatus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +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:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" +"Задаване на директорията за снимки на екрана по подразбиране в " +"XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +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:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Добавяне опцията за команден ред за настройка на WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"Добавена е опция в контекстното меню за премахване на елементи от списъка за" +" изпълнение" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Добавяне на елемент от контекстното меню за копиране на местоположението на " +"елементите от списъка за изпълнение" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Добавена е опция, бутона за пропускане да променя елементите от списъка, а " +"не не заглавията" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Файловия браузър има възможност да избира не-локални местоположение" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" +"Добавяне на елемент в менюто при десен бутон на мишката за превъртане на " +"единичен файл" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Обработване на събития за промяна на свойствата за цял екран и мащаб на " +"прозореца" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Добавена е опция за скриване на курсора на мишката в прозоречен режим" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Основният прозорец показва програмата в действие" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Главният прозорец с изключен CSD" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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:495 +msgid "Playing" +msgstr "Изпълнение" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Покажи текущата версия" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "На опашка" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Създаване на нов прозорец" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "ОПЦИИ" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Задаване роля на прозореца" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Не свързвайте към вече стартиран екземпляр" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Пауза" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Изпълнение" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Спиране" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Напред" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Назад" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Следващо заглавие" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Предишно заглавие" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Превъртане на списъка" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Разбъркване на списъка" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Включване/изключване режима на цял екран" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Грешка" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Всички файлове" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Мултимедийни файлове" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Аудио файлове" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Видео файлове" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Файлове с изображения" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "Не е намерен диск" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Файл" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Отваряне..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Отваряне на _папка..." + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Отваряне на _местоположение..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Отваряне на _диск..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Запазване на списък за изпълнение" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Нов прозорец" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Изход" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Редактиране" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Предпочитания" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Видео запис" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Аудио запис" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Файл със субтитри" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Преглед" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Включване/изключване на _контролерите" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Включване/изключване на _списъка за изпълнение" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Режим на цял екран" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Помощ" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Клавишни комбинации" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Относно Celluloid" + +#: src/celluloid-menu.c:321 +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:130 +msgid "Location:" +msgstr "Местоположение:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Отказ" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Отваряне" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Не могат да бъдат приложени една или повече опции за MPV." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Копиране на местоположението" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Премахване" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Добавяне…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Добавяне на _папка..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Добавяне на _местоположение…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Разбъркано" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Превъртане на _файл" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Превъртане на _списък" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Списък за изпълнение" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +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:341 +msgid "mpv configuration file:" +msgstr "mpv конфигурационен файл:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "входен mpv конфигурационен файл:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Допълнителни mpv опции:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Интерфейс" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Конфигурационни файлове" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Разни" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Разширения" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Запазване" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "Влизане в режим на търсене" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Прескачане до следващият резултат" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Прескачане до предишният резултат" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Изход от режима за търсене" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Превъртане през аудио записите" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Намаляване/увеличаване силата на звука" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Заглушаване и пускане на звука" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Задържане на аудиото с + / - 0,1 секунди" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Превключване видимостта на субтитрите" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Превъртане през наличните субтитри" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Задържане на субтитрите с + / - 0,1 секунди" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Превключване промяната стила на субтитрите SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Преместване на субтитрите нагоре/надолу" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Включване/изключване режим на VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Превъртане през видео записите" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Намаляване/увеличаване диапазона на обхващане и сканиране" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Направете снимка на екрана" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Направете снимка на екрана без субтитри" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Направете снимка на екрана с всичко в прозореца" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Оразмеряване на видеото в половината от оригиналния размер" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Оразмеряване на видеото в неговия оригинален размер" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Оразмеряване на видеото в двоен размер спрямо оригинала" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Настройка на контраста" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Настройка на яркостта" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Настройка на гамата" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Настройка на наситеността" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Активирайте или деактивирайте деинтерлактора" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Циклично презаписване на стойностите" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Потребителски интерфейс" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Видео" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Аудио" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Субтитри" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Възпроизвеждане" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Търсене" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Зареди аудио запис…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Зареждане на видео запис..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Зареди файл със субтитри…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Включването или изключването на вградената (Gnome 3) декорация изисква " +"рестартиране за да влязат промените в сила." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Добавяне на папка в списъка" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Отваряне на папка" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Добавяне на файл в списъка" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Отваряне на файл" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Добавяне местоположение до списък" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Отвори местоположение" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Запазване на списъка" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK интерфейс за MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Kiril Kirilov " diff --git a/po/ca.po b/po/ca.po new file mode 100644 index 0000000..a8da350 --- /dev/null +++ b/po/ca.po @@ -0,0 +1,1170 @@ +# Toni Estevez , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Toni Estevez , 2020. #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: 2020-12-25 05:54-0500\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 "Automatically resize window to fit video" +msgstr "Redimensionar automàticament la finestra a la mida del vídeo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Activa el tema fosc" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Activa les decoracions del client" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Utilitza controls flotants al mode finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Amaga automàticament el punter del ratolí en el mode finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +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:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"La mida de la zona morta en què el moviment del cursor no farà que es " +"mostrin els controls." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "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:66 +msgid "Make file chooser remember last file's location" +msgstr "Recorda la ubicació de l'últim fitxer" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Obre sempre una finestra nova" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opcions extra per a l'mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Fitxer de configuració de l'mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Carrega un fitxer de configuració de l'mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +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:102 +msgid "Load mpv input configuration file" +msgstr "Carrega un fitxer de configuració de l'entrada de l'mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Activa la compatibilitat amb la interfície MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Activa les tecles multimèdia" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Precarrega les metadades" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignora els errors de reproducció" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Desactiva la suspensió de la sessió" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Amplada de la finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Alçada de la finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Maximitza la finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volum del reproductor" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Reprodueix en bucle la llista de reproducció" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Amplada de la llista de reproducció" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Mostra els controls" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Mostra la llista de reproducció" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: 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 Celluloid segueix les " +"guies d'interfície d'usuari del GNOME, però també pot adaptar-se a altres " +"entorns que no fan servir les 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 D-Bus de MPRIS2" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Els desenvolupadors del Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Aquesta versió conté els canvis següents:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Permet activar el menú de context quan la llista de reproducció és buida." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Evita el canvi constant de la mida de la barra de cerca a causa del canvi de" +" mida de l'etiqueta de la marca de temps a mesura que canvia el seu valor." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Només mostra un diàleg d'error únic quan es produeix un gran nombre d'errors" +" en una successió ràpida." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Afegeix un element al menú per obrir carpetes." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Ajusta la posició dels elements de la interfície d'usuari dels diàlegs " +"modals en el mode no CSD per ser més coherent amb mode CSD." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Afegeix la possibilitat de carregar pistes de vídeo externes." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Permet alternar la barreja de les llistes de reproducció." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Fa que les combinacions de tecles funcionin amb les tecles de fletxa del " +"teclat numèric." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +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:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Ajusta el rang del botó de volum basant-se en el valor de la propietat " +"«volum màxim»." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Recorda l'estat de maximització de la finestra." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Recorda l'estat de la reproducció en bucle." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementa la cerca a la llista de reproducció" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" +"Actualitza la llista de dreceres en el diàleg de les dreceres de teclat." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Gestiona correctament les cometes i les seqüències d'escapada en les opcions" +" extra de MPV." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Mostra el temps en la posició del punter en situar-lo en la barra de cerca." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Desaprova «--mpv-options». En el seu lloc, per configurar opcions de mpv, es" +" poden fer servir opcions que comencin per «--mpv-». Per exemple, passar " +"«--mpv-vf=vflip» al Celluloid equival a passar «--vf=vflip» a mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Afegeix suport per configurar una zona morta, una àrea en la qual el " +"moviment del ratolí no farà que es mostrin controls." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Ajusta la mida de la finestra correctament en pantalles d'alta densitat " +"(HiDPI)." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Afegeix la traducció al finlandès feta per Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Afegeix la traducció a l'eslovè feta per @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Afegeix la traducció al persa feta per danialbehzad" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Afegeix la traducció a l'ucraïnès feta per vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Afegeix compatibilitat per mostrar/amagar les decoracions de la finestra " +"utilitzant l'opció --border de l'mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Afegeix un element al menú per obrir discs" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Bloqueja l'ocultació automàtica del cursor quan s'obre la finestra emergent " +"del volum en el mode finestra" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Corregeix el bloqueig amb la versió 0.30 de l'mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Canvia el nom del projecte a Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Afegeix la traducció al turc feta per TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +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:169 +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:172 +msgid "Handle numpad keybindings" +msgstr "Controla les combinacions de tecles de teclat numèric" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Controla les assignacions de tecles de l'Unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +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:181 +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:184 +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:199 +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:202 +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:205 +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:208 +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:211 +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:214 +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:230 +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:233 +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:237 +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:240 +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:243 +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:258 +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:262 +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:265 +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:268 +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:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Afegeix una opció per amagar automàticament el punter del ratolí al mode " +"finestra" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +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:289 +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:293 +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: 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:495 +msgid "Playing" +msgstr "En reproducció" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Mostra la versió" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "A la cua" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Crea una finestra nova" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPCIONS" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Estableix el comportament de la finestra" + +#: src/celluloid-application.c:591 +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:362 +msgid "Pause" +msgstr "Posa en pausa" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Reprodueix" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Atura" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Avança" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Rebobina" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Capítol següent" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Capítol anterior" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Llista de reproducció en bucle" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Mescla la llista de reproducció" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Activa/desactiva la pantalla completa" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Error" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Tots els fitxers" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Fitxers multimèdia" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Fitxers d'àudio" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Fitxers de vídeo" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Fitxers d'imatge" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "No s'ha trobat cap disc" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Fitxer" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Obre..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Obre una _carpeta..." + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Obre una _ubicació..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Obre un _disc" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Desa la llista de reproducció..." + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "Finestra _nova" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Surt" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Edita" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Preferències" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Pista de _vídeo" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "Pista d'à_udio" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Pista de _subtítols" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Vista" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Mostra/amaga els _controls" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Mostra/amaga la _llista de reproducció" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Pantalla completa" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Ajuda" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "Dreceres de _teclat" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Quant a" + +#: src/celluloid-menu.c:321 +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:130 +msgid "Location:" +msgstr "Ubicació:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Cancel·la" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Obre" + +#: src/celluloid-player.c:550 +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:786 +msgid "_Copy Location" +msgstr "_Copia la ubicació" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Suprimeix" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Afegeix…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Afegeix una _carpeta..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Afegeix una _ubicació..." + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Mescla" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "_Fitxer en bucle" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "_Llista de reproducció en bucle" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Llista de reproducció" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "La llista de reproducció és buida" + +#: 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:341 +msgid "mpv configuration file:" +msgstr "Fitxer de configuració de l'mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Fitxer de configuració de l'entrada de l'mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Opcions addicionals de l'mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interfície" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Fitxers de configuració" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Miscel·lània" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Connectors" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Desa" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "Entra al mode de cerca" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Ves a la coincidència següent" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Ves a la coincidència anterior" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Surt del mode de cerca" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Selecciona la pista d'àudio següent" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Disminueix/augmenta el volum" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Silencia/activa el so" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Ajusta el retard de l'àudio en +/- 0.1 segons" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Mostra/amaga els subtítols" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Selecciona els subtítols següents" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Ajusta el retard dels subtítols en +/- 0.1 segons" + +#: src/celluloid-shortcuts-window.c:109 +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:110 +msgid "Move subtitles up/down" +msgstr "Mou els subtítols amunt/avall" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Activa/desactiva el mode de compatibilitat d'aspecte del VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Selecciona la pista de vídeo següent" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Disminueix/augmenta el rang de reenquadrament (pan and scan)" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Fes una captura de pantalla" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Fes una captura de pantalla, sense subtítols" + +#: src/celluloid-shortcuts-window.c:118 +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:119 +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:120 +msgid "Resize video to its original size" +msgstr "Redimensiona el vídeo a la mida original" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Redimensiona el vídeo al doble de la mida original" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Ajusta el contrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Ajusta la brillantor" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Ajusta la correcció gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Ajusta la saturació" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Activa/desactiva el desentrellaçat" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Selecciona la relació d'aspecte següent" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Interfície d'usuari" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Vídeo" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Àudio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Subtítols" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Reproducció" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Cerca" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Carrega una pista d'àudio..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Carrega una pista de vídeo..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Carrega una pista de subtítols..." + +#: src/celluloid-view.c:901 +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:1444 +msgid "Add Folder to Playlist" +msgstr "Afegeix una carpeta a la llista de reproducció" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Obre una carpeta" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Afegeix un fitxer a la llista de reproducció" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Obre un fitxer" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Afegeix una ubicació a la llista de reproducció" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Obre una ubicació" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Desa la llista de reproducció" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Una interfície GTK per al reproductor mpv" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Toni Estevez, toni.estevez@gmail.com\n" +"Adolfo Jayme Barrientos, fitojb@ubuntu.com" diff --git a/po/cs.po b/po/cs.po new file mode 100644 index 0000000..8f773d8 --- /dev/null +++ b/po/cs.po @@ -0,0 +1,1151 @@ +# 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 +# Pavel Zahradník , 2020. #zanata +# Pavel Zahradník , 2021. #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: 2021-01-29 06:44-0500\n" +"Last-Translator: Pavel Zahradník \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 "Automatically resize window to fit video" +msgstr "Automaticky přizpůsobit velikost okna podle videa" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Povolit tmavý motiv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Povolit dekorace na straně klienta" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Použít v okenním režimu plovoucí ovládání" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Automaticky skrýt kurzor myši v okenním režimu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Minimální rychlost kurzoru, při které budou zobrazeny plovoucí ovládací " +"prvky." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Velikost mrtvé zóny, ve které pohyb kurzoru nezpůsobí zobrazení ovládacích " +"prvků." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Použít tlačítka pro přeskakování pro ovládání seznamu přehrávání" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Pamatovat si poslední umístění v dialogu pro výběr souborů " + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Vždy otevřít nové okno" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Přepínače pro mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Cesta ke konfiguračnímu souboru mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Načíst konfigurační soubor mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Cesta ke konfiguračnímu souboru vstupu mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Načíst vstupní konfigurační soubor mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Zapnout podporu MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Zapnout podporu multimediálních kláves" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Dopředu načíst metadata" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorovat chyby přehrávání" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Zakázat přerušení relace" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Šířka okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Výška okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Zda je okno maximalizováno" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Hlasitost přehrávání" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Zda po dosažení konce seznamu přehrávání pokračovat od začátku" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Šířka seznamu přehrávání" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Zobrazit nebo nezobrazit ovládací tlačítka" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Zobrazit nebo nezobrazit seznam přehrávání" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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 "" +"Celluloid je jednoduchý přehrávač médií, který dokáže přehrávat prakticky " +"všechny formáty videa a zvuku. Podporuje seznamy přehrávání a ovládací prvky" +" MPRIS2. Design aplikace Celluloid odpovídá GNOME Human Interface " +"Guidelines, ale lze jej také přizpůsobit pro jiné systémy, které nepoužívají" +" dekorace na straně klienta (CSD). Je založen na knihovně mpv a GTK." + +#: 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:30 +msgid "The Celluloid Developers" +msgstr "Vývojáři aplikace Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +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:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Kontextovou nabídku je možné vyvolat i při prázdném seznamu přehrávání." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Oprava neustálých změn velikosti přehrávacího pruhu kvůli změnám velikosti " +"ukazatele času. " + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Při velkém počtu chyb, které nastanou v rychlém sledu, bude zobrazen pouze " +"jeden chybový dialog." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Do nabídky přidána položka pro otevírání složek." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Upraveno umístění prvků uživatelského rozhraní v modálních dialozích, aby " +"bylo konzistentní s CSD módem." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Přidána podpora pro nahrávání externích stop videa." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Míchání skladeb v seznamu přehrávání je možné přepínat." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "Klávesové zkratky fungují s šipkami na numerické klávesnici." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Tento seznam je neúplný. Úplný přehled změn najdete v git logu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "Rozsah klávesy hlasitosti přizpůsobit na základě hodnoty volume-max." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Zachovat stav maximalizace okna napříč relacemi." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Zachovat stav smyčky napříč relacemi." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementovat vyhledávání v seznamu přehrávání." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Aktualizovat seznam klávesových zkratek." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Zacházet správně s uvozovkami a escape sekvencemi v rozšířených možnostech " +"mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "Zobrazit čas na pozici kurzoru při najetí na přehrávací pruh." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "xtra" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Přidat podporu pro nastavení mrtvé zóny, tj. oblasti, ve které pohyb myši " +"nezpůsobí zobrazení ovládacích prvků." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Zajistit, aby nastavení velikosti okna fungovalo správně na displejích s " +"vysokým rozlišením." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Přidán překlad do finštiny od Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Přidán překlad do slovinštiny od @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Přidán překlad do perštiny od @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Přidán překlad do ukrajinštiny od @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Přidána podpora pro zobrazení/skrytí dekorací okna pomocí mpv předvolby " +"--border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Přidána položka nabídky pro otevírání disků" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Zablokovat automatické skrytí kurzoru, když je v režimu okna otevřeno " +"ovládání hlasitosti" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Opravit pád s mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Přejmenovat projekt na Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Přidán překlad do turečtiny od @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Přidán překlad do esperanta od @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Přejít z opengl-cb na nové vykreslovací rozhraní" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Ovládat klávesové zkratky na numerické klávesnici" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Ovládat klávesové zkratky unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Předávat události mediálních kláves mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Přidán dconf klíč pro nastavení rychlosti kurzoru, při které se zobrazí " +"ovládací prvky" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Přidána možnost pro potlačení chyb přehrávání" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +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:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Vylepšit chování při přepínání seznamu přehrávání pod dlaždicovými správci " +"oken" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +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:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Použít pro každé okno oddělené spojení MPRIS DBus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Přidána podpora pro MPRIS vlastnost LoopStatus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Přidána předvolba --mpv-options pro nastavení libovolných možností mpv z " +"příkazové řádky" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Nastavit výchozí adresář pro snímky obrazovky na XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Vylepšit zacházení s předvolbami --window-scale, --autofit, --autofit-larger" +" a --autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Přidána předvolba příkazové řádky pro nastavení WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"Přidána položka kontextové nabídky pro odstranění položek seznamu přehrávání" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Přidána položka kontextové nabídky pro zkopírování umístění položek seznamu " +"přehrávání" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Přidána možnost, aby tlačítka pro přeskočení měnila položky seznamu " +"přehrávání místo kapitol" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Akceptovat vzdálená umístění při výběru souborů" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Přidána položka kontextové nabídky pro přehrávání souboru ve smyčce" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Ovládat události změn vlastností pro režim celé obrazovky a pro měřítko okna" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Přidána možnost pro automatické skrývání kurzoru myši v režimu okna" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +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:289 +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:293 +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 "Multimediální přehrávač" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Přehrávat filmy a videa" + +#. 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:495 +msgid "Playing" +msgstr "Hraje" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Zobrazit verzi vydání" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Zařadit do fronty" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Vytvořit nové okno" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "MOŽNOSTI" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Nastavit roli okna" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Nepřipojovat k již běžící instanci" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pozastavit" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Přehrát" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Zastavit" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Vpřed" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Zpět" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Další kapitola" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Předchozí kapitola" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Opakovat seznam přehrávání ve smyčce" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Zamíchat seznam přehrávání" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Zobrazení na celou obrazovku" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Chyba" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Všechny soubory" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Soubory médií" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Soubory zvuku" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Soubory videa" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Soubory obrázků" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "Nebyl nalezen žádný disk" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Soubor" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Otevřít..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Otevřít _složku..." + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Otevřít _umístění..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Otevřít _disk..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Uložit seznam přehrávání" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nové okno" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "U_končit" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "Up_ravit" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Předvolby" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Stopa _videa" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "Stopa _zvuku" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Titulky" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "Zo_brazit" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Přepnout _ovládání" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Přepnout seznam přehrávání" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Celá obrazovka" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Nápověda" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Klávesové zkratky" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_O Celluloidu" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Otevřít _disk" + +#: 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:130 +msgid "Location:" +msgstr "Umístění:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Zrušit" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Otevřít" + +#: src/celluloid-player.c:550 +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:786 +msgid "_Copy Location" +msgstr "_Kopírovat umístění" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Odstranit" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Přidat…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Přidat _složku..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Přidat _umístění…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Náhodně" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Opakovat _soubor" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Opakovat seznam přehrávání ve _smyčce" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Seznam přehrávání" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Seznam přehrávání je prázdný" + +#: 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:341 +msgid "mpv configuration file:" +msgstr "Konfigurační soubor mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Vstupní konfigurační soubor mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Rozšířené možnosti mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Rozhraní" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Konfigurační soubory" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Různé" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Pluginy" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Uložit" + +#: src/celluloid-preferences-dialog.c:432 +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 soubor 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 "Enter search mode" +msgstr "Přejít do režimu vyhledávání" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Přeskočit na další shodu" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Přeskočit na předchozí shodu" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Ukončit režim vyhledávání" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Procházet zvukové stopy" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Snížit/zvýšit hlasitost" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Ztlumit nebo obnovit hlasitost" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Posunout zvukovou stupu o +/- 0,1 sekundy" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Přepnout viditelnost titulků" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Procházet načtené titulky" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Posunout stupu titulků o +/- 0,1 sekundy" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Přepnout styl titulků SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Posunout titulky nahoru/dolů" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Přepnout mód kompatibility poměru stran VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Procházet stopy videa" + +#: src/celluloid-shortcuts-window.c:115 +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:116 +msgid "Take a screenshot" +msgstr "Pořídit snímek obrazovky" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Pořídit snímek obrazovky bez titulků" + +#: src/celluloid-shortcuts-window.c:118 +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:119 +msgid "Resize video to half its original size" +msgstr "Zmenšit na poloviční velikost videa" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Obnovit původní velikost videa" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Zvětšit na dvojnásobnou velikost videa" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Upravit konstrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Upravit jas" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Upravit svítivost (gamma)" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Upravit sytost" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Zapnout nebo vypnout odstranění prokládání" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Procházet přepsání poměru stran" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Uživatelské rozhraní" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Zvuk" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Titulky" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Přehrávání" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Posouvání" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Načíst zvukovou stopu…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Nahrát stopu videa..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Načíst stopu titulků…" + +#: src/celluloid-view.c:901 +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:1444 +msgid "Add Folder to Playlist" +msgstr "Přidat _složku do seznamu přehrávání" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Otevřít složku" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Přidat s_oubor do seznamu přehrávání" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Otevřít soubor" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Přidat u_místění do seznamu přehrávání" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Otevřít umístění" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "_Uložit seznam přehrávání" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK frontend pro MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Tomáš Marný" diff --git a/po/da.po b/po/da.po new file mode 100644 index 0000000..d7268af --- /dev/null +++ b/po/da.po @@ -0,0 +1,1150 @@ +# Danish translation for Celluloid +# scootergrisen, 2017. +# Erased User , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Erased User , 2020. #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: 2020-10-24 12:56-0400\n" +"Last-Translator: Erased User \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 "Automatically resize window to fit video" +msgstr "Tilpas automatisk vinduet til videoen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Aktivér mørkt tema" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Aktivér klientsidedekorationer" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Vis flydende styring i vinduestilstand" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Skjul automatisk musemarkøren i vinduestilstand" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "Den laveste markørhastighed hvor flydende styring ikke skjules." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "Størrelsen på den døde zone hvor markørbevægelser viser styringen." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Brug spring over-knapper til at styre afspilningsliste" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Få tilvælgeren til at huske placeringen af den sidste fil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Åbn altid et nyt vindue" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Tilvalg som skal videregives til mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Stil til mpv-konfigurationsfil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Indlæs mpv-konfigurationsfil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Sti til mpv-input-konfigurationsfil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Indlæs mpv-input-konfigurationsfil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Aktivér understøttelse af MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Aktivér understøttelse af medietaster" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Hent metadata på forhånd" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorer fejl ved afspilning" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Forhindr sessionsinaktivitet" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Vinduets bredde" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Vinduets højde" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Om vinduet er maksimeret eller ej" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Afspillerens lydstyrke" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Om afspilningslisten skal fortsætte i løkke når slutningen er nået" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Afspilningslistens bredde" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Vis eller skjul styringen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Vis eller skjul afspilningsliste" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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-medieafspillerstyring. 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:30 +msgid "The Celluloid Developers" +msgstr "Celluloids udviklere" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Udgivelsen indeholder følgende ændringer:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Gør det muligt at aktivere genvejsmenuen når afspilningslisten er tom." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Forhindr at størrelsen på søgelinjen konstant tilpasses pga. at størrelsen " +"på tidsstempeletiketten tilpasses efterhånden som dens værdi ændres." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Vis kun én fejldialog når der opstår et stort antal fejl hurtigt efter " +"hinanden." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Tilføj menupunkt til at åbne mapper." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Juster placeringen af brugerfladeelementer i modale dialoger i ikke-CSD-" +"tilstand for at være mere konsistent med CSD-tilstand." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Tilføj understøttelse af indlæsning af eksterne videospor." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Gør så bland afspilningsliste kan slås til/fra." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Gør så piletastbindinger virker med piletaster på det numeriske tastatur." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +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:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Juster lydstyrkeknappens område baseret på værdien af egenskaben volume-max." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Bibehold vinduets maksimeret tilstand på tværs af sessioner." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Bibehold løkketilstand på tværs af sessioner." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementer søgning i afspilningsliste." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Opdater listen over genveje i dialogen Tastaturgenveje." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Korrekt håndtering af citationstegn og undvigesekvenser i ekstra mpv-" +"tilvalg." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Vis tidspunktet ved markørens placering når der holdes over søgelinjen." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Gør '--mpv-tilvalg' udgået. Tilvalg som begynder med '--mpv-' kan i stedet " +"bruges til at indstille mpv-tilvalg. Hvis man f.eks. angiver '--mpv-" +"vf=vflip' til Celluloid, så svarer det til at angive '--vf=vflip' til mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Tilføj understøttelse af konfiguration af død zone, et område hvor " +"musebevægelser ikke får styringen til at blive vist." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Få vinduesstørrelser til at virke korrekt med HiDPI-skærme." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Tilføj finsk oversættelse af Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Tilføj slovensk oversættelse af @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Tilføj persisk oversættelse af @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Tilføj ukrainsk oversættelse af @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Tilføj understøttelse til at vise/skjule vinduesdekorationer med mpv " +"tilvalget --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Tilføj menupunkt til at åbne diske" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Bloker automatisk skjulning af markør når lysstyrke-pop op er åben i " +"vinduestilstand" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Ret nedbryd med mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Omdøb projektet til Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Tilføj tyrkisk oversættelse af @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Tilføj esperanto oversættelse af @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +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:172 +msgid "Handle numpad keybindings" +msgstr "Håndter tastebindinger for det numeriske tastatur" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Håndter tastebindinger for unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Viderestil medietast-hændelser til mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +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 styring skjules" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Tilføj tilvalg til undertrykkelse af afspilningsfejl" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +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:202 +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:205 +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:208 +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:211 +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:214 +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:230 +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:233 +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:237 +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:240 +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:243 +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:258 +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:262 +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:265 +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:268 +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:271 +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:285 +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:289 +msgid "The main window with CSD disabled" +msgstr "Hovedvinduet med deaktiveret skærmdisplay" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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:495 +msgid "Playing" +msgstr "Afspiller" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Vis udgivelsesversion" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Sæt i kø" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Opret et nyt vindue" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "TILVALG" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Sæt vinduesrollen" + +#: src/celluloid-application.c:591 +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:362 +msgid "Pause" +msgstr "Pause" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Afspil" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Stop" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Fremad" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Baglæns" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Næste kapitel" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Forrige kapitel" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Afspil afspilningsliste i løkke" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Bland afspilningsliste" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Fuldskærm til/fra" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Fejl" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Alle filer" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Mediefiler" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Lydfiler" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Videofiler" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Billedfiler" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "Ingen disk fundet" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Fil" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Åbn …" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Åbn _mappe …" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Åbn _placering …" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Åbn _disk …" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Gem afspilningsliste" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nyt vindue" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Afslut" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Rediger" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Præferencer" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Videospor" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Lydspor" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Undertekstspor" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Vis" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Styring til/fra" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Afspilningsliste til/fra" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Fuldskærm" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Hjælp" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Tastaturgenveje" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Om Celluloid" + +#: src/celluloid-menu.c:321 +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:130 +msgid "Location:" +msgstr "Placering:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Annuller" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Åbn" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Kunne ikke anvende et eller flere MPV-tilvalg." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopíer placering" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Fjern" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Tilføj …" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Tilføj _mappe …" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Tilføj _placering …" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Bland" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Løkke_fil" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Afspil afspilningsliste i _løkke" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Afspilningsliste" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Afspilningslisten er tom" + +#: 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:341 +msgid "mpv configuration file:" +msgstr "mpv-konfigurationsfil:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "mpv-input-konfigurationsfil:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Ekstra mpv-tilvalg:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Grænseflade" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Konfigurationsfiler" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Diverse" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Plugins" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Gem" + +#: src/celluloid-preferences-dialog.c:432 +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 "Styring 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 "Enter search mode" +msgstr "Gå i søgetilstand" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Hop til næste resultat" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Hop til forrige resultat" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Afslut søgetilstand" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Løb gennem lydspor" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Højere/lavere lydstyrke" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Mute eller slå lyden til" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Juster lydens forsinkelse med +/- 0,1 sekunder" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Undertekst synlighed til/fra" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Løb gennem tilgængelige undertekster" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Juster underteksternes forsinkelse med +/- 0,1 sekunder" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Tilsidesæt stilen af SSA/ASS-undertekster til/fra" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Flyt undertekster op/ned" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Kompatibilitetstilstand af højde-bredde-forhold for VSFilter til/fra" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Løb gennem videospor" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Lavere/højere område for pan-og-skan" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Tag et skærmbillede" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Tag et skærmbillede, uden undertekster" + +#: src/celluloid-shortcuts-window.c:118 +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:119 +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:120 +msgid "Resize video to its original size" +msgstr "Tilpas videoens størrelse til dens oprindelige størrelse" + +#: src/celluloid-shortcuts-window.c:121 +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:122 +msgid "Adjust contrast" +msgstr "Juster kontrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Juster lysstyrke" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Juster gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Juster farvemætning" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Aktivér eller deaktivér afsammenfletter" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Løb gennem tilsidesættelse af højde-bredde-forhold" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Brugerflade" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Lyd" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Undertekst" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Afspilning" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Søgning" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Indlæs lydspor …" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Indlæs videospor …" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Indlæs undertekstspor …" + +#: src/celluloid-view.c:901 +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:1444 +msgid "Add Folder to Playlist" +msgstr "Tilføj mappe til afspilningsliste" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Åbn mappe" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Tilføj fil til afspilningsliste" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Åbn fil" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Tilføj placering til afspilningsliste" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Åbn placering" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Gem afspilningsliste" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "En GTK-frontend til MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "scootergrisen" diff --git a/po/de.po b/po/de.po new file mode 100644 index 0000000..a382bf5 --- /dev/null +++ b/po/de.po @@ -0,0 +1,1158 @@ +# 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 +# Vincent Bermel , 2020. #zanata +# Vincent Bermel , 2021. #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: 2021-01-04 05:34-0500\n" +"Last-Translator: Vincent Bermel \n" +"Language-Team: German Translations\n" +"Language: 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 "Automatically resize window to fit video" +msgstr "Fenstergröße automatisch an Video anpassen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Dunkles Thema verwenden" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Kombinierte Titel-/Menüleiste (CSD)" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Ausblendende Bedienelemente in Fenstermodus" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Mauszeiger im Fenstermodus automatisch ausblenden" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +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:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Größe der Zone innerhalb derer Mauszeigerbewegung nicht die Bedienelemente " +"aufruft" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" +"Klick auf Doppelpfeil: Wechsel zum nächsten Element der Wiedergabeliste" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Dateiwähler soll das zuletzt gewählte Verzeichnis beibehalten" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Immer neues Fenster öffnen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "MPV-Einstellungen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "MPV-Konfigurationsdatei" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "mpv-Konfigurationsdatei laden" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Datei mit MPV-Tastenbelegungen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "mpv-Input-Konfigurationsdatei lden" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "MPRIS-Unterstützung aktivieren" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Medientasten unterstützen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Metadaten im Voraus sammeln" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Wiedergabefehler ignorieren" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Bildschirmverdunklung/Standby/Ruhemodus unterdrücken" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Fensterbreite" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Fensterhöhe" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Ob das Fenster maximiert ist" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Lautstärke" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Ob am Ende einer Widergabeliste von vorn begonnen werden soll" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Breite der Wiedergabeliste" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Wiedergabesteuerung anzeigen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Wiedergabeliste anzeigen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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 "" +"Celluloid ist ein einfach zu bedienender Medienspieler, der so gut wie alle " +"Video- und Audioformate abspielen kann. Es werden Wiedergabelisten und " +"Fernsteuerung über die MPRIS2-Schnittstelle unterstützt. Celluloid ist gemäß" +" der \"GNOME Human Interface Guidelines\", der Designrichtlinien des GNOME-" +"Projekts gestaltet, kann aber für Systeme angepasst werden, welche keine " +"clientseitigen Fensterdekorationen (CDSs) unterstützen. Die technische Basis" +" stellen mpv und GTK." + +#: 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:30 +msgid "The Celluloid Developers" +msgstr "Die Celluloid-Entwickler" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Diese Veröffentlichungen umfasst die folgenden Änderungen:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "Anzeige des Kontextmenüs bei leerer Wiedergabeliste ermöglichen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Größe der Wiedergabe-Fortschrittsleiste wird unabhängig verschieden lang " +"angezeigter Zahlenwerte konstant gehalten." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Im Falle mehrerer schnell aufeinander folgender Fehler wird nur eine Meldung" +" angezeigt." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Menüeintrag zum Öffnen von Ordnern hinzufügen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Für den Nicht-CSD-Modus wurde die Anordnung der Elemente in modalen " +"Dialogfenstern an die des CSD-Modus angepasst." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Unerstützung für das Laden externer Videospuren." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Zufällige Wiedergabe schnellschaltbar." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "Tastenkombinationen funktionieren auch mit Tasten des Nummernfeldes." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +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:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Die Spanne des Lautstärkereglers kann über den Wert volume-max beeinflusst " +"werden." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Fenstermaximierungsstatus wird über Sitzungen hinweg beibehalten." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Wiederholungspräferenzen wird über Sitzungen hinweg beibehalten." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Suche in Wiedergabelisten implementiert." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Liste der Tastenkombinationen aktualisiert." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Korrektes Interpretieren von Escape-Sequenzen und Anführungszeichen in " +"Extra-MPV-Optionen." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "Anzeige der Zeit, wenn der Mauszeiger über die Suchbar geführt wird." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Die Option der Kommandozeilenschnittstelle '--mpv-options' ist als veraltet " +"markiert. Optionen beginnend mit 'mpv-' können stattdessen verwendet werden," +" um mpv-Optionen zu verwenden. So entspricht die Celluloid-Option '--mpv-" +"vf=vflip' der mpv-Option '--vf=vflip'." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Es kann eine tote Zone angegeben werden, innerhalb derer Mauszeigerbewegung " +"nicht zur Anzeige der Kontrollflächen führt." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Korrigierte Fenstergröße für HiDPI-Bildschirme." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Finnische Übersetzung beigesteuert von Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Slowenische Übersetzung beigesteuert von @bertonika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Persische Übersetzung von @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Ukrainische Übersetzung von@vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Möglichkeit Fensterdekorationen über die mpv-Option --border ein- und " +"auszublenden" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Menüeintrag zum Öffnen von Datenträgern" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Ausblenden des Mauszeigers bei offenem Lautstärke-Popup im Fenstermodus " +"blockieren" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Absturz mit mpv 0.30 behoben" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Projekt umbenannt in Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Türkische Übersetzung von @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Esperanto-Übersetzung von @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migration von opengl-cb zur neuen Render-API" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" +"Unterstützung von Tastenkombinationen unter Einbeziehung des Ziffernblocks" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Unterstützung von UnicodeTastenkombinationen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Medientasten-Eingaben an mpv übergeben" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"dconf key für Regelung der minimalen Mauszeigergeschwindigkeit unterhalb " +"derer die Kontrollflächen ausgeblendet werden." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Option zum Unterdrücken von Wiedergabefehlern" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +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:202 +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:205 +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:208 +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:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Unterstützung für MPRIS property LoopStatus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +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:230 +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:233 +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:237 +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:240 +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:243 +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:258 +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:262 +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:265 +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:268 +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:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Mauszeiger im Fenstermodus automatisch ausblenden" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Das Hauptfenser von Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Das Hauptfenster ohne CSD-Titelleiste" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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 "Multimediaspieler" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Filme und Videos abspielen" + +#. 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:495 +#, fuzzy +msgid "Playing" +msgstr "Wiedergabe" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Release-Version anzeigen" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "In Warteschlange aufnehmen" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Neues Fenster aufrufen" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPTIONS" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Fensterart festlegen" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Nicht mit einer bereits laufenden Instanz verbinden" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pause" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Abspielen" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Stoppen" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Vorspulen" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Zurückspulen" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Weiterspringen" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Zurückspringen" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Wiedergabeliste in Schleife spielen" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Zufällige Wiedergabe" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Vollbild" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Fehler" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Alle Dateien" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Mediendateien" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Audiodateien" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Videodateien" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Bilddateien" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "Kein Datenträger gefunden" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Datei" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Öffnen" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "_Ordner öffnen" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "_Ort öffnen" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "_Datenträger öffnen" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "Wiedergabeliste _speichern" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Neues Fenster" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "B_eenden" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Bearbeiten" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Einstellungen" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Videospur" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Tonspur" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Untertitel" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Ansicht" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Wiedergabe_steuerung ein/aus" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Wiedergabeliste ein/aus" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Vollbild" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Hilfe" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Tastenkürzel" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Über Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "_Datenträger ö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:130 +msgid "Location:" +msgstr "Adresse (lokal oder Web):" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Abbrechen" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "Ö_ffnen" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "MPV-Optionen konnten nicht angewendet werden." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "Ort _kopieren" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Entfernen" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Hinzufügen" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Ordner _hinzufügen" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "_Verzeichnis oder URL hinzufügen" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Zufällige Wiedergabe" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "_Datei in Schleife spielen" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "_Wiedergabeliste in Schleife spielen" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Wiedergabeliste" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Wiedergabeliste ist leer." + +#: 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:341 +msgid "mpv configuration file:" +msgstr "mpv-Konfigurationsdatei" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "mpv-Input-Konfigurationsdatei" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Eingabe zusätzlicher mpv-Optionen:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Schnittstelle" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Konfigurationsdateien" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Sonstiges" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Plugins" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Speichern" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "Suchmodus starten" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Zur nächsten Übereinstimmung" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Zur vorigen Übereinstimmung" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Suchmodus beenden" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Zwischen verfügbaren Tonspuren springen" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Lautstärke verringern/erhöhen" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Stummschalten" + +#: src/celluloid-shortcuts-window.c:103 +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:106 +msgid "Toggle subtitle visibility" +msgstr "Untertitel anzeigen/ausblenden" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Zwischen verfügbaren Untertiteln springen" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Untertitel in Schritten von 0.1 Sekunden verschieben" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "ASS-Untertitelstil erzwingen" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Untertitel höher/tiefer anzeigen" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Streckungskorrektor für Untertiteldarstellung ein/aus" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Zwischen verfügbaren Videospuren springen" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Videoformat schrittweise einpassen (Pan & Scan)" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Bildschirmfoto aufnehmen" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Bildschirmfoto ohne Untertitel aufnehmen" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Foto des Fensterinhalts aufnehmen" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Halbe Videogröße" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Ursprüngliche Videogröße" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Doppelte Videogröße" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Kontrast anpassen" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Helligkeit anpassen" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Gammawert anpassen" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Farbsättigung anpassen" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Deinterlacing (de)aktivieren" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Seitenverhältnis umschalten" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Benutzeroberfläche" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Videowiedergabe" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Audiowiedergabe" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Untertitel" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Wiedergabesteuerung" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Wiedergabeposition" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Audiospur laden..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Videospur wird geladen..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Untertitel laden..." + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "Die Änderung der Fensterdekoration erfordert einen Neustart." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Ordner zur Widergabeliste hinzufügen" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Ordner öffnen" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Datei zur _Wiedergabeliste hinzufügen" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Datei öffnen" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Verzeichnis oder URL zur Wiedergabeliste hinzufügen" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Adresse öffnen" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Wiedergabeliste speichern" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Eine GTK-Oberfläche für MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Vincent Bermel" diff --git a/po/eo.po b/po/eo.po new file mode 100644 index 0000000..8cbf8ce --- /dev/null +++ b/po/eo.po @@ -0,0 +1,1120 @@ +# Tirifto , 2019. #zanata +# gnome-mpv , 2020. #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: 2020-06-23 10:42-0400\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 eldono" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Aŭtomate aligrandigi fenestron por esti samgranda kiel video" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Ŝalti malhelan etoson" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Ŝalti klient-flankajn ornamaĵojn" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Uzi surfilmajn regilojn en fenestra reĝimo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +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:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Uzi preterpasajn butonojn por regi legliston" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Ĉiam malfermi novan fenestron" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opcioj transdonotaj al mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Dosierindiko de la agorda dosiero de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Dosierindiko de la eniga agorda dosiero de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Ŝalti subtenon de MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Ŝalti subtenon de aŭdovidaj klavoj" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Antaŭpeti metadatumojn" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Malatenti erarojn de legado" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Larĝo de la fenestro" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Alto de la fenestro" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Ĉu la fenestro estas maksimumigita" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Laŭteco de la legilo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Ĉu aŭ ne ripeti kiam la fino de la leglisto estas atingota" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Larĝo de la leglisto" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Montri aŭ ne montri la regilojn" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Montri aŭ ne montri la legliston" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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 "" +"Celuloido estas simpla plurmedia legilo, kiu povas legi preskaŭ ĉiuj videaj " +"kaj sonaj formatoj. Ĝi regas leglistojn kaj plurmedilegilajn regilojn laŭ " +"MPRIS2. La fasono de Celuloido laŭas la hominterfacajn gvidliniojn de GNOME," +" sed ankaŭ povasadaptiĝi por aliaj sistemoj, kiuj ne uzas klientflankajn " +"ornamaĵojn (KFO). Ĝi baziĝas sur la bibliotekoj mpv kaj GTK." + +#: 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 leglisto" + +#: 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:30 +msgid "The Celluloid Developers" +msgstr "La programistoj de Celuloido" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +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:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"La listigo estas nekompleta. Uzu la komandon `git log` por plena ŝanĝaro." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Aldoni perslingvigon de @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Aldoni ukrajnlingvigon tradukon de @vl-nx" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Aldoni regadon por kaŝadon/malkaŝadon de fenestraj ornamaĵoj per la mpv-" +"opcio --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Aldoni menueron por malfermi lumdiskojn" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Embarasi aŭtomatan kaŝiĝon de kursuro dum ŝanĝo de laŭteco en fenestra " +"reĝimo" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Ripari kraŝon kun mpv-0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Alinomi la projektojn Celuloido" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Aldoni turklingvigon de @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Aldoni esperantlingvigon de @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migri de opengl-cb al la nova API" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Trakti ciferplatajn klavkombinojn" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Trakti unikodajn klavkombinojn" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Plusendi eventojn de aŭdovidaj klavoj al mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Aldonado de dconf-ŝlosilo por regi musmontrilan rapidon de regila kaŝado" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Aldoni opcion por silentigi lego-erarojn" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +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:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Plibonigi konduton dum baskuligo de leglisto en kahelaj fenestraj aranĝiloj" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +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:208 +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:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Aldoni subtenon por eco « LoopStatus » de MPRIS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Aldoni opcion « --mpv-options » por agordado de ajnaj opcioj de mpv de la " +"komandlinio" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +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:233 +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:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Aldoni komandlinian opcion por agordi econ « WM_ROLE »" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "Aldoni kuntekstan menuon por forigado de leglisteroj" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "Aldoni kuntekstan menueron por kopiado de leglistaj indikoj" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Aldoni opcion por ŝanĝi leglisterojn anstataŭ ĉapitrojn per preterpasaj " +"butonoj" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +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:265 +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:268 +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:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Aldoni opcion por aŭtomata kaŝo de musmontrilo en fenestra reĝimo" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +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:289 +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:293 +msgid "The main window with playlist open" +msgstr "La ĉefa fenestro kun malfermita leglisto" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Plurmedia legilo" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Legi filmojn kaj videojn" + +#. 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:495 +msgid "Playing" +msgstr "Leganta" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Montri eldonon" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Envicigi" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Krei novan fenestron" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPCIOJ" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Agordi rolon de la fenestro" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ne konekti al jama rulaĵo" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Paŭzigi" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Legi" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Haltigi" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Pluen" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Reen" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Sekva ĉapitro" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Antaŭa ĉapitro" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Ripetadi legliston" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Baskuligi tutekranan reĝimon" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Eraro" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Ĉiuj dosieroj" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Aŭdovidaj dosieroj" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Sonaj dosieroj" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Filmaj dosieroj" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Bildaj dosieroj" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "Neniu lumdisko trovita" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Dosiero" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Malfermi…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Malfermi _lokon…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Malfermi lum_diskon…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Konservi legliston" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nova fenestro" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Fini" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "R_edakti" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Agordoj" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Variaĵo de _filmo" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "Variaĵo de _sono" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Variaĵo de s_ubteksto" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Vido" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Baskuligi regilojn" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Baskuligi _legliston" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Tutekrana reĝimo" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Helpo" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Klavkombinoj" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Pri Celuloido" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Malfermi lum_diskon" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Legado ĉesis malnormale. Kialo: %s" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Loko:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Nuligi" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Malfermi" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Malsukcesis apliki unu aŭ pli da MPV-opcioj" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopii lokon" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Forigi" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Aldoni…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Aldoni _lokon…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Miksi" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Ripedati _dosieron" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Ripetadi _legliston" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Leglisto" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Leglisto malplenas" + +#: 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:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Fasado" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Agordaj dosieroj" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Diversaj" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Kromprogramoj" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Konservi" + +#: src/celluloid-preferences-dialog.c:432 +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 leglisto" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Aldoni lokon al leglisto" + +#: 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 legliston" + +#: 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 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 antaŭa/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 legrapidon je 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Du onigi/obligi la nunan legrapidon" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Restarigi norman legrapidon" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Iri pluen/antaŭen en la leglist" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Forigi elektitan leglisteron" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Konservi legliston" + +#: 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 "Fini" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Konservi nunan templokon kaj fini" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Komenci tempiran reĝimon" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Iri al la sekva trafo" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Iri al la antaŭa trafo" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Fini tempiran reĝimon" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Cikligi tra sontrakoj" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "(Mal)pliigi laŭtecon" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "(Mal)silentigi" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Alĝustigi prokraston de sono po 0,1 sekundoj" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Baskuligi videblecon de subtekstoj" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Cikligi tra disponeblaj subtekstoj" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Alĝustigi prokraston de subtekstoj po 0,1 sekundoj" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Baskuligi transpason de stilo de SSA/ASS-subtekstoj" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Movi subtekstojn supren/suben" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Baskuligi reĝimon de formata kongrueco kun VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Cikligi tra videaj trakoj" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "(Mal)pliigi amplekson de glitado" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Fari ekrankopion" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Fari ekrankopion, sen subtekstoj" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Fari ekrankopion tian, kian montras la fenestro" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Aligrandigi filmon al duono de originala grando" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Aligrandigi filmon al originala grando" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Aligrandigi filmon al duoblo de originala grando" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Alĝustigi kontraston" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Alĝustigi helecon" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Alĝustigi gamaon" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Alĝustigi saturecon" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Aktivigi aŭ malaktivigi malinterplektilon" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Cikligi transpason de bildformato" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Fasado" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Filmo" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Sono" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Subteksto" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Legado" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Tempiro" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Ŝargi sonan trakon…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Ŝargi subtekstan trakon…" + +#: src/celluloid-view.c:901 +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:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Aldoni dosieron al leglisto" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Malfermi dosieron" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Aldoni lokon al leglisto" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Malfermi lokon" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Konservi legliston" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Fasado por MPV per GTK" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Tirifto" diff --git a/po/es.po b/po/es.po new file mode 100644 index 0000000..1298f91 --- /dev/null +++ b/po/es.po @@ -0,0 +1,1177 @@ +# 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 +# Toni Estevez , 2020. #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: 2020-12-25 05:49-0500\n" +"Last-Translator: Toni Estevez \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 "Automatically resize window to fit video" +msgstr "Redimensionar automáticamente la ventana al tamaño del vídeo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Activar el tema oscuro" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Activar las decoraciones del lado del cliente" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Usar controles flotantes en el modo ventana" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Oculta automáticamente el cursor del ratón en el modo ventana" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +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:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Tamaño de la zona muerta en la que el movimiento del cursor no causará que " +"se muestren los controles." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "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:66 +msgid "Make file chooser remember last file's location" +msgstr "" +"Hacer que el selector de archivos recuerde la ubicación del último archivo." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Abrir siempre una ventana nueva" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opciones extra para mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Archivo de configuración de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Cargar el archivo de configuración de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +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:102 +msgid "Load mpv input configuration file" +msgstr "Cargar el archivo de configuración de entrada de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Activar la compatibilidad con MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Activar las teclas multimedia" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Precargar los metadatos" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorar los errores de reproducción" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Desactivar la suspensión de la sesión" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Anchura de la ventana" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Altura de la ventana" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Maximizar la ventana" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volumen del reproductor" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Reproducir en bucle la lista de reproducción" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Anchura de la lista de reproducción" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Mostrar los controles" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Mostrar la lista de reproducción" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: 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 Celluloid " +"sigue las guías de interfaz de usuario 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 de mpv externos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "Interfaz D-Bus de MPRIS2" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Los desarrolladores de Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Esta versión contiene los cambios siguientes:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Permite activar el menú contextual cuando la lista de reproducción está " +"vacía." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Evita el cambio constante del tamaño de la barra de búsqueda debido al " +"cambio de tamaño de la etiqueta de la marca de tiempo a medida que cambia su" +" valor." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Solo muestra un diálogo de error único cuando se produce un gran número de " +"errores en una sucesión rápida." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Añade un elemento al menú para abrir carpetas." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Ajusta la posición de los elementos de la interfaz de usuario de los " +"diálogos modales en el modo no CSD para ser más coherente con el modo CSD." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Añade la posibilidad de cargar pistas de vídeo externas." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Permite alternar la mezcla de las listas de reproducción." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Hace que las combinaciones de teclas funcionen con las teclas de flecha del " +"teclado numérico." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +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:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Ajusta el rango del botón de volumen basándose en el valor de la propiedad " +"«volumen máximo»." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Recuerda el estado de maximización de la ventana." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Recuerda el estado de la reproducción en bucle." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementa la búsqueda en la lista de reproducción." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Actualiza la lista de atajos en el diálogo de los atajos de teclado." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Maneja correctamente las comillas y las secuencias de escape en las opciones" +" extra de mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Muestra el tiempo en la posición del puntero al situarlo en la barra de " +"búsqueda." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Desaprueba «--mpv-options». En su lugar, para configurar opciones de mpv, se" +" pueden usar opciones que empiecen por «--mpv-». Por ejemplo, pasar «--mpv-" +"vf=vflip» a Celulloid equivale a pasar «--vf=vflip» a mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Añade apoyo para configurar una zona muerta, un área en la que el movimiento" +" del ratón no causará que se muestren los controles." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Ajusta el tamaño de la ventana correctamente en pantallas de alta densidad " +"(HiDPI)." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Añade la traducción al finlandés hecha por Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Añade la traducción al esloveno hecha por @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Añade la traducción al persa hecha por danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Añade la traducción al ucraniano hecha por vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Añade compatibilidad para mostrar/ocultar las decoraciones de la ventana " +"usando la opción de mpv --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Añade un elemento al menú para abrir discos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Bloquea la ocultación automática del cursor cuando se abre la ventana " +"emergente del volumen en el modo ventana" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Corrige el bloqueo con la versión 0.30 de mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Cambia el nombre del proyecto a Celulloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +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:166 +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:169 +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:172 +msgid "Handle numpad keybindings" +msgstr "Maneja las combinaciones de teclas del teclado numérico" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Maneja las combinaciones de teclas de Unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +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:181 +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:184 +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:199 +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:202 +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:205 +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:208 +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:211 +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:214 +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:230 +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:233 +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:237 +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:240 +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:243 +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:258 +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:262 +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:265 +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:268 +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:271 +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" +" ventana" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +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:289 +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:293 +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: 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:495 +msgid "Playing" +msgstr "En reproducción" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Mostrar la versión" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "A la cola" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Crear una nueva ventana" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPCIONES" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Configurar el comportamiento de la ventana" + +#: src/celluloid-application.c:591 +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:362 +msgid "Pause" +msgstr "Pausar" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Reproducir" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Detener" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Avanzar" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Rebobinar" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Capítulo siguiente" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Capítulo anterior" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Lista de reproducción en bucle" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Barajar la lista de reproducción" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Activar/desactivar la pantalla completa" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Error" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Todos los archivos" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Archivos multimedia" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Archivos de audio" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Archivos de vídeo" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Archivos de imagen" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "No se ha encontrado ningún disco" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Archivo" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Abrir..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Abrir una _carpeta..." + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Abrir una _ubicación..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Abrir un _disco..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Guardar la lista de reproducción..." + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "Ventana _nueva" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Salir" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Editar" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Preferencias" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Pista de _vídeo" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "Pista de _audio" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Pista de _subtítulos" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Vista" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Mostrar/ocultar los _controles" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Mostrar/ocultar la _lista de reproducción" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Pantalla completa" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "Ay_uda" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "Atajos de _teclado" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Acerca de Celluloid" + +#: src/celluloid-menu.c:321 +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:130 +msgid "Location:" +msgstr "Ubicación:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Cancelar" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Abrir" + +#: src/celluloid-player.c:550 +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:786 +msgid "_Copy Location" +msgstr "_Copiar la ubicación" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Borrar" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Añadir..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Añadir una _carpeta..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Añadir una _ubicación..." + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Barajar" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr " _Archivo en bucle" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "_Lista de reproducción en bucle" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Lista de reproducción" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "La lista de reproducción está vacía" + +#: 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:341 +msgid "mpv configuration file:" +msgstr "Archivo de configuración de mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Archivo de configuración de la entrada de mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Opciones extra de mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interfaz" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Archivos de configuración" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Miscelánea" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Complementos" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Guardar" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "Entrar en el modo de búsqueda" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Ir a la coincidencia siguiente" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Ir a la coincidencia anterior" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Salir del modo de búsqueda" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Seleccionar la pista de audio siguiente" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Disminuir/aumentar el volumen" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Silenciar/activar el sonido" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Ajustar el retraso del audio en +/- 0,1 segundos" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Mostrar/ocultar los subtítulos" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Seleccionar los subtítulos siguientes" + +#: src/celluloid-shortcuts-window.c:108 +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:109 +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:110 +msgid "Move subtitles up/down" +msgstr "Mover los subtítulos arriba/abajo" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Activar/desactivar el modo de compatibilidad de aspecto de VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Seleccionar la pista de vídeo siguiente" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Disminuir/aumentar el rango de reencuadre (pan and scan)" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Tomar una captura de pantalla" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Tomar una captura de pantalla, sin subtítulos" + +#: src/celluloid-shortcuts-window.c:118 +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:119 +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:120 +msgid "Resize video to its original size" +msgstr "Redimensionar el vídeo a su tamaño original" + +#: src/celluloid-shortcuts-window.c:121 +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:122 +msgid "Adjust contrast" +msgstr "Ajustar el contraste" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Ajustar el brillo" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Ajustar la correcció gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Ajustar la saturación" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Activar/desactivar el desentrelazado" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Seleccionar la relación de aspecto siguiente" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Interfaz de usuario" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Vídeo" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Audio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Subtítulos" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Reproducción" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Búsqueda" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Cargar una pista de audio..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Cargar una pista de vídeo..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Cargar una pista de subtítulos..." + +#: src/celluloid-view.c:901 +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:1444 +msgid "Add Folder to Playlist" +msgstr "Añadir una carpeta a la lista de reproducción" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Abrir una carpeta" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Añadir un archivo a la lista de reproducción" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Abrir un archivo" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Añadir una ubicación a la lista de reproducción" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Abrir una ubicación" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Guardar la lista de reproducción" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Una interfaz GTK para el reproductor mpv" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Toni Estevez, toni.estevez@gmail.com>\n" +"Sergio D. Márquez, marquez.sergio.d@gmail.com" diff --git a/po/eu.po b/po/eu.po new file mode 100644 index 0000000..1776b8e --- /dev/null +++ b/po/eu.po @@ -0,0 +1,1156 @@ +# Asier Iturralde Sarasola , 2021. #zanata +msgid "" +msgstr "" +"Project-Id-Version: celluloid\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-10-09 22:16+0700\n" +"PO-Revision-Date: 2021-01-23 01:00-0500\n" +"Last-Translator: Asier Iturralde Sarasola \n" +"Language-Team: Basque\n" +"Language: eu\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 "Ezarpenak aurreko bertsiotik jada migratu diren ala ez." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Aldatu leihoaren tamaina automatikoki bideora doitzeko" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Gaitu itxura iluna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Gaitu bezeroaren aldeko apaingarriak" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Gaitu kontrol mugikorrak leiho moduan" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Ezkutatu saguaren kurtsorea automatikoki leiho moduan" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Kurtsorearen gutxieneko ze abiaduratan bistaratuko diren kontrol mugikorrak." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Kurtsorearen mugimenduek kurtsorea bistaratzea eragiten ez duten eremu " +"hilaren tamaina." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Erabili saltatzeko botoiak erreprodukzio-zerrenda kontrolatzeko" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Fitxategi-hautatzaileak gogora dezala azken fitxategiaren kokalekua." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Ireki leiho berria beti" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "mpv-ri pasako zaizkion aukerak" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "mpv konfigurazio-fitxategiaren bidea" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Kargatu mpv konfigurazio-fitxategia" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "mpv-ren sarrerako konfigurazio-fitxategiaren bidea" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Kargatu mpv-ren sarrerako konfigurazio-fitxategia" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Gaitu MPRIS euskarria" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Gaitu multimedia teklen euskarria" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Eskuratu aurrez metadatuak" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Egin ez ikusi erreprodukzio-erroreei" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Eragotzi saioa ixtea" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Leihoaren zabalera" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Leihoaren altuera" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Leihoa maximizatua dagoen ala ez" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Erreproduzigailuaren bolumena" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Erreprodukzio-zerrendaren amaierara iristean begizta egin ala ez" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Erreprodukzio-zerrendaren zabalera" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Erakutsi kontrolak ala ez" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Erakutsi erreprodukzio-zerrenda ala ez" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Atzitutako azken karpetaren URIa" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "mpv-ren GTK+ interfazea" + +#: 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 multimedia erreproduzigailu sinple bat da, eta bideo eta audio " +"formatu ia guztiak erreproduzitu ditzake. Erreprodukzio-zerrenda eta MPRIS2 " +"multimedia erreproduzigailu kontrolen euskarria du. Celluloiden diseinuak " +"GNOMEren Gizakientzako interfaze gidalerroak jarraitzen ditu, baina " +"bezeroaren aldeko apaingarriak (CSD) erabiltzen ez dituzten beste " +"sistemetara egokitu daiteke. mpv liburutegian eta GTK-n oinarritua dago." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Ezaugarriak:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Erreprodukzio-zerrendak arrastatu eta jaregitea" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Kanpoko mpv konfigurazio-fitxategiak kargatzea" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus interfazea" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Celluloiden garatzaileak" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Bertsio honek ondorengo aldaketak ditu:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Erreprodukzio-zerrenda hutsik dagoenean laster-menua aktibatzeko aukera " +"eman." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Denbora-zigiluaren balioa aldatzean bere etiketaren tamaina aldatzearen " +"ondorioz bilaketa-barraren tamaina etengabe tamainaz aldatzea eragotzi." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Errore kopuru handi bat azkar batean ematen direnean elkarrizketa-koadro " +"bakarra erakutsi." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Karpetak irekitzeko menuko elementua gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Elkarrizketa-koadro modalen interfazeko elementuen kokapena doitu ez-CSD " +"moduetan, CSD moduarekin koherenteago izateko." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Kanpoko bideo-pistak kargatzeko euskarria gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Erreprodukzio-zerrendak nahastea txandakatzeko aukera eman." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "Zenbakizko teklatuko geziak gezien laster-tekletan erabil daitezke." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Zerrenda hau osatugabea da. Ikusi git log aldaketen zerrenda osorako." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Bolumenaren botoiaren tartea gehienezko bolumena propietatearen balioaren " +"arabera doitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Leihoaren maximizazio egoera mantendu saioen artean." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Begiztaren egoera saioen artean mantendu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Erreprodukzio-zerrenden bilaketa inplementatu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Laster-teklak elkarrizketa-koadroko zerrenda eguneratu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Komatxoak eta ihes sekuentziak zuzen maneiatu mpv-ren aukera gehigarrietan." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Denbora kurtsoaren posizioan bistaratu bilaketa-barraren gainean jartzean." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"'--mpv-options' zaharkitutzat jo. Horren ordez '--mpv-' aurrizkiarekin " +"hasten diren aukerak erabil daitezke mpv-ren aukerak ezartzeko. Adibidez, " +"Celluloidi '--mpv-vf=vflip' pasatzea mpv-ri '--vf=vflip' pasatzearen " +"baliokidea da." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Zonalde hila konfiguratzeko euskarria gehitu, saguaren mugimenduek kontrolak" +" bistaraziko ez dituzten eremua." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Leiho tamainak HiDPI pantailetan behar bezala funtzionatzea." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Kimmo Kujansuu-ren suomierazko itzulpena gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "@bertronika-ren eslovenierazko itzulpena gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "@danialbehzadi-ren persierazko itzulpena gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "@vl-nix-ren ukrainerazko itzulpena gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"mpv-ren --border aukera erabiliz leihoen apaingarriak erakutsi/ezkutatzeko " +"euskarria gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Diskoak irekitzeko menuko elementua gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Kurtsorea automatikoki ezkutatzea blokeatu bolumenaren laster-leihoa leiho " +"moduan irekita dagoenean." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "mpv 0.30 bertsioarekin hutsegitea zuzendu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Proiektua Celluloid moduan berrizendatu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "@TeknoMobil-en turkierazko itzulpena gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "@F3nd0-ren esperantozko itzulpena gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "opengl-cb-tik errendatze API berrira migratu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Zenbakizko teklatuko laster-teklak maneiatu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Unicode laster-teklak maneiatzea." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Multimedia tekla gertaerak mpv-ri igorri." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Kontrolak kurtsorearen ze abiaduratan bistaratuko diren kontrolatzeko dconf " +"gakoa gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Erreprodukzio-erroreak isiltzeko aukera gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Hobespenak elkarrizketa-koadroko Orokorra fitxa banatu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Erreprodukzio-zerrenda txandakatzeko portaera hobetu mosaiko moduko leiho " +"kudeatzaileetan." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Aplikazioaren menuko elementuak menu nagusira eraman." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "MPRIS DBUS konexio bereizi bat erabili leiho bakoitzean." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "MPRIS-en LoopStatus propietatearen euskarria gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"--mpv-options aukera gehitu, komando lerrotik hautazko mpv aukerak " +"ezartzeko." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" +"XDG_PICTURES_DIR pantaila-argazkien direktorio lehenetsi bezala ezarri." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"--window-scale, --autofit, --autofit-larger eta --autofit-smaller aukeren " +"maneiatzea hobetu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "WM_ROLE ezartzeko komando-lerroko aukera gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"Erreprodukzio-zerrendako elementuak kentzeko laster-menuko elementua gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Erreprodukzio-zerrendako elementuen kokalekua kopiatzeko laster-menuko " +"elementua gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Saltatzeko botoiak erabiliz kapituluen ordez erreprodukzio-zerrendako " +"sarrerak aldatzeko aukera gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Fitxategi-hautatzaileak kokaleku ez-lokalak onartzen ditu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" +"Fitxategi bakarra begiztan jartzeko sarrera gehitu eskuineko botoiko laster-" +"menuan." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Pantaila osoa eta leihoa eskalatzea kudeatzeko aldaketa gertaerak kudeatu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Leiho moduan saguaren kurtsorea automatikoki ezkutatzeko aukera gehitu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Leiho nagusia aplikazioa lanean erakusten" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Leiho nagusia CSD desgaituta" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Leiho nagusia erreprodukzio-zerrenda irekita" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Multimedia erreproduzigailua" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Erreproduzitu film eta bideoak" + +#. 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 "" +"Bideoa;Filma;Pelikula;Klipa;Telesailak;Erreproduzigailua;DVD;TV;Diskoa;Albuma;Musika;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Leiho berria" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Erreproduzitzen" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Erakutsi argitalpenaren bertsioa" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Jarri ilaran" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Sortu leiho berri bat" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "AUKERAK" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Ezarri leihoaren rola" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ez konektatu dagoeneko martxan dagoen instantzia batera" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pausatu" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Erreproduzitu" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Gelditu" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Aurrera" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Atzera" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Hurrengo kapitulua" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Aurreko kapitulua" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Egin erreprodukzio-zerrendaren begizta" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Nahasi erreprodukzio-zerrenda" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Txandakatu pantaila osoa" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Errorea" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Fitxategi guztiak" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Multimedia-fitxategiak" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Audio-fitxategiak" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Bideo-fitxategiak" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Irudi fitxategiak" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Azpititulu-fitxategiak" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Bat ere ez" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Ezezaguna" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Kargatu kanpokoa..." + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Ez da diskorik aurkitu" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Fitxategia" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Ireki..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Ireki _karpeta..." + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Ireki _kokalekua..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Ireki _diskoa..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Gorde erreprodukzio-zerrenda" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "Leiho _berria" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Irten" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Editatu" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Hobespenak" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Bideo-pista" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Audio-pista" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "A_zpititulu-pista" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Ikusi" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Txandakatu erreprodukzio-zerrenda" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Txandakatu erreprodukzio-zerrenda" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Pantaila osoa" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Laguntza" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "Laster-_teklak" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Celluloidi buruz" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Ireki _diskoa" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Erreprodukzioa modu anormalean bukatu da. Arrazoia: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Kokalekua:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Utzi" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Ireki" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Huts egin du MPV-ren aukera bat edo gehiago aplikatzean." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopiatu kokalekua" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Kendu" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Gehitu..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Gehitu _karpeta..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Gehitu k_okalekua" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Nahasi" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Egin _fitxategiaren begizta" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Egin _erreprodukzio-zerrendaren begizta" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Erreprodukzio-zerrenda" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Erreprodukzio-zerrenda hutsik dago" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Gehitu plugina" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua pluginak" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript pluginak" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C pluginak" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "" +"Huts egin du fitxategia '%s' jatorritik '%s' helburura kopiatzean. Arrazoia:" +" %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Ez da pluginik aurkitu" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Kendu" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "Ziur zaude script hau kendu nahi duzula? Ekintza hau ezin da desegin." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Huts egin du '%s' fitxategia ezabatzean. Arrazoia: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "mpv konfigurazio-fitxategia:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "mpv-ren sarrerako konfigurazio-fitxategia:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "mpv-ren aukera gehigarriak:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interfazea" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Konfigurazio-fitxategiak" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Askotarikoa" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Pluginak" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Gorde" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Hobespenak" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Ireki fitxategia" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Ireki kokalekua" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Gehitu fitxategia erreprodukzio-zerrendara" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Gehitu kokalekua erreprodukzio-zerrendara" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Erakutsi hobespenen elkarrizketa-koadroa" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Txandakatu kontrolak" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Txandakatu erreprodukzio-zerrenda" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Txandakatu pantaila osoko modua" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Irten pantaila osoko modutik" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "" +"Txandakatu OSD egoerak normalaren eta erreprodukzioaren denbora/iraupenaren " +"artean" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Erakutsi fitxategi-izena OSD-an" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Erakutsi aurrerapena, igarotako denbora eta iraupena OSD-an" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Joan atzera/aurrera 5 segundo" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Joan atzera/aurrera zehazki segundo bat" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Joan atzera/aurrera minutu bat" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Joan atzera/aurrera zehazki 5 segundo" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Joan aurreko/hurrengo azpititulura" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Joan atzera/aurrera fotograma bakar bat" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Joan aurreko/hurrengo kapituluaren hasierara " + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Txikiagotu/handiagotu erreprodukzio-abiadura %10ean" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Erdira jaitsi/Bikoiztu erreprodukzio-abiadura" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Berrezarri erreprodukzio-abiadura normala" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Joan atzera/aurrera erreprodukzio-zerrendan" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Kendu hautatutako erreprodukzio-zerrendako elementua" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Gorde erreprodukzio-zerrenda" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Ezarri/garbitu A-B begizta-puntuak" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Txandakatu begizta infinitua" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pausatu edo despausatu" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Irten" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Gorde uneko erreprodukzioaren posizioa eta irten" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Sartu bilaketa moduan" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Jauzi hurrengo bat-etortzera" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Jauzi aurreko bat-etortzera" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Irten bilaketa modutik" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Txandakatu audio-pistak" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Jaitsi/Igo bolumena" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Mututu edo desmututu" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Doitu audioaren atzerapena +/- 0,1 segundoz" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Txandakatu azpitituluen ikusgaitasuna" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Txandakatu erabilgarri dauden azpitituluak" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Doitu azpitituluen atzerapena +/- 0,1 segundoz" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Txandakatu SSA/ASS azpitituluen estiloa gainidaztea" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Mugitu azpitituluak gora/behera" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Txandakatu VSFilter aspektu bateragarritasun modua" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Txandakatu bideo-pistak" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Txikiagotu/Handiagotu pan-and-scan barrutia" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Atera pantaila-argazkia" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Atera pantaila-argazkia, azpititulurik gabe" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Atera pantaila-argazkia, leihoak erakusten duen bezala" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Aldatu bideoaren tamaina jatorrizkoaren erdira" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Aldatu bideoaren tamaina jatorrizkora" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Aldatu bideoaren tamaina jatorrizkoaren bikoitzera" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Doitu kontrastea" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Doitu distira" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Doitu gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Doitu asetasuna" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Aktibatu edo desaktibatu desgurutzelarkatzailea" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Txandakatu aspektu-erlazioa gainidaztea" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Erabiltzaile-interfazea" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Bideoa" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Audioa" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Azpititulua" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Erreprodukzioa" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Bilaketa" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Kargatu audio-pista..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Kargatu bideo-pista..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Kargatu azpititulu-pista..." + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Bezeroaren aldeko apaingarriak gaitu edo desgaitzeko berrabiarazi beharra " +"dago." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Gehitu karpeta erreprodukzio-zerrendara" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Ireki karpeta" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Gehitu fitxategia erreprodukzio-zerrendara" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Ireki fitxategia" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Gehitu kokalekua erreprodukzio-zerrendara" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Gehitu kokalekua" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Gorde erreprodukzio-zerrenda" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "MPVren GTK interfaze bat" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Asier Iturralde Sarasola " diff --git a/po/fa.po b/po/fa.po new file mode 100644 index 0000000..a631ca3 --- /dev/null +++ b/po/fa.po @@ -0,0 +1,1109 @@ +# Danial Behzadi , 2019. #zanata +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #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: 2020-06-23 10:48-0400\n" +"Last-Translator: Copied by Zanata \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 "Automatically resize window to fit video" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "به کار انداختن زمینهٔ تاریک" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "به کار انداختن تزیینات سمت کارخواه" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "استفاده از واپایشگرهای شناور در حالت پنجره‌ای" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "کمینهٔ سرعت نشانگر برای آشکار شدن واپایشگرهای شناور." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "استفاده از دکمه‌های پرش برای واپایش فهرست پخش" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "گشودن همیشگی پنجرهٔ جدید" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "انتخاب‌های داده شده به mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "مسیر پروندهٔ پیکربندی mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "مسیر پروندهٔ پیکربندی ورودی mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "به کار انداختن پشتیبانی MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "به کار انداختن پشتبانی کلیدهای رسانه" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "پیش‌واکشی فراداده" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "چشم‌پوشی از خطاهای پخش" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "پهنای پنجره" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "بلندای پنجره" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "حجم پخش‌کننده" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "پهنای فهرست پخش" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "نمایش یا عدم نمایش واپایشگرها" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "نمایش یا عدم نمایش فهرست پخش" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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:30 +msgid "The Celluloid Developers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "این ارائه شامل تغییرات زیر است:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "تغییر نام پروژه به سلولوید" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "افزودن ترجمهٔ ترکی به دست @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "افزودن ترجمهٔ اسپرانتو به دست @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "مهاجرت از opengl-cb به API پرداخت جدید" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "مدیریت ترکیب‌کلیدهای صفحه‌عدد" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "مدیریت ترکیب‌کلیدهای یونی‌کد" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "هدایت رویدادهای کلید رسانه به mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "افزودن کلید dconf برای واپایش سرعت نشانگر برای آشکارسازی واپایشگرها" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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:495 +msgid "Playing" +msgstr "در حال پخش" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "نمایش نگارش ارائه" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "صف کردن" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "ایجاد پنجره‌ای جدید" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "گزینه‌ها" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "تنظیم نقش پنجره" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "وصل نشدن به یک نمونهٔ در حال اجرا" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "مکث" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "پخش" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "توقّف" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "جلو" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "عقب" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "فصل بعدی" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "فصل پیشین" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "فهرست پخش حلقه‌ای" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "تغییر حالت تمام‌صفحه" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "خطا" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "تمام پرونده‌‌ها" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "پرونده‌های رسانه" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "پرونده‌های صوتی" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "پرونده‌های ویدیویی" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "پرونده‌های تصویر" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "هیچ دیسکی پیدا نشد" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_پرونده" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_گشودن…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "گشودن _موقعیت…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "گشودن _دیسک…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_ذخیرهٔ فهرست پخش" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "پنجرهٔ _جدید" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_ویرایش" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_ترجیحات" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "قطعهٔ _ویدیویی" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "قطعهٔ _صوتی" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "قطعهٔ _زیرنویس" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_نما" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "تغییر _حالت واپایشگرها" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "تغییر _حالت فهرست پخش" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_تمام‌صفحه" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_راهنما" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_میان‌برهای صفحه‌کلید" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_دربارهٔ سلولوید" + +#: src/celluloid-menu.c:321 +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:130 +msgid "Location:" +msgstr "موقعیت:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_لغو" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_گشودن" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "شکست در اعمال برخی گزینه‌های mpv." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_رونوشت از موقعیت" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_برداشتن" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_افزودن…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "افزودن _موقعیت…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_بر زدن" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "تکرار _پرونده" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "تکرار _فهرست پخش" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "فهرست پخش" + +#: src/celluloid-playlist-widget.c:943 +#, fuzzy +msgid "Playlist is empty" +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:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "رابط" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "پرونده‌های پیکربندی" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "متفرّقه" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "افزایه‌ها" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_ذخیره" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "نماگرفت" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "رابط کاربری" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "ویدیو" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "صدا" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "زیرنویس" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "پخش" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "رسیدن" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "بار کردن قطعهٔ صوتی…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "بار کردن قطعهٔ زیرنویس…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "افزودن پرونده به فهرست پخش" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "گشودن پرونده" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "افزودن موقعیت به فهرست پخش" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "گشودن موقعیت" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "ذخیرهٔ فهرست پخش" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "یک پیشانهٔ ‪GTK‬ برای mpv" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "دانیال بهزادی " diff --git a/po/fi.po b/po/fi.po new file mode 100644 index 0000000..2036f98 --- /dev/null +++ b/po/fi.po @@ -0,0 +1,1143 @@ +# Kimmo Kujansuu , 2019. #zanata +# Jiri Grönroos , 2020. #zanata +# Kimmo Kujansuu , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: celluloid\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-12-12 23:48+0700\n" +"PO-Revision-Date: 2020-10-28 02:38-0400\n" +"Last-Translator: Kimmo Kujansuu \n" +"Language-Team: Finnish\n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"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 "Onko asetukset jo siirretty edellisestä versiosta" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Ikkunan koon muuttaminen automaattisesti videon mukaan" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Käytä tummaa teemaa" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Ota käyttöön asiakkaan ikkunatehosteet" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Käytä kelluvia säätimiä ikkunatilassa" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Piilota hiiren kohdistin automaattisesti ikkunatilassa" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "Kohdistimen miniminopeus, jolla kelluvat säätimet ovat piilossa." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Vyöhykkeen koko, jossa hiiren liike ei nosta ohjauksen kuvakkeita näkyviin." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Käytä ohituspainikkeita soittolistan ohjaamiseen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Tee valitsin muistamaan viimeisten tiedostojen sijainti" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Avaa aina uusi ikkuna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Vaihtoehdot siirtyä MPV:hen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Polku MPV-asetustiedostoon" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Lataa MPV-asetustiedosto" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Polku MPV-sisääntulon asetustiedostoon" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Lataa MPV-sisääntulon asetustiedosto" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Ota MPRIS-tuki käyttöön" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Ota medianäppäintuki käyttöön" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Hae metatiedot etukäteen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ohita toiston virheet" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Estä istunnon joutokäynti" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Ikkunan leveys" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Ikkunan korkeus" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Onko ikkuna on maksimoitu vai ei" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Soittimen äänenvoimakkuus" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Käytetäänkö looppitoimintoa soittolistan lopun saavuttua" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Soittolistan laajuus" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Näytetäänkö säätimet" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Näytetäänkö soittolista" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Viimeksi käytettyjen kansioiden sijainti" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+-käyttöliittymä MPV:lle" + +#: 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 on yksinkertainen mediasoitin, joka voi toistaa käytännössä kaikki" +" video- ja äänimuodot. Se tukee soittolistoja ja MPRIS2-mediasoittimen " +"ohjaimia. Celluloidin suunnittelu noudattaa GNOME Human Interface -ohjeita, " +"mutta sitä voidaan mukauttaa myös muihin järjestelmiin, jotka eivät käytä " +"ikkunatehosteita (CSD). Se perustuu MPV-kirjastoon ja GTK:hon." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Ominaisuudet:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Vedä ja pudota soittolista" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Ladataan ulkoisia MPV-asetustiedostoja" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 -D-Bus-liitäntä" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Celluloid-kehittäjät" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Tämä julkaisu sisältää seuraavat muutokset:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "Voit aktivoida pikavalikon, kun soittolista on tyhjä." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Estä palkin jatkuva koon muuttaminen aikaleiman otsikon koon muuttuessa tai " +"sen arvon muuttuessa." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Näytä vain yksi virheikkuna, kun suuri määrä virheitä tapahtuu nopeasti " +"peräkkäin." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Lisää valikkoon kohde kansioiden avaamista varten." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Säädä valintaikkunoiden sijaintia muussa kuin CSD-tilassa, joka olisi " +"johdonmukaisempi CSD-tilan kanssa." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Lisää tuki ulkoisten videoiden lataamiseen." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Tee soittolistasta satunnainen." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "Nuolinäppäinten käyttäminen numeronäppäimistön nuolinäppäimillä." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Tämä luettelo on puutteellinen. Katso täydellinen git-muutosloki." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "Säädä painikkeen aluetta äänenvoimakkuuden enimmäisarvon mukaan." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Säilytä ikkunan maksimitila istuntojen välillä." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Säilytä toisto tauotta koko istunnon ajan." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Ota soittolistan haku käyttöön." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Päivitä pikanäppäinten luettelo pikanäppäimet-valintaikkunassa." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "Käsitelle oikein lainaumerkkejä ja erikoismerkkejä MPV valinnoissa." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "Näytä aika kohdistimessa kun siirrät hakupalkkia." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Jätä väliin '--mpv-options'. Asetukset, jotka alkavat '--mpv-' voidaan " +"asettaa mpv-asetusten sen sijaan. Esimerkiksi, '--mpv-vf=vflip' on " +"Celluloidin vastaava ohitus '--vf=vflip' mpv:n tilalle." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Lisää tuki kuolleiden alueiden määrittämiselle. Alue, jolla hiiren " +"liikkuminen ei aiheuta ohjauksen kuvakkeita näkyviin." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Tee ikkunoiden mitoitus oikein HiDPI-näytöillä." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Lisätty Suomi kielipaketti lähettäjä Kimmo Kujansuu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Lisätty Slovenian kielipaketti lähettäjä @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Lisätty Persian kielipaketti lähettäjä @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Lisätty Ukrainan kielipaketti lähettäjä @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Lisätty tuki ikkunatehosteiden näyttämistä/piilottamista varten MPV-" +"asetuksella --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Lisätty valikkoon kohta levyjen avaamista varten" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Estetty kohdistimen automaattinen piilottaminen, kun äänenvoimakkuuden " +"ponnahdusikkuna on avattu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Kaatuminen korjattu versiossa MPV 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Projekti nimetty Celluloid:ksi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Lisätty Turkkilainen kielipaketti lähettäjä @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Lisätty Esperanto kielipaketti lähettäjä @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Siirrytty OpenGL-CB -muodosta uuteen renderöinti API-liittymään" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Osaa numeronäppäimistön painikkeet" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Osaa unicode -painikkeet" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Välittää medianäppäinten avaintoiminnot MPV:hen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Lisää dconf -avaimen kohdistimen nopeuden hallintaan, kun säätimet ovat " +"piilossa" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Lisää vaihtoehdon toistovirheiden estämiseksi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Jakaa välilehden Yleinen asetukset-valintaikkunassa" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Parantaa käyttäytymistä, kun soittolistat voidaan kytkeä vierekkäin " +"ikkunanhallinan alla" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Siirrä sovelluksen valikkokohteet päävalikkoon" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Käytä erillistä MPRIS DBus -yhteyttä jokaiseen ikkunaan" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Lisää tuki MPRIS -ominaisuus Loop -silmukan tilaksi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Lisää optio --mpv -optio asettaa satunnaiset mpv-asetukset komentoriviltä" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Aseta oletus kuvakaappauksen hakemistoon XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Paranna käsittelyä --window-scale, --autofit, --autofit-larger, ja " +"--autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Lisää komentorivivalinta WM_ROLE -asetukseksi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "Lisää pikavalikko soittolistan kohteiden poistamista varten" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "Lisää pikavalikko kopioidaksesi soittolistan kohteiden sijainnin" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Lisää vaihtoehto, jotta ohituspainikkeet muuttavat soittolistan merkintöjä " +"lukujen sijasta" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" +"Varmista, että tiedoston valitsin hyväksyy muut kuin paikalliset sijainnit" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" +"Lisää hiiren kakkospainikkeella merkintä yksittäisen kappaleen silmukointi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "Muuttaa koko näytön ja ikkunan mittakaavan tapahtumia" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Lisää vaihtoehto hiiren kohdistimen automaattiseen piilottamiseen " +"ikkunatilassa" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Pääikkuna, joka näyttää sovelluksen olevan toiminnassa" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Pääikkuna, jossa CSD on poistettu käytöstä" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Pääikkuna, jossa soittolista on auki" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Multimediasoitin" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Toista elokuvia ja videoita" + +#. 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;Elokuva;Filmi;Sarja;Soitto;Musiikki;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Uusi ikkuna" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Soitetaan" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Näytä julkaisuversio" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Jonoon" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Luo uusi ikkuna" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "VAIHTOEHDOT" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Määritä ikkunan rooli" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Älä muodosta yhteyttä jo käynnissä olevaan tapaukseen" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Tauko" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Toista" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Pysäytä" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Eteenpäin" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Taaksepäin" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Seuraava kappale" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Edellinen kappale" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Toista soittolistaa tauotta" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Sekoita soittolista" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Koko näytön tila päällä/pois" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Virhe" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Kaikki tiedostot" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Mediatiedostot" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Äänitiedostot" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Videotiedostot " + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Kuvatiedostot " + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Tekstitystiedostot" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Ei mitään" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Tuntematon" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "_Lataa ulkoinen…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Levyä ei löytynyt" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Tiedosto" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Avaa..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Avaa _kansio…" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Avaa _sijainti..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Avaa _levy..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Tallenna soittolista" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Uusi ikkuna" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Lopeta" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Muokkaa" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Asetukset" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Videoraita" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Ääniraita" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "T_ekstitysraita" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Näytä" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Säätimet päällä/pois" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Soittolista päällä/pois" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Koko näyttö" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Ohje" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Pikanäppäimet" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Tietoja - Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Avaa _levy" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Toisto lopetettiin odottamattomasti. Syy: %s" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Sijainti:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Peru" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Avaa" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Yhtä tai useampaa MPV-valintaa ei voitu käyttää." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopioi sijainti" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Poista" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Lisää..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Lisää _kansio..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Lisää _sijainti..." + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Sekoittaa" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Silmukkaan _tiedosto" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Silmukkaan _soittolista" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Soittolista" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Soittolista on tyhjä" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Lisää laajennus" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua-laajennukset" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript-laajennukset" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C-laajennukset" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Tiedoston %s kopioiminen kohteeseen %s epäonnistui. Syy: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Laajennuksia ei löytynyt" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Poista" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Haluatko varmasti poistaa tämän komentosarjan? Tätä toimintoa ei voi " +"peruuttaa." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Tiedostoa %s ei voitu poistaa. Syy: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "mpv asetustiedosto:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "mpv sisääntulon asetustiedosto:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Ylimääräiset mpv-asetukset:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Käyttöliittymä" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Asetustiedostot" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Sekalaiset" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Laajennukset" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Tallenna" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Asetukset" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Avaa tiedosto" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Avaa sijainti" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Lisää tiedosto soittolistaan" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Lisää sijainti soittolistaan" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Näytä Asetukset-valintaikkuna" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Säätimet päällä/pois" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Soittolista päällä/pois" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Vaihtele koko näytön tilan välillä" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Poistu koko näytön tilasta" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Vaihda OSD-tilat normaalin ja toistoajan/keston välillä" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Näytä tiedostonimi OSD-näytössä" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Näytä edistyminen, kulunut aika ja kesto OSD-näytössä" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Siirry eteen-/taaksepäin 5 sekuntia" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Siirry tarkasti eteen-/taaksepäin 1 sekunti " + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Siirry eteen-/taaksepäin 1 minuutti" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Siirry tarkasti eteen-/taaksepäin 5 sekuntia " + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Siirry edellinen/seuraava tekstitys" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Astu taaksepäin/eteenpäin yksi kuva kerrallaan" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Siirry edellisen/seuraavan kappaleen alkuun" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Pienennä/lisää toistonopeutta 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Puoli/kaksinkertainen toistonopeus" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Palauta toistonopeus normaaliksi" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Siirry taakse/eteenpäin soittolistassa" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Poista valittu soittolista" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Tallenna soittolista" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Aseta/tyhjennä A-B -soittosilmukkat" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Vaihda ääretön soittosilmukka" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Tauko tai jatka" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Lopeta" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Tallenna nykyinen toistopaikka ja lopeta" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Siirry hakutilaan" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Hyppää seuraavaan osumaan" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Hyppää edelliseen osumaan" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Poistu hakutilasta" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Selaa ääniraitojen läpi" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Pienennä/lisää äänenvoimakkuutta" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Mykistä tai poista mykistys" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Säädä äänen viivettä +/-0,1 sekuntia" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Vaihda tekstityksen näkyvyyttä" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Selaa käytettävissä olevia tekstityksiä" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Säädä tekstityksen viive +/- 0,1 sekunnilla" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Vaihda SSA/ASS-tekstitystyylin ohitus" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Siirrä tekstityksiä ylös/alas" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Vaihda VSFilter-kuvasuhteen yhteensopivuustilaa" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Selaa videoraitojen läpi" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Pienennä/lisää skannausaluetta" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Ota kuvakaappaus" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Ota kuvakaappaus ilman tekstityksiä" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Ota kuva kaappaus, kuten se ikkunassa näykyy" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Videon koon muuttaminen puoleen alkuperäisestä koosta" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Videon koon muuttaminen alkuperäiseen kokoon" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Videon koon muuttaminen kaksinkertaiseksi alkuperäisestä koosta" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Säädä kontrastia" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Säädä kirkkautta" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Säädä gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Säädä värikylläisyyttä" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Aktivoi tai deaktivoi skaalain" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Jakson kuvasuhteen ohitus" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Käyttöliittymä" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Ääni" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Tekstitys" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Toisto" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Siirtyminen" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Lataa ääniraita…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Lataa video…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Lataa tekstitys..." + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Asiakkaan ikkunatehosteiden ottaminen käyttöön tai poistaminen käytöstä " +"edellyttää uudelleenkäynnistystä." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Lisää kansio soittolistaan" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Avaa kansio" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Lisää tiedosto soittolistaan" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Avaa tiedosto" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Lisää sijainti soittolistaan" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Avaa sijainti" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Tallenna soittolista" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "MPV:n GTK+ -käyttöliittymä" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Kääntänyt:\n" +"Kimmo Kujansuu" diff --git a/po/fr.po b/po/fr.po new file mode 100644 index 0000000..ca01a9d --- /dev/null +++ b/po/fr.po @@ -0,0 +1,1185 @@ +# 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 +# Erwan Amans , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Yoshida Shouyou , 2021. #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: 2021-01-12 04:19-0500\n" +"Last-Translator: Yoshida Shouyou \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 "Automatically resize window to fit video" +msgstr "Ajuster automatiquement la fenêtre à la vidéo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Activer le thème sombre" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Activer les décorations fenêtre" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Utiliser les commandes flottantes en mode fenêtré" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Cacher automatiquement le pointeur en mode fenêtré" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"La vitesse de pointeur minimum à partir de laquelle les commandes flottantes" +" réapparaissent." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Taille de la zone morte dans laquelle le mouvement du pointeur n'entraînera " +"pas l'apparition des contrôles." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Utilisez les boutons de saut pour contrôler la liste de lecture" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" +"Permettre au sélecteur de fichiers de se souvenir de l'emplacement du " +"dernier fichier ouvert" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Toujours ouvrir une nouvelle fenêtre" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Options à activer dans mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Chemin du fichier de configuration de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Charger un fichier de configuration de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Chemin du fichier de configuration des raccourcis de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Charger un fichier de configuration des raccourcis de mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Activer le support MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Activer la prise en charge des touches multimédias" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Pré-rechercher les métadonnées" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorer les erreurs de lecture" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Inhiber l'inactivité de la session" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Largeur de la fenêtre" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Hauteur de la fenêtre" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Défini si la fenêtre est maximisée ou non" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volume du lecteur" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Relancer ou non la liste de lecture lorsque la fin est atteinte" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Largeur de la liste de lecture" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Afficher ou cacher les contrôles" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Afficher ou cacher la liste de lecture" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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:30 +msgid "The Celluloid Developers" +msgstr "Les développeurs de Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Cette version apporte les changement suivants :" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Permettre l'activation du menu contextuel lorsque la liste de lecture est " +"vide." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Empêcher le redimensionnement constant de la barre de recherche lié au " +"redimensionnement de l'étiquette d'horodatage lorsque sa valeur change." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Montrer une seule boîte de dialogue d'erreur quand un large nombre d'erreurs" +" se succèdent rapidement." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Ajout d'une entrée de menu pour ouvrir les répertoires." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Ajuste la position des éléments d'interface utilisateur des boîtes de " +"dialogue modales en mode non-CSD pour plus de consistance avec le mode CSD." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Ajout du support pour charger des pistes vidéo externes." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Permettre le basculement de la liste de lecture en mode aléatoire." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Permettre aux raccourcis clavier des flèches de fonctionner avec les flèches" +" du pavé numérique." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +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:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Ajuste la portée du bouton de volume en se basant sur la valeur de la " +"propriété volume-max." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Retenir l'état de maximisation de la fenêtre entre les sessions." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Retenir l'état des boucles entre les sessions." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implémentation de la recherche dans les listes de lecture." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" +"Mise à jour de la liste des raccourcis dans la boîte dialogue des raccourcis" +" clavier." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Gère correctement les guillemets et les séquences d'échappement dans les " +"options supplémentaires de mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Affiche le temps à la position du pointeur lors du survol de la barre de " +"recherche." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Rendre obsolète '--mpv-options'. Les options commençant avec '--mpv-' " +"peuvent être utilisées pour régler des options de mpv à la place. Par " +"example, activer '--mpv-vf=vflip' dans Celluloid revient à activer '--" +"vf=vflip' dans mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Ajout du support pour configurer une zone morte, une zone dans laquelle le " +"mouvement du pointeur n'entraînera pas l'apparition des contrôles." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Permettre le redimensionnement correct des fenêtres avec les affichages " +"HiDPI" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Ajout de la traduction finnoise par Kimmo Kujansuu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Ajout de la traduction slovène par @bertronika" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Ajout des traductions perses par @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Ajout des traductions ukrainiennes par @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Ajout du support du (dés)affichage des décorations de fenêtres grâce à " +"l'option mpv --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Ajout d'une entrée de menu pour ouvrir les disques" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Bloquer le masquage du curseur lorsque la fenêtre de volume est ouverte en " +"mode fenêtré" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Règle le problème de crash avec mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Changement de nom de projet en Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Ajout des traductions turques par @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Ajout des traductions Esperanto par @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +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:172 +msgid "Handle numpad keybindings" +msgstr "Support des touches de raccourcis numériques" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Support des touches de raccourcis unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +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:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Ajout d'une clef dconf pour contrôler la vitesse de pointeur à laquelle les " +"commandes flottantes sont montrées." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Ajout d'une option pour ignorer les erreurs de lecture" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +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:202 +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:205 +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:208 +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:211 +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:214 +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:230 +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:233 +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:237 +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:240 +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:243 +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:258 +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:262 +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:265 +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:268 +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:271 +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:285 +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:289 +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:293 +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: 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:495 +msgid "Playing" +msgstr "En cours de lecture" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Afficher la version" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Files d'attente" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Créer une nouvelle fenêtre" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPTIONS" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Définir le rôle de la fenêtre" + +#: src/celluloid-application.c:591 +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:362 +msgid "Pause" +msgstr "Pause" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Lecture" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Arret" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Avancer" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Reculer" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Chapitre suivant" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Chapitre précédant" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Lecture en boucle" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Liste de lecture aléatoire" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Plein écran" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Erreur" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Tous les fichiers" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Fichiers multimédias" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Fichiers audio" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Fichiers vidéo" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Fichiers image" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "Aucun disque trouvé" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Fichier" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Ouvrir..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Ouvrir _Dossier…" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Ouvrir un _emplacement..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Ouvrir un _disque..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Enregistrer la liste de lecture" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nouvelle fenêtre" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Quitter" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "É_diter" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Préférences" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Piste _vidéo" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "Piste _audio" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "So_us-titres" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Vue" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Afficher les _contrôles" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Afficher la _liste de lecture" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Plein écran" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Aide" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Raccourcis clavier" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_À propos de Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Ouvrir un _disque" + +#: 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:130 +msgid "Location:" +msgstr "Emplacement:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Annuler" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Ouvrir" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Impossible d'appliquer une ou plusieurs options à mpv." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Copier l'emplacement" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Supprimer" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Ajouter" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Ajouter _Dossier…" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Ajouter un _Emplacement" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "Lecture aléa_toire" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Lecture en boucle du _fichier" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Lecture en boucle de la liste de _lecture" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Liste de lecture" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "La liste de lecture est vide" + +#: 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:341 +msgid "mpv configuration file:" +msgstr "Fichier de configuration mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Fichier de configuration des raccourcis mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Options supplémentaires pour mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interface" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Fichiers de configuration" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Divers" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Greffons" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Enregistrer" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "Passer en mode recherche" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Aller au résultat suivant" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Aller au résultat précédent" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Quitter le mode recherche" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Parcourir les pistes audio" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Diminuer/augmenter le volume" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Muet" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Ajustez le délai audio de +/- 0,1 seconde" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Commutation de la visibilité des sous-titres" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Parcourir les sous-titres disponibles" + +#: src/celluloid-shortcuts-window.c:108 +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:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Commutation de la priorité de style des sous-titres SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Déplacer les sous titres en haut/bas" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Commutation du mode de compatibilité VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Parcourir les pistes vidéo" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Augmenter/diminuer la portée du panoramique et du balayage" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Prendre une capture d'écran" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Prendre une capture d'écran, sans les sous-titres" + +#: src/celluloid-shortcuts-window.c:118 +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:119 +msgid "Resize video to half its original size" +msgstr "Réduire de moitié la taille de la vidéo" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Redimensionner la vidéo à sa taille d'origine" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Doubler la taille de la vidéo" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Ajuster le contraste" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Ajuster la luminosité" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Ajuster le gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Ajuster la saturation" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Activer ou désactiver le désentrelaceur" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Remplacement du rapport d'aspect du cycle" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Interface de l'utilisateur" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Vidéo" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Audio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Sous-titre" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Lecture" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Navigation" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Chargement de la piste audio...." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Chargement de la piste vidéo..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Chargement des sous-titres...." + +#: src/celluloid-view.c:901 +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:1444 +msgid "Add Folder to Playlist" +msgstr "Ajouter un dossier à la liste de lecture" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Ouvrir le dossier" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Ajouter un fichier à la liste de lecture" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Ouvrir un fichier" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Ajouter l'emplacement à la liste de lecture" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Ouvrir un emplacement" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Enregistrer la liste de lecture" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Une interface GTK pour MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Harenome Ranaivorarivony Razanajato\n" +"JeanDeLaMouche\n" +"Erwan Amans \n" +"Yoshida Shouyou" diff --git a/po/hr.po b/po/hr.po new file mode 100644 index 0000000..372cc5f --- /dev/null +++ b/po/hr.po @@ -0,0 +1,1152 @@ +# gnome-mpv , 2019. #zanata +# gogo , 2019. #zanata +# gogo , 2020. #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: 2020-05-16 06:44-0400\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 "Automatically resize window to fit video" +msgstr "Automatski prilagodi prozor na video veličinu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Omogući tamnu temu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Omogući ukrase klijenta" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Koristi lebdeća upravljanja u prozorskom načinu prikaza" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +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:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Koristi tipke preskakanja za upravljanje popisom izvođenja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Uvijek otvori novi prozor" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Mogućnosti za prosljeđivanje u mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Putanja do mpv datoteke podešavanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Putanja do ulazne datoteke mpv podešavanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Omogući MPRIS podršku" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Omogući podršku medijskih tipki" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Preuzmi metapodatke" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Zanemari greške reprodukcije" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Širina prozora" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Visina prozora" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Treba li uvećati prozor" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Glasnoća zvuka reporduktora" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Treba li ponovno pokrenuti popis izvođenja kada je dosegnut kraj" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Širina popisa izvođenja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Treba li prikazati upravljanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Prikazuj ili ne prikazuj popis izvođenja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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:30 +msgid "The Celluloid Developers" +msgstr "Celuloid razvijatelji" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Ovo izdanje sadrži sljedeće promjene:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +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:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Prilagodba raspona tipke glasnoće zvuka temeljene na vrijednosti svojstva " +"najveće glasnoće zvuka" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Zadržavanje stanja uvećanog prozora po sesijama." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Zadržavanje stanja petlje po sesijama." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implemetirana je pretraga popisa izvođenja." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Nadopunjen je popis prečaca u dijalogu prečaca tipkovnice." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Ispravljeno je rukovanje s navodnicima i escape nizovima u dodatnim mpv " +"mogućnostima." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Prikaz vremena na položaju pokazivača pri prelasku preko trake pretrage." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Zastarjelo '--mpv-options'. Mogućnosti koje započinju s '--mpv-' umjesto se " +"mogu koristiti za postavljanje mpv mogućnosti. Na primjer, proslijeđivanje '" +"--mpv-vf=vflip' u Celluloid je ekvivalent proslijeđivanju '--vf=vflip' u " +"mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Dodana je mogućnost podešavanja mrtve zone, područje u kojemu pomicanje miša" +" neće pokrenuti prikazivanje kontrola." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Promjena veličine prozora na zaslonima visoke razlučivosti (HiDPI) sada radi" +" ispravno." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Finski prijevod je dodao Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Slovenski prijevod je dodao @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Perzijski prijevod je dodao @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Ukrajinski prijevod je dodao @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Dodana je podrška za prikaz/sakrivanje ukrasa prozora pomoću mogućnosti " +"--border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Dodana je stavka izbornika za otvaranje diskova" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Blokirano je automatsko sakrivanje pokazivača miša kada je skočni prozor " +"glasnoće zvuka otvoren u prozorskom načinu prikaza" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Popravljeno je rušenje s mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Preimenovanje projekta u Celuloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Turski prijevod je dodao @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Esperanto prijevod je dodao @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +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:172 +msgid "Handle numpad keybindings" +msgstr "Rukovanje brojčanim prečacima" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Rukovanje unikôdnim prečacima" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +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:181 +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:184 +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:199 +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:202 +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:205 +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:208 +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:211 +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:214 +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:230 +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:233 +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:237 +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:240 +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:243 +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:258 +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:262 +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:265 +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:268 +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:271 +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:285 +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:289 +msgid "The main window with CSD disabled" +msgstr "Glavni prozor s onemogućenim CSD-om" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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:495 +msgid "Playing" +msgstr "Reprodukcija" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Prikaži inačicu izdanja" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Dodaj u red čekanja" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Stvori novi prozor" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "MOGUĆNOSTI" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Postavi namjenu prozora" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ne povezuj s već pokrenutim primjerkom" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pauziraj" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Reproduciraj" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Zaustavi" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Premotaj unaprijed" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Premotaj unatrag" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Sljedeće poglavlje" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Prijašnje poglavlje" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Ponovi popis izvođenja" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Naizmjenični popis izvođenja" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Prozor ili cijeli zaslon" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Greška" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Dodaj datoteke" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Medijske datoteke" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Glazbene datoteke" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Video datoteke" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Slikovne datoteke" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "Nema pronađenog diska" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Datoteka" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Otvori…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Otvori _lokaciju…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Otvori _disk…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Spremi popis izvođenja" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Novi prozor" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Zatvori" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Uredi" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Osobitosti" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Video zapis" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Zvučni zapis" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Z_apis podnaslova" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Pogled" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Uklj/Isklj _upravljanja" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Uklj/Isklj popis _izvođenja" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Cjelozaslonski prikaz" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Pomoć" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Prečaci tipkovnice" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_O Celuloidu" + +#: src/celluloid-menu.c:321 +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:130 +msgid "Location:" +msgstr "Lokacija:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Odustani" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Otvori" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Neuspjela primjena jedne ili više MPV mogućnosti." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopiraj lokaciju" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Ukloni" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Dodaj…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Dodaj _lokaciju…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Naizmjenično" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Ponovi _datoteku" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Ponovi _popis izvođenja" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Popis izvođenja" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Popis izvođenja je prazan" + +#: 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:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Sučelje" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Datoteke podešavanja" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Ostalo" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Priključci" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Spremi" + +#: src/celluloid-preferences-dialog.c:432 +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 napretka 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 "Uklj/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 "Enter search mode" +msgstr "Pokreni način pretrage" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Idi na sljedeće podudaranje" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Idi na prijašnje podudaranje" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Zatvori način pretrage" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Odaberi/Prebacuj zvučne zapise" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Pojačaj/Smanji glasnoću zvuka" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Utišaj ili uključi zvuk" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Prilagodi odgodu zvuka za +/- sekundi" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Uklj/Isklj podnaslov" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Odaberi/Prebacuj podnaslove" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Prilagodi odgodu podnaslova za +/- sekundi" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Uklj/Isklj obilaženje SSA/ASS izgleda podnaslova" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Pomakni podnaslove gore/dolje" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Uklj/Isklj način kompatibilnosti VSFilter omjera" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Odaberi/Prebacuj video zapise" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Povećaj/Smanji raspon skeniranja-obrezivanja" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Uslikaj zaslon" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Uslikaj zaslon bez podnaslova" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Uslikaj zaslon kako je prikazan u prozoru" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Promijeni veličinu videa na polovicu izvorne veličine" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Promijeni veličinu videa na izvornu veličinu" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Promijeni veličinu videa na dvostruko od izvorne veličine" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Prilagodi kontrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Prilagodi svjetlinu" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Prilagodi gamu" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Prilagodi zasićenje" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Aktiviraj ili deaktiviraj raspletanje" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Odaberi/Prebacuj omjer prikaza" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Korisničko sučelje" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Zvuk" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Podnaslov" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Reprodukcija" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Premotavanje" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Učitaj zvučni zapis…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Učitaj video zapis…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Učitaj zapis podnaslova…" + +#: src/celluloid-view.c:901 +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:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Dodaj datoteku na popis izvođenja" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Otvori datoteku" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Dodaj lokaciju na popis izvođenja" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Otvori lokaciju" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Spremi popis izvođenja" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK grafičko korisničko sučelje za mpv" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Launchpad Contributions:\n" +" gogo https://launchpad.net/~trebelnik-stefina" diff --git a/po/hu.po b/po/hu.po new file mode 100644 index 0000000..15e6ea6 --- /dev/null +++ b/po/hu.po @@ -0,0 +1,1118 @@ +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #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: 2020-06-23 10:40-0400\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 "Automatically resize window to fit video" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Sötét téma engedélyezése" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Kliensoldali díszítések engedélyezése" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Az mpv-nek átadandó opciók" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Az mpv konfigurációs fájl útvonala" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +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:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Az ablak szélessége" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Az ablak magassága" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "A lejátszó hangereje" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "A lejátszási lista szélessége" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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:30 +msgid "The Celluloid Developers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +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:289 +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:293 +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: 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:495 +msgid "Playing" +msgstr "" + +#: src/celluloid-application.c:551 +#, fuzzy +msgid "Show release version" +msgstr "Kiadási verzió megjelenítése" + +#: src/celluloid-application.c:559 +#, fuzzy +msgid "Enqueue" +msgstr "Sorba állítás" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ne csatlakozzon egy már futó példányhoz" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Szünet" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Lejátszás" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Megállítás" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Előretekerés" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Visszatekerés" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Következő fejezet" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Előző fejezet" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Átváltás teljes képernyőre" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Hiba" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Fájl" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "Lejátszási lista _mentése" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "" + +#: src/celluloid-menu.c:242 +#, fuzzy +msgid "_Quit" +msgstr "Kilépés" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Szerkesztés" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Beállítások" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Videósáv" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Hangsáv" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "F_eliratsáv" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Nézet" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Vezérlők be-/kikapcsolása" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Lejátszási lista be-/kikapcsolása" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Teljes képernyő" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Súgó" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Billentyűkombinációk" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "" + +#: src/celluloid-menu.c:321 +#, 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:130 +msgid "Location:" +msgstr "Hely:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Mégse" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Megnyitás" + +#: src/celluloid-player.c:550 +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:786 +msgid "_Copy Location" +msgstr "" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Hozzáadás..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "_Hely hozzáadása..." + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Lejátszási lista" + +#: src/celluloid-playlist-widget.c:943 +#, fuzzy +msgid "Playlist is empty" +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:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Mentés" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Váltás a hangsávok között" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Hangerő csökkentése/növelése" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Némítás be-/kikapcsolása" + +#: src/celluloid-shortcuts-window.c:103 +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:106 +msgid "Toggle subtitle visibility" +msgstr "Felirat láthatóságának be-/kikapcsolása" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Váltás az elérhető feliratok között" + +#: src/celluloid-shortcuts-window.c:108 +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:109 +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:110 +msgid "Move subtitles up/down" +msgstr "Feliratok mozgatása fel/le" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "VSFilter képarány-kompatibilitási mód be-/kikapcsolása" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Váltás a videósávok között" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Pan-and-scan tartomány csökkentése/növelése" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Képernyőkép készítése" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Képernyőkép készítése feliratok nélkül" + +#: src/celluloid-shortcuts-window.c:118 +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:119 +msgid "Resize video to half its original size" +msgstr "Videó átméretezése az eredeti méret felére" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Videó átméretezése az eredeti méretre" + +#: src/celluloid-shortcuts-window.c:121 +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:122 +msgid "Adjust contrast" +msgstr "Kontraszt beállítása" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Világosság beállítása" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Gamma beállítása" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Telítettség beállítása" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Váltottsorosság-mentesítés be-/kikapcsolása" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Felhasználói felület" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Videó" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Hang" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Felirat" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Lejátszás" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Tekerés" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Fájl hozzáadása a lejátszási listához" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Fájl megnyitása" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Hely hozzáadása a lejátszási listához" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Hely megnyitása" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Lejátszási lista mentése" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Egy GTK felület az MPV-hez" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" diff --git a/po/is.po b/po/is.po new file mode 100644 index 0000000..63304b6 --- /dev/null +++ b/po/is.po @@ -0,0 +1,1103 @@ +# Sveinn í Felli , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: celluloid\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-10-09 22:16+0700\n" +"PO-Revision-Date: 2020-11-13 11:57-0500\n" +"Last-Translator: Sveinn í Felli \n" +"Language-Team: Icelandic \n" +"Language: is\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%10!=1 || n%100==11)\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 "Hvort stillingar hafi þegar verið yfirfærðar úr fyrri útgáfu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Aðlaga stærð gluggans sjálfvirkt að myndmerki" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Virkja dökkt þema" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Virkja gluggaskreytingar biðlara (CSD)" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Nota fljótandi stjórntæki í gluggaham" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Fela músarbendil sjálfvirkt í gluggaham" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "Lágmarkshraði bendils til að fljótandi stjórntæki birtist." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Láta skráaval muna staðsetningu síðast notuðu skrár" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Alltaf opna nýjan glugga" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Viðföng til að gefa til mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Slóð að mpv stillingaskrá" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Hlaða inn stillingaskrá mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Slóð að inntaksstillingaskrá mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Hlaða inn inntaksstillingaskrá mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Virkja stuðning við MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Virkja stuðning við margmiðlunarlykla" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Sækja lýsigögn fyrirfram" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Hunsa villur í afspilun" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Koma í veg fyrir að setan verði aðgerðalaus" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Breidd gluggans" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Hæð gluggans" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Hvort glugginn er hámarkaður eða ekki" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Hljóðstyrkur spilarans" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Hvort eigi að endurtaka þegar enda spilunarlistans er náð" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Breidd spilunarlistans" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Birta eða fela stjórntækin" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Birta eða fela spilunarlistann" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "Slóð á síðast notaða möppu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+ viðmót fyrir 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 "Eiginleikar:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Draga og sleppa á spilunarlista" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Hleð inn utanaðkomandi mpv-stillingaskrám" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus viðmót" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Celluloid þróunarteymið" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Þessi útgáfa inniheldur eftirfarandi breytingar:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Bætt við finnskri þýðingu eftir Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Bætt við slóvenskri þýðingu eftir @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Bætt við persneskri þýðingu eftir @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Bætt við úkraínskri þýðingu eftir @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Bætt við valmyndarfærslu til að opna diska" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Bætt við tyrkneskri þýðingu eftir @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Bætt við esperantó-þýðingu eftir @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Aðalglugginn sýnir virkni forritsins" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Aðalglugginn með CSD óvirkt" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Aðalglugginn með spilunarlistann opinn" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Margmiðlunarspilari" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Horfðu á kvikmyndir og myndskeið" + +#. 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 "" +"Myndskeið;Vídeó;Kvikmynd;Filma;Þættir;Spilari;DVD;TV;Diskur;albúm;tónlist;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nýr gluggi" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Spila" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Sýna útgáfunúmer" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Setja í biðröð" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Búa til nýja glugga" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "VALKOSTIR" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Setja hlutverk glugga" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ekki tengjast við tilvik sem þegar er í gangi" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Í bið" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Spila" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Stöðva" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Spóla áfram" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Spóla til baka" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Næsti kafli" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Fyrri kafli" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Víxla endurtekningu spilunarlista af/á" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Stokka spilunarlista" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Víxla skjáfylli af/á" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Villa" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Allar skrár" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Margmiðlunarskrár" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Hljóðskrár" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Myndskeiðasskrár" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Myndskrár" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Skjátextaskrár" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Ekkert" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Óþekkt" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "H_laða inn utanaðkomandi…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Enginn diskur fannst" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Skrá" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Opna…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Opna _möppu...…" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Opna staðsetnin_gu…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Opna _disk…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "Vi_sta spilunarlista" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nýr gluggi" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Hætta" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "Br_eyta" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Kjörstillingar" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Mynds_por" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Hljóðspor" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Skjátextasp_or" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "S_koða" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Ví_xla stýringum af/á" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Ví_xla spilunarlista af/á" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "Skjá_fylli" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Hjálp" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "Flýtily_klar" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Um Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Opna _disk" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Staðsetning:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Hætta við" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Opna" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Afrita staðsetningu" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "Fja_rlægja" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "Bæt_a við…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Bæta við _möppu…" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Bæta við staðsetnin_gu…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Stokka" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Endurtaka s_krá" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Endurtaka s_pilunarlista" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Lagalisti" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Spilunarlisti er tómur" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Bæta við forritsviðbót" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua-viðbætur" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript-viðbætur" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C-viðbætur" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Mistókst að afrita skrá úr '%s' yfir í '%s'. Ástæða: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Engar viðbætur fundust" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Fjarlægja" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Ertu viss um að þú viljir fjarlægja þessa skriftu? Það er ekki hægt að taka " +"þetta aftur." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Mistókst að eyða skránni '%s'. Ástæða: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "Stillingaskrá mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Inntaksstillingaskrá mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Fleiri mpv-valkostir:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Viðmót" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Stillingaskrár" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Ýmislegt" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Viðbætur" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "Vi_sta" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Kjörstillingar" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Opna skrá" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Opna staðsetningu" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Bæta skrá á spilunarlista" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Bæta staðsetningu á spilunarlista" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Birta kjörstillingaglugga" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Víxla stýringum af/á" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Víxla spilunarlista af/á" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Víxla heilskjásham af/á" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Hætta í skjáfylli" + +#: 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 "Birta heiti skráa í OSD-stjórntexta" + +#: 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 "Leita afturábak/áfram um 5 sekúndur" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Leita nákvæmt afturábak/áfram um 1 sekúndu" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Leita afturábak/áfram um 1 mínútu" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Leita nákvæmt afturábak/áfram um 5 sekúndur" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Fara í fyrri/næsta skjátexta" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Fara afturábak/áfram um einn ramma" + +#: 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 "Minnka/auka afspilunarhraða um 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Helminga/tvöfalda núverandi afpilunarhraða" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Endurstilla afspilunarhraða á venjulegan" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Fara afturábak/áfram í spilunarlistanum" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Fjarlægja valið atriði úr spilunarlista" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Vista spilunarlista" + +#: 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 "Gera hlé eða halda áfram" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Hætta" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Vista núverandi staðsetningu í afspilun og hætta" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Fara í leitarham" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Hoppa í næstu samsvörun" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Hoppa í fyrri samsvörun" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Fara út úr leitarham" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Fletta í gegnum hljóðspor" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Minnka/auka hljóðstyrk" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Þagga eða kveikja á hljóði" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Aðlaga töf hljóðs um +/- 0.1 sekúndur" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Víxla sýnileika skjátexta af/á" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Fletta í gegnum tiltæka skjátexta" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Aðlaga töf skjátexta um +/- 0.1 sekúndur" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Færa skjátexta upp/niður" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Fletta í gegnum myndmerkisspor" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Taka skjámynd" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Taka skjámynd án skjátexta" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Taka skjámynd eins og glugginn sýnir" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Aðlaga stærð í helming myndmerkis" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Aðlaga stærð að upprunalegri stærð myndmerkis" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Aðlaga stærð í tvöfalda stærð myndmerkis" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Aðlaga birtuskil" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Aðlaga birtustig" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Aðlaga litróf" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Aðlaga litmettun" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Virkja eða afvirkja affléttun" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Notandaviðmót" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Myndmerki" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Hljóð" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Texti" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Afspilun" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Leita" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Hlaða inn hljóðspori…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Hlaða inn myndskeiðspori…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Hlaða inn skjátextaspori…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Bæta möppu á spilunarlista" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Opna möppu..." + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Bæta skrá á spilunarlista" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Opna skrá" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Bæta staðsetningu á spilunarlista" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Opna staðsetningu" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Vista spilunarlista" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK viðmót fyrir mpv" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Sveinn í Felli" diff --git a/po/it.po b/po/it.po new file mode 100644 index 0000000..d48bef9 --- /dev/null +++ b/po/it.po @@ -0,0 +1,1162 @@ +# gnome-mpv , 2019. #zanata +#,,,,zjf , 2020. #zanata +# gnome-mpv , 2020. #zanata +# asdfghdsadfg , 2021. #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: 2021-02-11 01:36-0500\n" +"Last-Translator: asdfghdsadfg \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 "" +"Determina se la migrazione delle preferenze da una versione precedente è " +"stata già effettuata" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Ridimensiona automaticamente la finestra per adattarla al video" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Attiva tema scuro" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Attiva le decorazioni client-side" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Usa i controlli mobili in modalità finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Nascondi automaticamente il cursore del mouse in modalità finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"La velocità minima del cursore alla quale saranno mostrati i controlli a " +"schermo." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Dimensione della zona morta in cui il movimento del cursore non comporterà " +"la visualizzazione dei controlli." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Usa i pulsanti di salto per controllare la playlist" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" +"Fai in modo che selettore di file ricordi la posizione dell'ultimo file" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Apri sempre una nuova finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opzioni da inserire in mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Percorso del file di configurazione di mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Carica il file di configurazione mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Percorso del file delle configurazioni di input di mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Carica il file delle configurazione di input di mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Abilita il supporto MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Abilita il supporto ai tasti multimediali" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Precarica i metadati" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignora gli errori di riproduzione" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Inibisci l'inativazione della sessione" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Larghezza della finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Altezza della finestra" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Determina se la finestra è massimizzata" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volume del player" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" +"Determina se eseguire la ripetizione quando si raggiunge il termine della " +"playlist" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Larghezza della playlist" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Determina se mostrare i controlli" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Determina se mostrare la playlist" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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 "" +"Celluloid è un semplice lettore multimediale in grado di riprodurre " +"praticamente tutti i formati audio e video. Supporta playlist e controlli " +"MPRIS2 multimediali. Il design di Celluloid segue le linee guida GNOME Human" +" Interface, ma può anche essere adattato per altri sistemi che non usano " +"decorazioni lato client (CSD). Si basa sulle librerie libmpv e GTK." + +#: 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 "Trascinamento della playlist" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Caricamento di file di configurazione esterni 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:30 +msgid "The Celluloid Developers" +msgstr "Gli sviluppatori di Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Questa versione contiene le seguenti modifiche:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Rende possibile l'attivazione del menu contestuale quando la playlist è " +"vuota." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Prevenzione del ridimensionamento costante della barra di ricerca a causa " +"del ridimensionamento dell'etichetta timestamp quando il suo valore cambia." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Mostra solo una finestra di dialogo di errore quando si verifica un numero " +"elevato di errori in rapida successione." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Aggiunta una voce al menu per aprire le cartelle." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Regola la posizione degli elementi della UI delle finestre di dialogo in " +"modalità non CSD per essere più coerente con la modalità CSD." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Aggiunto il supporto per il caricamento di tracce video esterne." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Resa attivabile la riproduzione in ordine casuale delle playlist." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Fa in modo che le associazioni dei tasti freccia funzionino con i tasti " +"freccia sul tastierino numerico." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"Questa lista è incompleta. Consultare git log per il changelog completo." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Regolazione dell'intervallo del pulsante del volume basata sul valore della " +"proprietà volume-max." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" +"Ricorda lo stato dalla massimizzazione della finestra da una sessione " +"all'altra." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Ricorda lo stato della ripetizione da una sessione all'altra." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementata la ricerca nella playlist." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" +"Aggiornata la lista della scorciatoie nell'apposita finestra di dialogo." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Gestione corretta delle virgolette e delle esclusioni nelle opzioni di mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Mostra il tempo quando il cursore si sovrappone alla barra di selezione." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"'--mpv-options' obsoleto. Le opzioni che iniziano con '--mpv-' possono " +"essere usate come opzioni di mpv. Per esempio, '--mpv-vf=vflip' in Celluloid" +" è l'equivalente di '--vf=vflip' in mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Aggiunto supporto alla dead zone, un'area nella quale i movimenti del " +"cursore non invocheranno i controlli a schermo." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Corretta la grandezza della finestra sugli schermi HiDPI." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Aggiunta traduzione finlandese di Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Aggiunta traduzione slovena di @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Aggiunta traduzione persiana di @danialbehzadi." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Aggiunta traduzione ucraina di @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Aggiunto supporto per l'abilitazione delle decorazioni delle finestre " +"tramite l'opzione di mpv --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Aggiunta voce del menù per l'apertura di dischi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Blocco della disabilitazione del cursore quando il popup del volume è aperto" +" in modalità finestra" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Risolto il crash con mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Progetto rinominato in Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Aggiunta traduzione turca di @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Aggiunta traduzione esperanto di @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migrazione da opengl-cb alla nuova API di rendering" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Gestione comandi da tastierino numerico" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Gestione comandi unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Inoltro delle chiavi di eventi multimediali a mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Aggiunta chiave dconf per il controllo della velocità del cursore in cui i " +"controlli sono mostrati a schermo" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Aggiunta opzione per sopprimere gli errori di riproduzione" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Divisione della scheda Generale nella finestra delle preferenze" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Migliorato il comportamento della playlist con i tiling window manager" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Trasferite le voci dell'app menù nel menù primario" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Utilizzo di connessioni DBus MPRIS separate per ogni finestra" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Aggiunto supporto per la proprietà LoopStatus di MPRIS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Aggiunta l'opzione --mpv-options per impostare opzioni di mpv dalla riga di " +"comando" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Cartella predefinita degli screenshot impostata a XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Migliorata la gestione di --window-scale, --autofit, --autofit-larger, e " +"--autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Aggiunta opzione da riga di comando per l'impostazione di WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "Aggiunta voce menù per la rimozione degli elementi della playlist" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Aggiunta voce menù per copiare la posizione degli elementi della playlist" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Aggiunta opzione per fare in modo che i pulsanti di salto cambino gli " +"elementi della playlist piuttosto che i capitoli" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Il selettore dei file ora accetta anche posizioni non-locali" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Aggiunta una voce nel menù clic-destro per ripetere un singolo file" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Gestione degli eventi di modifica delle proprietà per fullscreen e window-" +"scale" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Aggiunta opzione per nascondere automaticamente il cursore nella modalità " +"finestra" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "La finestra principale in funzione" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +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:293 +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 "Riproduttore multimediale" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Riproduci film e video" + +#. 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;Clip;Serie;Player;DVD;TV;Disco;Album;Musica;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nuova Finestra" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "In riproduzione" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Mostra versione release" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Accoda" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Apri una nuova finestra" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPZIONI" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Imposta il ruolo della finestra" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Non connettere a un'istanza già in esecuzione" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pausa" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Riproduci" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Ferma" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Vai avanti" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Torna indietro" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Capitolo successivo" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Capitolo precedente" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Ripetizione della playlist" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Riordina la playlist" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Attiva/disattiva schermo intero" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Errore" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Tutti i file" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "File multimediali" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "File audio" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "File video" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "File immagine" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "File sottotitoli" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Nessuna" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Sconosciuta" + +#: 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:207 +msgid "No disc found" +msgstr "Nessun disco trovato" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_File" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Apri…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Apri _cartella..." + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Apri _posizione…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Apri _disco…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Salva playlist" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nuova finestra" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Esci" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Modifica" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Preferenze" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Traccia _video" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "Traccia _audio" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Traccia s_ottotitoli" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Visualizza" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Visualizza/nascondi i _controlli" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Visualizza/nascondi la _playlist" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "Schermo _intero" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Aiuto" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "Scorciatoie da _tastiera" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "I_nformazioni su Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Apri _disco" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "La riproduzione si è interrotta in modo anomalo. Motivo: %s" + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Posizione:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Annulla" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Apri" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Impossibile applicare una o più opzioni di MPV" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Copia posizione" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Rimuovi" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "A_ggiungi…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Aggiungi _cartella..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Aggiungi _posizione…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "Riproduzione cas_uale" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Ripeti il _file" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Ripeti la _playlist" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Playlist" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "La playlist è vuota" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Aggiungi plugin" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Plugin in Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "Plugin in JavaScript" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "Plugin in C" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Impossibile copiare il 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 "Impossibile cancellare il file '%s'. Motivo: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "file di configurazione di mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "file di configurazione degli input di mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Opzioni extra di mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interfaccia" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "File di configurazione" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Altre opzioni" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Plugin" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Salva" + +#: src/celluloid-preferences-dialog.c:432 +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 "Aggiungi file alla playlist" + +#: 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 "Visualizza/nascondi i controlli" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Visualizza/nascondi la playlist" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Attiva/disattiva la modalità a schermo intero" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Esci dalla modalità a schermo intero" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Attiva/disattiva la visualizzazione del tempo in sovrimpressione" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Mostra il nome del file in sovrimpressione" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Mostra la durata, il tempo trascorso e mancante in sovrimpressione" + +#: 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" + +#: 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" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Vai ai sottotitoli precedenti/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 precedente/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 la voce selezionata 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 la ripetizione fra i punti A-B" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Attiva/disattiva la ripetizione continua" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pausa o riproduci" + +#: 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 "Enter search mode" +msgstr "Entra nella modalità di ricerca" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Vai alla corrispondenza successiva" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Vai alla corrispondenza precedente" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Esci dalla modalità di ricerca" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Scegli fra le tracce audio disponibili" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Diminuisci/aumenta il volume" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Attiva/disattiva l'audio" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Regola il ritardo dell'audio di +/- 0.1 secondi" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Attiva/disattiva la visualizzazione dei sottotitoli" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Scegli fra i sottotitoli disponibili" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Regola il ritardo dei sottotitoli di +/- 0.1 secondi" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Attiva/disattiva lo stile dei sottotitoli SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Sposta i sottotitoli su/giù" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Attiva/disattiva la modalità di compatibilità per VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Scegli fra le tracce video disponibili" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Diminuisci/Aumenta la grandezza del pan-and-scan" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Fai uno screenshot" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Fai uno screenshot, senza sottotitoli" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Fai uno screenshot, così come è la finestra" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Dimezza la dimensione originale del video" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Ripristina la dimensione originale del video" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Raddoppia la dimensione originale del video" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Modifica contrasto" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Modifica luminosità" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Modifica gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Modifica saturazione" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Attiva o disattiva il deinterlacciatore" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Scegli fra le proporzioni di aspetto disponibili" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Interfaccia Utente" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Audio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Sottotitoli" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Riproduzione" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Ricerca" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Carica traccia audio…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Carica traccia video…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Carica traccia sottotitoli…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"L'abilitazione o la disabilitazione delle decorazioni client-side richiede " +"un riavvio per avere effetto." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Aggiungi cartella alla playlist" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Apri cartella" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Aggiungi file alla playlist" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Apri file" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Aggiungi posizione alla playlist" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Apri posizione" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Salva playlist" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Un frontend in GTK per MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Giusy Margarita" diff --git a/po/ja.po b/po/ja.po new file mode 100644 index 0000000..fce06aa --- /dev/null +++ b/po/ja.po @@ -0,0 +1,1154 @@ +# 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 +# gnome-mpv , 2020. #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: 2020-06-23 10:48-0400\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 +msgid "Automatically resize window to fit video" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "暗いテーマを有効にする" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "CSDを有効にする" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +#, fuzzy +msgid "Options to pass to mpv" +msgstr "mpvに渡すオプション" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +#, fuzzy +msgid "Path to mpv configuration file" +msgstr "MPV設定ファイル" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +#, fuzzy +msgid "Path to mpv input configuration file" +msgstr "MPV入力設定ファイル" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +#, fuzzy +msgid "Width of the window" +msgstr "ウィンドウの横幅" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +#, fuzzy +msgid "Height of the window" +msgstr "ウィンドウの高さ" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +#, fuzzy +msgid "Volume of player" +msgstr "音量" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +#, fuzzy +msgid "Width of the playlist" +msgstr "プレイリストの幅" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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:30 +msgid "The Celluloid Developers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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:495 +#, fuzzy +msgid "Playing" +msgstr "プレイ中" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "" + +#: src/celluloid-application.c:567 +#, fuzzy +msgid "Create a new window" +msgstr "新しいウィンドウを開きます" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "" + +#: src/celluloid-control-box.c:362 +#, fuzzy +msgid "Pause" +msgstr "一時停止" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +#, fuzzy +msgid "Play" +msgstr "プレー" + +#: src/celluloid-control-box.c:568 +#, fuzzy +msgid "Stop" +msgstr "停止" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +#, fuzzy +msgid "Toggle Fullscreen" +msgstr "全面表示を切換える" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +#, fuzzy +msgid "Error" +msgstr "エラー" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +#, fuzzy +msgid "All Files" +msgstr "全てのファイル" + +#: src/celluloid-file-chooser.c:147 +#, fuzzy +msgid "Media Files" +msgstr "メディア" + +#: src/celluloid-file-chooser.c:158 +#, fuzzy +msgid "Audio Files" +msgstr "音声" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "動画" + +#: src/celluloid-file-chooser.c:174 +#, fuzzy +msgid "Image Files" +msgstr "画像" + +#: src/celluloid-file-chooser.c:184 +#, 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:207 +msgid "No disc found" +msgstr "" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "ファイル(_F)" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "プレイリストの保存(_S)" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +#, fuzzy +msgid "_New Window" +msgstr "新しいウィンドウ" + +#: src/celluloid-menu.c:242 +#, fuzzy +msgid "_Quit" +msgstr "終了" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "編集(_E)" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "設定(_P)" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +#, fuzzy +msgid "_Video Track" +msgstr "ビデオトラック(_V)" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +#, fuzzy +msgid "_Audio Track" +msgstr "音声トラック(_A)" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +#, fuzzy +msgid "S_ubtitle Track" +msgstr "字幕トラック(_S)" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "表示(_V)" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "プレイリストの表示・非表示(_T)" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "全画面表示(_F)" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "ヘルプ(_H)" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +#, fuzzy +msgid "_Keyboard Shortcuts" +msgstr "ショートカット" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "" + +#: src/celluloid-menu.c:321 +#, 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:130 +msgid "Location:" +msgstr "場所:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "キャンセル(_C)" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "開く(_O)" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "プレイリスト" + +#: src/celluloid-playlist-widget.c:943 +#, fuzzy +msgid "Playlist is empty" +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:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "保存(_S)" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "" + +#: src/celluloid-shortcuts-window.c:116 +#, fuzzy +msgid "Take a screenshot" +msgstr "スクリーンショットを撮る" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:130 +#, fuzzy +msgid "User Interface" +msgstr "ユーザーインターフェース" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "ビデオ" + +#: src/celluloid-shortcuts-window.c:132 +#, fuzzy +msgid "Audio" +msgstr "オーディオ" + +#: src/celluloid-shortcuts-window.c:133 +#, fuzzy +msgid "Subtitle" +msgstr "字幕" + +#: src/celluloid-shortcuts-window.c:134 +#, fuzzy +msgid "Playback" +msgstr "プレイバック" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "" + +#: src/celluloid-view.c:728 +#, fuzzy +msgid "Load Audio Track…" +msgstr "音声トラックをロードする" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +#, fuzzy +msgid "Load Subtitle Track…" +msgstr "字幕をロードする" + +#: src/celluloid-view.c:901 +#, fuzzy +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "CSDの有効・無効は再起動が必要です。" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "プレイリストの表示・非表示" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "ファイルを開く" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "場所を開く" + +#: src/celluloid-view.c:1532 +#, fuzzy +msgid "Save Playlist" +msgstr "_プレイリストの保存" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "MPVのGTKフロントエンド" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Tista" diff --git a/po/meson.build b/po/meson.build new file mode 100644 index 0000000..d2b9b3b --- /dev/null +++ b/po/meson.build @@ -0,0 +1,20 @@ +i18n.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 diff --git a/po/nl.po b/po/nl.po new file mode 100644 index 0000000..7688e88 --- /dev/null +++ b/po/nl.po @@ -0,0 +1,1138 @@ +# gnome-mpv , 2019. #zanata +# Jan Wesselink , 2020. #zanata +# gnome-mpv , 2020. #zanata +# Jan Wesselink , 2021. #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: 2021-02-07 02:34-0500\n" +"Last-Translator: Jan Wesselink \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 +msgid "" +"Whether the settings has already been migrated from the previous version" +msgstr "Of de instellingen al gemigreerd zijn uit de vorige versie" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Automatisch aanpassen van venster aan video" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Schakel donker thema in" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Schakel client-side decoratie in" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Gebruik zwevenden bedieningselementen in venstermodus" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Automatisch verbergen van muisaanwijzer in venstermodus" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"De minimale cursorsnelheid waarbij de zwevende bedieningselementen weer " +"zichtbaar zullen worden." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Grootte van de dode zone die voorkomt dat bij muisbeweging de bediening " +"zichtbaar wordt. " + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Gebruik skip knoppen voor bediening van afspeellijst" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Laat de bestandskiezer de laatste bestandslocatie onthouden" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Altijd een nieuw venster openen" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opties om door te geven aan mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Pad naar mpv configuratiebestand" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Laad mpv configuratiebestand" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Pad naar mpv input configuratie bestand" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Laad mpv input configuratiebestand" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Schakel MPRIS support in" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Schakel media keys support in" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Haal metadata van te voren op" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Negeer afspeelfouten" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Blokkeer het inactiveren van de sessie" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Breedte van het venster" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Hoogte van het venster" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Of het venster wel of niet gemaximaliseerd is" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volume van speler" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Wel of niet herhalen als het einde van de afspeellijst is bereikt " + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Breedte van de afspeellijst" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Geef de bediening wel of niet weer" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Geef de afspeellijst wel of niet weer" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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 "" +"Celluloid is een eenvoudige mediaspeler die nagenoeg alle video en " +"audioformaten kan afspelen. Het ondersteunt afspeellijsten en MPRIS2 " +"mediaspeler bediening. Het ontwerp van Celluloid volgt de GNOME Human " +"Interface richtlijnen, maar kan ook worden aangepast voor andere systemen " +"die geen client-side-decortions gebruiken. Het is gebaseerd op de mpv " +"bibliotheek en op GTK. " + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Functies:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Sleep en plaats 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 "MPRIS2 D-Bus interface" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "De Celluloid ontwikkelaars" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Deze uitgave bevat de volgende aanpassingen:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Maak het mogelijk om contextmenu te activeren als afspeellijst leeg is." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Voeg menu-item toe om mappen te openen." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Voeg ondersteuning to voor het laden van externe videofragmenten." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Maak willekeurig afspelen van afspeellijst schakelbaar." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Deze lijst is onvolledig. Zie git log voor volledige changelog." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Stel het bereik van de volumeknop in op basis van de volume-max " +"eigenschappen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Behoud maximale venstergrootte tussen verschillende sessies" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Behoud herhaalinstelling tussen verschillende sessies" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementeer zoeken in afspeellijst" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Werk de lijst met sneltoetsen bij in het dialoogvenster Sneltoetsen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "Behandel citaten en escape-reeksen correct in extra mpv-opties" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "Geef de tijd weer op de cursorpositie wanneer u de zoekbalk beweegt" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Beëindig '--mpv-opties'. Opties die beginnen met '--mpv-' kunnen in plaats " +"daarvan worden gebruikt om mpv-opties in te stellen. Het doorgeven van '--" +"mpv-vf = vflip' aan Celluloid is bijvoorbeeld gelijk aan het doorgeven van '" +"--vf = vflip' aan mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Voeg ondersteuning toe voor het configureren van de dode zone, een gebied " +"waarin muisbewegingen geen bediening zullen veroorzaken" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Zorg ervoor dat venstergrootte correct werkt met HiDPI-schermen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Finse vertaling toegevoegd door Kimmo Kujansuu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Sloveense vertaling toevoegd door @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Perzische vertaling toegevoegd door @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Oekraïense vertaling toegevoegd door @ vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Ondersteuning toevoegen voor het weergeven / verbergen van vensterdecoraties" +" met behulp van de mpv-optie --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Menu-item toevoegen voor het openen van schijven" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Blokkeer cursor autohide wanneer volume pop-up is geopend in venstermodus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Fix crash met mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Hernoem project naar Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Turkse vertaling toegevoegddoor @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Esperanto-vertaling toegevoegd door @ F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migreer van opengl-cb naar de nieuwe render-API" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Verwerk numpad sneltoetsen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Verwerk unicode sneltoetsen" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Stuur mediasleutelgebeurtenissen door naar mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Voeg een dconf-sleutel toe voor het instellen van de cursorsnelheid waarbij " +"bedieningselementen zichtbaar zullen worden" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Optie toevoegen om afspeelfouten te onderdrukken" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Verdeel het tabblad Algemeen in het voorkeurenvenster" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Verbeter het gedrag bij het wisselen van afspeellijst onder tegelende " +"vensterbeheerders" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Verplaats app-menu-items naar het primaire menu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Gebruik voor elk venster een afzonderlijke MPRIS DBus-verbinding" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Ondersteuning toevoegen voor MPRIS-eigenschap LoopStatus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Optie --mpv-opties toevoegen voor het instellen van willekeurige mpv-opties " +"vanaf de opdrachtregel" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Stel de standaard schermafdruk-map in op XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Verbeter de afhandeling van --window-schaal, --autofit, --autofit-groter en " +"--autofit-kleiner" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +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:289 +msgid "The main window with CSD disabled" +msgstr "Het hoofdvenster met CSD uitgeschakeld" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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 "Nieuw venster" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Afspelen" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Toon release versie" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Voeg toe aan de wachtrij" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Creëer een nieuw venster" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "Opties" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Verbind niet met instantie die al draait" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pauze" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Speel af" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Stop" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Voorwaarts" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Achterwaarts" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Volgend Hoofdstuk" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Vorig Hoofdstuk" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Herhaal afspeellijst" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Willekeurig afspelen afspeellijst" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Schakel naar volledig scherm" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Fout" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Alle bestanden" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Media bestanden" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Audio bestanden" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Video bestanden" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Afbeeldingen" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Ondertiteling" + +#: 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:207 +msgid "No disc found" +msgstr "Geen schijf gevonden" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Bestand" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Open…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Open _Locatie…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Open _Schijf…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Sla Afspeellijst op" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nieuw venster" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Stoppen" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Bewerken" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Instellingen" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Video bestand" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Audio bestand" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Ondertitel bestand" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Weergave" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Schakel bediening in of uit" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Schakel afspeellijst in of uit" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Volledig Scherm" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Help" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Sneltoetsen" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Over Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Open _Schijf…" + +#: 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:130 +msgid "Location:" +msgstr "Locatie:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Annuleren" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Open" + +#: src/celluloid-player.c:550 +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:786 +msgid "_Copy Location" +msgstr "_Kopieer Locatie" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Verwijder" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Voeg Toe…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Voeg _locatie toe" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Willekeurig " + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Herhaal _bestand" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Herhaal _afspeellijst" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Afspeellijst" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Afspeellijst is leeg" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Voeg plugin toe " + +#: 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 "Bestand van '%s' naar '%s' kopiëren is mislukt. Reden: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Geen plugins gevonden" + +#: 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 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Bestand '%s' verwijderen is mislukt. Reden: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interface" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Config Bestanden" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Diversen" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Plugins" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Opslaan" + +#: src/celluloid-preferences-dialog.c:432 +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 "Voeg bestand toe aan afspeellijst" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Voeg locatie toe aan afspeellijst" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Toon instellingen dialoog" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Schakel bediening in of uit" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Schakel afspeellijst in of uit" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Schakel naar volledig scherm" + +#: 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 "Schakel OSD weergave tussen normaal en afspeeltijd/duur" + +#: 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 "Zoek naar vorige/volgende ondertiteling" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Ga een frame achter- of voorwaarts" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Zoek naar het begin van het vorige/volgende hoofdstuk" + +#: 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 "Instellen/verwijderen A-B punten herhaaldelijk afspelen" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Schakel eindeloos herhalen in" + +#: 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 "Enter search mode" +msgstr "Zoekmodus activeren" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Spring naar volgende overeenkomst" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Spring naar vorige overeenkomst" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Verlaat zoekmodus" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Doorloop audiotracks" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Verlaag of verhoog volume" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Dempen of dempen opheffen" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Verander audiovertraging met ±0.1 seconden" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Schakel ondertiteling in" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Doorloop beschikbare ondertitels" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Verander ondertitelingvertraging met ±0.1 seconden" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Verplaats ondertiteling omhoog of omlaag" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Doorloop videohoofdstukken" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Verkleinen/vergroten pan-en-scanbereik " + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Maak een schermafbeelding" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Maak een schermafbeelding zonder ondertiteling" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Maak een schermafbeelding zoals het venster het toont" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Formaat video wijzigen naar helft van origineel formaat" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Formaat video wijzigen naar origineel formaat" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Formaat video wijzigen naar dubbele grootte van origineel formaat" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Verander contrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Verander helderheid" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Verander gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Verander verzadiging" + +#: src/celluloid-shortcuts-window.c:126 +#, fuzzy +msgid "Activate or deactivate deinterlacer" +msgstr "Activeer of deactiveer de deinterlacer" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Doorloop beeldverhouding omzeilen" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Gebruikersomgeving" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Audio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Ondertiteling" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Afspelen" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Zoeken" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Laad Audio Track" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Laad video track" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Laad ondertitelingsbestand" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"In- of uitschakelen van client-side decoraties vereist herstarten van om " +"effect te hebben." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Voeg map toe aan afspeellijst" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Voeg Bestand toe aan Afspeellijst" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Open Bestand" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Voeg locatie toe aan Afspeellijst" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Open Locatie" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Sla Afspeellijst op" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Een GTK frontend voor MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Waardering voor vertalers" diff --git a/po/pl.po b/po/pl.po new file mode 100644 index 0000000..5c7be11 --- /dev/null +++ b/po/pl.po @@ -0,0 +1,1158 @@ +# Piotr Sokół , 2016. +# gnome-mpv , 2019. #zanata +# Piotr Drąg , 2020. #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: 2020-10-11 04:51-0400\n" +"Last-Translator: Piotr Drąg \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 "Czy ustawienia zostały już zaimportowane z poprzedniej wersji" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Automatyczne dopasowywanie okna do rozmiaru wideo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Ciemny motyw" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Wyświetlanie obramowania okna po stronie klienta" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Ukrywanie przycisków sterujących w trybie okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Automatyczne ukrywanie kursora w trybie okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Minimalna prędkość kursora, przy jakiej przyciski sterujące zostaną " +"wyświetlone." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Rozmiar martwej strefy, w której ruch kursora nie spowoduje wyświetlenia " +"przycisków sterujących." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Używanie przycisków przechodzenia do sterowania listą odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Okno wyboru pliku pamięta położenie ostatnio używanego pliku" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Otwieranie zawsze w nowym oknie" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opcje przekazywane do programu mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Ścieżka do pliku konfiguracji mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Wczytywanie pliku konfiguracji MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Ścieżka do pliku konfiguracji skrótów programu mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Wczytywanie pliku konfiguracji skrótów MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Obsługa MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Obsługa przycisków multimedialnych" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Wcześniejsze wczytywanie metadanych" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorowanie błędów odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Wstrzymywanie bezczynności sesji" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Szerokość okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Wysokość okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Czy okno jest zmaksymalizowane" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Głośność odtwarzania dźwięku" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Czy powtarzać listę odtwarzania po jej ukończeniu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Szerokość listy odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Czy wyświetlać przyciski sterujące" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Czy wyświetlać listę odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "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:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "Interfejs GTK dla biblioteki 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 to prosty odtwarzacz multimedialny obsługujący praktycznie " +"wszystkie formaty dźwięku i wideo. Umożliwia korzystanie z list odtwarzania " +"i sterowanie za pomocą MPRIS2. Interfejs programu Celluloid jest zgodny " +"z Wytycznymi projektowania interfejsów GNOME, ale może być używany także " +"w innych środowiskach, które nie obsługują wyświetlania obramowań okna po " +"stronie klienta (CSD). Celluloid korzysta z bibliotek mpv i GTK." + +#: 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 konfiguracji programu mpv," + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "obsługa interfejsu D-Bus MPRIS2." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Deweloperzy programu Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "To wydanie zawiera następujące zmiany:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Można teraz aktywować menu kontekstowe, kiedy lista odtwarzania jest pusta." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Pasek przewijania nie zmienia już bez przerwy rozmiaru z powodu zmieniania " +"się rozmiaru etykiety z czasem podczas odtwarzania." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Wyświetlane jest tylko jedno okno z błędem, kiedy wystąpi duża liczba błędów" +" w krótkim czasie." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Menu otwierania katalogów." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Położenie elementów interfejsu w oknach dialogowych w trybie bez CSD jest " +"spójniejsze z trybem CSD." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Obsługa wczytywania zewnętrznych ścieżek wideo." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Można teraz przełączać losowe odtwarzanie listy odtwarzania." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Skróty z klawiszami strzałek działają teraz ze strzałkami na klawiaturze " +"numerycznej." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"Ta lista jest niepełna. Polecenie „git log” wyświetli pełną listę zmian." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Dostosowanie zakresu przycisku głośności na podstawie wartości własności " +"„volume-max”." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Zachowywanie stanu maksymalizacji okna między sesjami." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Zachowywanie stanu powtarzania między sesjami." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementacja wyszukiwania na liście odtwarzania." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Aktualizacja listy skrótów w oknie skrótów klawiszowych." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Właściwa obsługa cudzysłowów i sekwencji sterujących w dodatkowych opcjach " +"mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Wyświetlanie czasu w pozycji kursora po najechaniu na pasek przewijania." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"„--mpv-options” jest przestarzałe. Zamiast tego do ustawiania opcji mpv " +"można używać opcji zaczynających się od „--mpv-”. Na przykład przekazanie " +"„--mpv-vf=vflip” do programu Celluloid jest odpowiednikiem przekazania " +"„--vf=vflip” do mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Obsługa konfigurowania martwej strefy, w której ruch kursora nie spowoduje " +"wyświetlenia przycisków sterujących." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Rozmiar okna działa teraz poprawnie na ekranach o wysokiej rozdzielczości." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Nowe tłumaczenie na język fiński od Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Nowe tłumaczenie na język słoweński od @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Nowe tłumaczenie na język perski od @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Nowe tłumaczenie na język ukraiński od @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Obsługa wyświetlania/ukrywania obramowania okna za pomocą opcji --border " +"programu mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Menu otwierania płyt" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Blokowanie automatycznego ukrywania kursora, kiedy menu głośności jest " +"otwarte w trybie okna" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Poprawka awarii podczas używania mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Zmiana nazwy projektu na Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Nowe tłumaczenie na język turecki od @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Nowe tłumaczenie na język esperanto od @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migracja z opengl-cb na nowe API wyświetlania" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Obsługa skrótów na klawiaturze numerycznej" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Obsługa skrótów używających unikodu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Przekierowywanie zdarzeń klawiszy multimedialnych do programu mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Nowy klucz dconf do sterowania prędkością kursora, przy której przyciski " +"sterowania są wyświetlane" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Opcja ukrywania błędów odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Podział karty „Ogólne” w oknie preferencji" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Ulepszone zachowanie podczas przełączania listy odtwarzania w kafelkowych " +"menedżerach okien" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Przeniesienie menu programu do głównego menu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" +"Używanie oddzielnego połączenia MPRIS z magistralą D-Bus dla każdego okna" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Obsługa własności „LoopStatus” interfejsu MPRIS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Opcja --mpv-options do ustawiania dowolnych opcji programu mpv z wiersza " +"poleceń" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Ustawienie domyślnego katalogu zrzutów ekranu na XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Ulepszona obsługa opcji --window-scale, --autofit, --autofit-larger " +"i --autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Opcja wiersza poleceń do ustawiania WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "Menu kontekstowe do usuwania pozycji z listy odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "Menu kontekstowe do kopiowania ścieżki do pozycji listy odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Opcja zmieniająca działanie przycisków przechodzenia z rozdziałów na pozycje" +" listy odtwarzania" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Okno wyboru pliku przyjmuje nielokalne ścieżki" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Powtarzanie jednego pliku w menu pod prawym przyciskiem" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "Obsługa zdarzeń zmiany własności dla pełnego ekranu i skalowania okna" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Opcja automatycznego ukrywania kursora w trybie okna" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +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:289 +msgid "The main window with CSD disabled" +msgstr "" +"Główne okno programu z wyłączonym wyświetlaniem obramowania okna po stronie " +"klienta" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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 "Odtwarzacz multimedialny" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Odtwarzanie filmów i nagrań wideo" + +#. 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 "" +"Wideo;Video;Film;Movie;Klip;Clip;Serial;Series;Show;Odtwarzacz;Player;DVD;Diwidi;Blu-" +"ray;Bluray;Blue-ray;Blurej;TV;Płyta;Płyty;Disc;Album;Muzyka;Music;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Nowe okno" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Odtwarzanie" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Wyświetla informacje o wersji" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Dodaje do kolejki odtwarzania" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Otwiera nowe okno" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPCJE" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Ustawia rolę okna" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Nie łączy z już uruchomionym wystąpieniem programu" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Wstrzymuje odtwarzanie" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Rozpoczyna odtwarzanie" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Zatrzymuje odtwarzanie" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Przechodzi naprzód" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Przechodzi wstecz" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Następny rozdział" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Poprzedni rozdział" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Powtarza listę odtwarzania" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Losuje kolejność odtwarzania z listy" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Przełącza wyświetlanie na pełnym ekranie" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Błąd" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Wszystkie pliki" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Pliki multimedialne" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Pliki dźwiękowe" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Pliki wideo" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Pliki obrazów" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "Nie odnaleziono płyty" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Plik" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Otwórz…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Otwórz _katalog…" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Otwórz położ_enie…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Ot_wórz płytę…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "Z_apisz listę odtwarzania" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nowe okno" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "Za_kończ" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Edycja" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Preferencje" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Ścieżka _wideo" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "Ścieżka _dźwiękowa" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Ścieżka _napisów" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Widok" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Przyciski _sterujące" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Lista odtwarzania" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Pełny ekran" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "Pomo_c" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Skróty klawiszowe" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_O programie" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Ot_wórz płytę" + +#: 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:130 +msgid "Location:" +msgstr "Położenie:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Anuluj" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Otwórz" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Zastosowanie jednej lub więcej opcji MPV się nie powiodło." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "S_kopiuj położenie" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Usuń" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Dodaj…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Dodaj _katalog…" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Dodaj p_ołożenie…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Losowe odtwarzanie" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "_Powtarzanie pliku" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Po_wtarzanie listy odtwarzania" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Lista odtwarzania" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Lista odtwarzania jest pusta" + +#: 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 w języku Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "Wtyczki w języku JavaScript" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "Wtyczki w języku C" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Skopiowanie pliku z „%s” do „%s” się nie powiodło. 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? Tego działania nie można cofnąć." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Usunięcie pliku „%s” się nie powiodło. Powód: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "Plik konfiguracji MPV:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Plik konfiguracji skrótów MPV:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Dodatkowe opcje MPV:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interfejs" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Pliki konfiguracji" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Różne" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Wtyczki" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Zapisz" + +#: src/celluloid-preferences-dialog.c:432 +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 "Dodanie 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 obecnej 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 zaznaczonej pozycji 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 "Ustawienie/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 programu" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "" +"Zapisanie obecnej pozycji odtwarzania i zakończenie działania programu" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Włączenie trybu wyszukiwania" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Przejście do następnego wyniku" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Przejście do poprzedniego wyniku" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Wyłączenie trybu wyszukiwania" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Przełączenie ścieżki dźwiękowej" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Zmniejszenie/zwiększenie głośności" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Przełączenie wyciszenia dźwięku" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Dostosowanie opóźnienia dźwięku o +/- 0,1 s" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Przełączenie widoczności napisów" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Przełączenie ścieżki napisów" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Dostosowanie opóźnienia napisów o +/- 0,1 s" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Przełączenie zastępowania stylów napisów SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Przesunięcie napisów w górę/dół" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Przełączenie trybu zgodności proporcji VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Przełączenie ścieżki wideo" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Zmniejszenie/zwiększenie zakresu „pan-and-scan”" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Wykonanie zrzutu obrazu" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Wykonanie zrzutu obrazu bez napisów" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Wykonanie zrzutu obrazu wyświetlanego w oknie" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Ustawienie rozmiaru obrazu na dwukrotnie mniejszy niż oryginalny" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Przywrócenie oryginalnego rozmiaru obrazu" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Ustawienie rozmiaru obrazu na dwukrotnie większy niż oryginalny" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Dostosowanie kontrastu" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Dostosowanie jasności" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Dostosowanie gammy" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Dostosowanie nasycenia" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Przełączenie usuwania przeplotu" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Przełączenie proporcji obrazu" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Interfejs użytkownika" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Wideo" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Dźwięk" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Napisy dialogowe" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Odtwarzanie" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Przewijanie" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Wczytywanie ścieżki dźwiękowej…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Wczytywanie ścieżki wideo…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Wczytywanie ścieżki napisów…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Włączenie lub wyłączenie wyświetlania obramowania okna po stronie klienta " +"wymaga ponownego uruchomienia programu, aby wprowadzić zmiany." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Dodawanie katalogu do listy odtwarzania" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Otwieranie katalogu" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Dodawanie pliku do listy odtwarzania" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Otwieranie pliku" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Dodawanie położenia do listy odtwarzania" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Otwieranie położenia" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Zapisywanie listy odtwarzania" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Interfejs GTK dla biblioteki MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Piotr Sokół , 2016, 2019\n" +"Piotr Drąg , 2020" diff --git a/po/pt_BR.po b/po/pt_BR.po new file mode 100644 index 0000000..e29704d --- /dev/null +++ b/po/pt_BR.po @@ -0,0 +1,1162 @@ +# 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 +# Carlos Henrique , 2020. #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: 2020-10-28 03:45-0400\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 "Automatically resize window to fit video" +msgstr "Redimensionar automaticamente a janela para caber o vídeo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Ativar tema escuro" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Ativar decorações de janela independentes" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Usar controles flutuantes no modo janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Ocultar automaticamente o cursor do mouse no modo de janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +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:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Tamanho da zona morta em que o movimento do cursor não fará com que os " +"controles sejam exibidos" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Use os botões de pular para controlar a lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Fazer o seletor de arquivos lembrar a localização do último arquivo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Sempre abrir uma nova janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opções para passar para o mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Caminho para o arquivo de configuração do mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Carregar arquivo de configuração do mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Caminho para o arquivo de atalhos do mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Carregar arquivo de configuração de entrada do mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Ativar suporte para MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Ativar suporte para atalhos de mídia" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Pré-busca de metadados" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorar erros de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Inibir sessão inativa" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Largura da janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Altura da janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Se a janela está ou não maximizada" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volume do reprodutor" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Se deve ou não repetir a lista quando ela terminar" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Largura da lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Mostra ou não os controles" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +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:191 +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:451 +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:30 +msgid "The Celluloid Developers" +msgstr "Os Desenvolvedores do Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +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:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Possibilita ativar o menu de contexto quando a lista de reprodução estiver " +"vazia." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Evita o redimensionamento constante da barra de busca devido ao " +"redimensionamento do rótulo do carimbo de data / hora conforme seu valor " +"muda" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Mostra apenas uma única caixa de diálogo de erro quando um grande número de " +"erros ocorre em rápida sucessão." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Adiciona item de menu para abrir pastas." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Ajusta a posição dos elementos da IU dos diálogos modais no modo não CSD " +"para ser mais consistente com o CSD" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Adiciona suporte para carregar trilhas de vídeo externas." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Torna a reprodução aleatória da lista de reprodução alternável." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Faz com que as teclas de seta funcionem com as teclas de seta no teclado " +"numérico" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +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:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Ajuste o botão do intervalo de volume, com base no valor da propriedade " +"volume-máximo." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Manter o estado de maximização da janela entre as sessões." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Manter o estado do loop entre as sessões." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementar pesquisa na lista de reprodução." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Atualizar a lista de atalhos na caixa de diálogo, Atalhos do teclado." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Manuseie corretamente as citações e sequências de escape em opções extras do" +" mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Mostra o tempo na posição do cursor ao passar o mouse na barra de busca." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Preterir '--mpv-options'. Opções começando com '--mpv-' podem ser usadas " +"para definir as opções do mpv. Por exemplo, passar '--mpv-vf = vflip' para o" +" Celluloid é equivalente a passar '--vf = vflip' para o mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Adicionado suporte para configurar a zona morta, uma área na qual o " +"movimento do mouse não fará com que os controles sejam mostrados." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" +"Faz o dimensionamento da janela funcionar corretamente em monitores HiDPI." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Adicionada a tradução finlandesa por Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Adicionada tradução eslovena por @bertronika" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Adic. tradução Persa por @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Adic. tradução ucraniana por @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Adicionado suporte para mostrar/ocultar as decorações de janela usando a opção \n" +"\"--border\" do mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Adicionado item de menu para abrir discos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Ocultar automaticamente o bloco do cursor quando o pop-up de volume estiver " +"aberto no modo de janela" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Corrigido erro com o mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Projeto renomeado para Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Adic. tradução Turca por @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Adic. tradução Esperanto por @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +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:172 +msgid "Handle numpad keybindings" +msgstr " Manipulável com combinações de teclas numéricas" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Manipulável com combinações de teclas unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +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:181 +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:184 +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:199 +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:202 +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:205 +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:208 +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:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Adicionar suporte para a propriedade MPRIS LoopStatus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +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:230 +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:233 +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:237 +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:240 +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:243 +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:258 +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:262 +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:265 +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:268 +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:271 +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:285 +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:289 +msgid "The main window with CSD disabled" +msgstr "Janela principal com CSD desativado" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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:495 +msgid "Playing" +msgstr "Reproduzindo" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Mostrar a versão" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Enfileirar" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Criar uma nova janela" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPÇÕES" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Definir o papel da janela" + +#: src/celluloid-application.c:591 +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:362 +msgid "Pause" +msgstr "Pausar" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "reproduzir" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Parar" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Avançar" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Retroceder" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Próximo Capítulo" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Capítulo Anterior" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Repetir a Lista" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Misturar a lista de reprodução" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Alternar para Tela Cheia" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Erro" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Todos os Arquivos" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Arquivos de Mídia" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Arquivos de Áudio" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Arquivos de Vídeo" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Arquivos de Imagem" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "Disco não encontrado" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Arquivo" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Abrir..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Abrir _Pasta..." + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "_Abrir Local..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Abrir _Disco..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Salvar Lista de Reprodução" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nova Janela" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Sair" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Editar" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Preferências" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Faixa de Vídeo" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Faixa de Áudio" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "F_aixa de Legendas" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Exibir" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Mostrar Controles" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Mostrar Lista de Reprodução" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Tela Cheia" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Ajuda" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Teclas de Atalho" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Sobre o Celluloid" + +#: src/celluloid-menu.c:321 +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:130 +msgid "Location:" +msgstr "Local:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Cancelar" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Abrir" + +#: src/celluloid-player.c:550 +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:786 +msgid "_Copy Location" +msgstr "_Copiar Local" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Remover" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Adicionar..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Adic _Pasta..." + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Adicionar _Local" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Aleatório" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Repetir_Arquivo" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Repetir _Lista" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Lista de Reprodução" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Lista está vazia" + +#: 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:341 +msgid "mpv configuration file:" +msgstr "arquivo de configuração do mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "arquivo de configuração de entrada do mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Opções extras do mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Aparência" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Arquivos de Configuração" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Diversos" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Plugins" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Salvar" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "Entrar no Modo busca" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Ir para o próximo correspondente" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Ir para o correspondente anterior" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Sai do modo busca" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Percorre pelas faixas de áudio" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Aumenta/diminui volume" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Silencia ou não" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Ajusta o atraso de áudio em +/- 0,1 Segundos" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Alterna a visibilidade das legendas" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Percorre pelas legendas disponíveis" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Ajusta o atraso da legenda por +/- 0.1 segundos" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Substitui alternadamente o estilo das legendas SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Move as legendas para cima/para baixo" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Alterna o modo de compatibilidade de aspecto do VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Percorre pelas trilhas de vídeo" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Diminui/aumenta o alcance da varredura de tela" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Faz uma captura de tela" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Faz uma captura de tela sem legendas" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Faz uma captura de tela da janela mostrada" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Redimensiona o vídeo para a metade do tamanho original" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Redimensiona o vídeo para o tamanho original" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Redimensiona o vídeo para o dobro da tela original" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Ajusta o contraste" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Ajusta o brilho" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Ajusta o gama" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Ajusta a saturação" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Ativa ou desativa desentrelace" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Percorre pela proporção de aspecto ignorado" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Interface de Usuário" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Vídeo" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Áudio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Legenda" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Reproduzir" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Procurando" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Carregar Faixa de Áudio..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Carregar Faixa de Vídeo…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Carregar Faixa de Legenda" + +#: src/celluloid-view.c:901 +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 que entre em vigor." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Adic Pasta à Lista de Reprodução" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Abrir Pasta" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Adic. arquivo à Lista de Reprodução" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Abrir Arquivo" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Adic. Local à lista de Reprodução" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Abrir Local" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Salva Lista de Reprodução" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Uma interface em GTK para o MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Carlos Henrique de Freitas Ferreira." diff --git a/po/pt_PT.po b/po/pt_PT.po new file mode 100644 index 0000000..48d6ba3 --- /dev/null +++ b/po/pt_PT.po @@ -0,0 +1,1171 @@ +# Bruno Guerreiro , 2016. +# Filipe Tostevin , 2019. #zanata +# Hugo Carvalho , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Hugo Carvalho , 2020. #zanata +# gnome-mpv , 2020. #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: 2020-12-05 04:17-0500\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 "Automatically resize window to fit video" +msgstr "Ajustar automaticamente a janela ao vídeo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Ativar tema escuro" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Ativar decorações 'client-side'" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Utilizar controlos flutuantes no modo de janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Ocultar automaticamente o cursor do rato no modo de janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"A velocidade mínima do cursor para que os controlos flutuantes sejam " +"mostrados." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Tamanho da zona morta em que o movimento do cursor não fará com que os " +"controlos sejam mostrados." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Utilizar botões de ignorar para controlar a lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" +"Fazer com que o selecionador de ficheiros se lembre da localização do último" +" ficheiro" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Abrir sempre uma nova janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opções extra mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Caminho do ficheiro de configuração mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Carregar o ficheiro de configuração do mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Caminho para ficheiro de configurações de entrada mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Carregar o ficheiro de configuração de entrada do mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Ativar suporte a MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Ativar teclas multimédia" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Pré-obtenção de meta-dados" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorar erros de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Inibir a sessão inativa" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Largura da janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Altura da janela" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Se a janela está ou não maximizada" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volume da aplicação" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" +"Se deve ou não repetir do início ao chegar ao fim da lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Largura da lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Mostrar ou não mostrar os controlos" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +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:191 +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:451 +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 multimédia simples que pode reproduzir " +"praticamente todos os formatos de vídeo e áudio. Tem siporte a listas de " +"reprodução e controlos MPRIS2. O projeto Celluloid segue as diretrizes GNOME" +" Human Interface, mas também pode ser adaptado para outros sistemas que não " +"utilizem decorações 'client-side' (CSD). É baseado na biblioteca mpv e no " +"GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Funcionalidades:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Arrastar e largar listas de reprodução" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Carregar ficheiros de configuração mpv externos" + +#: 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:30 +msgid "The Celluloid Developers" +msgstr "Os programadores do Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +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:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Tornar possível ativar o menu de contexto quando a lista de reprodução " +"estiver vazia." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Impedir o redimensionamento constante da barra de procura devido ao " +"redimensionamento da etiqueta do selo temporal à medida que o seu valor " +"muda." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Apenas mostrar um único diálogo de erro quando ocorre um grande número de " +"erros em sucessão rápida." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Adicionar item de menu para abrir pastas." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Ajustar a posição dos elementos de UI dos diálogos modais em modo não-CSD " +"para ser mais consistente com o modo CSD." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Adicionar apoio ao carregamento de faixas de vídeo externas." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Tornar a lista de reprodução baralhável." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" +"Fazer com que as teclas de seta funcionem com as teclas de seta no teclado " +"numérico." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"Esta lista está incompleta. Consulte o registo git para ver todas as " +"alterações." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Ajuste o intervalo do botão de volume com base no valor da propriedade " +"volume-max." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Manter o estado de maximização da janela ao longo das sessões." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Manter o estado do ciclo ao longo das sessões." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implementar a pesquisa na lista de reprodução." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Atualize a lista de atalhos na janela de teclas de atalho." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Manusear correctamente as citações e as sequências de escape em opções de " +"extra mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" +"Mostrar o tempo na posição do cursor ao passar o rato na barra de pesquisa." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Depreciar \"--mpv-opções\". Opções que começam com '--mpv-' podem ser usadas" +" para definir opções de mpv. Por exemplo, passar '--mpv-vf=vflip' para " +"Celluloid é equivalente a passar '--vf=vflip' para mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Adicionar suporte para a configuração da zona morta, uma área em que o " +"movimento do rato não fará com que os controlos sejam mostrados." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Faça o dimensionamento correto das janelas com os monitores HiDPI." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Tradução do Finlandês por Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Tradução do Esloveno por @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Tradução persa por @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Tradução ucraniana por @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Adicionado suporte para mostrar/ocultar decorações de janelas com a opção " +"mpv --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Adicionado item de menu para abrir discos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Bloqueio à ocultação automática do cursor se o alerta de volume for aberto " +"no modo de janela" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Correção a um erro com mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Alteração do nome da aplicação para Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Tradução para turco por @TeknoMobil" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Tradução para esperanto por @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Migração de opengl-cb para a nova API de renderização" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Gestão de teclas de atalho em teclados numéricos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Gestão de teclas de atalho unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Encaminhamento de eventos das teclas multimédia para mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Adicionada uma chave dconf para controlar a velocidade do cursor necessária " +"para mostrar os controlos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Adicionada uma opção para suprimir os erros de reprodução" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Separação do separador Geral no diálogo de preferências" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Melhorias no comportamento ao alternar a lista de reprodução em gestores de " +"janelas 'tiling'" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Colocação dos itens de menu da aplicação no menu principal" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Utilização de uma ligação distinta MPRIS DBus para cada janela" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Adicionado suporte à propriedade LoopStatus MPRIS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Adicionada a opção --mpv-options para definir opções arbitrárias mpv a " +"partir da linha de comando" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Definição do diretório de capturas de ecrã para XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Melhorias na gestão das opções --window-scale, --autofit, --autofit-larger e" +" --autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Adicionada uma opção de linha de comando para definir WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"Adicionado um item ao menu de contexto para remover itens da lista de " +"reprodução" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Adicionado um item ao menu de contexto para copiar a localização dos itens " +"da lista de reprodução" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Adicionada uma opção para que os botões Ignorar alterem entre entradas da " +"lista de reprodução e não entre capítulos" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Permitir que o seletor de ficheiros aceite localizações não locais" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Adicionada um item ao menu de contexto para repetir um único ficheiro" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Manipulação de eventos de alteração da propriedade para ecrã inteiro e " +"escala de janela" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Adicionada uma opção para ocultar automaticamente o cursor do rato no modo " +"de janela" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Janela principal a mostrar a aplicação em ação" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Janela principal com decorações 'client side' desativadas" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Janela principal com uma 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: 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:495 +msgid "Playing" +msgstr "Em reprodução" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Mostrar a versão" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Colocar na fila" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Criar uma nova janela" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "OPÇÕES" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Define o papel da janela" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Não ligar a uma instância em execução" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pausa" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Reproduzir" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Parar" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Avançar" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Recuar" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Capítulo seguinte" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Capítulo anterior" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Lista de reprodução em ciclo" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Reproduzir aleatoriamente a lista de reprodução" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Alternar para ecrã inteiro" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Erro" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Todos os ficheiros" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Ficheiros multimédia" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Ficheiros de áudio" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Ficheiros de vídeo" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Ficheiros de imagem" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Ficheiros de legendas" + +#: 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 externo…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Nenhum disco encontrado" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Ficheiro" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Abrir…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Abrir _pasta…" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Abrir _localização…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Abrir _disco…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "Guardar li_sta de reprodução" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nova janela" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "Sa_ir" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Editar" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Preferências" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "Faixa de _vídeo" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "F_aixa de áudio" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Fa_ixa de legendas" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Ver" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Al_ternar controlos" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Al_ternar lista de reprodução" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Ecrã inteiro" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "Aj_uda" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "Teclas de atal_ho" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Acerca do Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Abrir _disco" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "A reprodução terminou abruptamente. Motivo: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Localização:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Cancelar" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Abrir" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Falha ao aplicar uma ou mais opções mpv." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Copiar localização" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Remover" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Adicionar…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Adicionar _pasta…" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Adicionar _localização…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "Mi_sturar" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Repetir _ficheiro" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Re_petir lista de reprodução" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Lista de reprodução" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Lista de reprodução vazia" + +#: 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 "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 o 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 a certeza de que deseja remover este script? Esta 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 eliminar o ficheiro '%s'. Motivo: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "Ficheiro de configuração mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Ficheiro de configuração de entrada mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Opções extra mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Interface" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Ficheiros de configuração" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Outras" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Plugins" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Guardar" + +#: src/celluloid-preferences-dialog.c:432 +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 janela de preferências" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Alternar entre controlos" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Alternar lista de reprodução" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Alternar ecrã inteiro" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Sair de ecrã inteiro" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Alternar estados do OSD entre normal e o duração/tempo de reprodução" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Mostrar 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 "Ir para a legenda anterior/seguinte" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Recuar/Avançar exatamente um frame" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Ir para o início do capítulo anterior/seguinte" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Reduzir/aumentar velocidade de reprodução em 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Reduzir a metade/duplicar velocidade de reprodução" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Restaurar velocidade de reprodução" + +#: 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 continuar" + +#: 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 "Enter search mode" +msgstr "Entrar no modo de pesquisa" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Ir para a ocorrência seguinte" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Ir para a ocorrência anterior" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Sair do modo de pesquisa" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Percorrer faixas de áudio" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Reduzir/aumentar volume" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "SIlenciar ou restaurar" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Ajustar atraso de áudio em +/- 0,1 segundos" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Alternar visibilidade das legendas" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Percorrer legendas disponíveis" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Ajustar atraso das legendas em +/- 0,1 segundos" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Alternar substituição da estilo das legendas SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Mover legendas para cima/baixo" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Alternar modo de compatibilidade do aspeto VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Percorrer faixas de vídeo" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Reduzir/aumentar intervalo de panorâmica" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Capturar ecrã" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Capturar ecrã, sem legendas" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Capturar ecrã tal como é mostrado" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Ajustar vídeo para metade do tamanho original" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Ajustar vídeo para o tamanho original" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Ajustar vídeo para o dobro do tamanho original" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Ajustar contraste" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Ajustar brilho" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Ajustar gama" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Ajustar saturação" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Ativar ou desativar o desentrelaçador" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Substituição da relação de aspeto" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Interface" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Vídeo" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Áudio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Legenda" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Reprodução" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Pesquisa" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Carregar faixa de áudio…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Carregar faixa de vídeo…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Carregar faixa de legendas…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Para ativar ou desativar as decorações 'client-side', tem que reiniciar a " +"aplicação." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Adicionar pasta à lista de reprodução" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Abrir pasta" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Adicionar ficheiro à lista de reprodução" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Abrir ficheiro" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Adicionar local à lista de reprodução" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Abrir localização" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Guardar lista de reprodução" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Interface em GTK para mpv" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Hugo Carvalho\n" +"Bruno Guerreiro\n" +"Sérgio Marques" diff --git a/po/ro.po b/po/ro.po new file mode 100644 index 0000000..09b15d0 --- /dev/null +++ b/po/ro.po @@ -0,0 +1,1108 @@ +# 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 +# gnome-mpv , 2020. #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: 2020-06-23 10:49-0400\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 "Automatically resize window to fit video" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Activează tema întunecată" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Activează decorațiile ferestrelor (CSD)" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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:30 +msgid "The Celluloid Developers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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:495 +msgid "Playing" +msgstr "" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Fișier" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Salvează Lista Redare" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Modifică" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Preferințe" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Vizualizare" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Afișează Lista Redare" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Tot ecranul" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Ajutor" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "" + +#: src/celluloid-menu.c:321 +#, 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:130 +msgid "Location:" +msgstr "Adresă:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Anulează" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Deschide" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Listă de redare" + +#: src/celluloid-playlist-widget.c:943 +#, fuzzy +msgid "Playlist is empty" +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:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Salvează" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Adaugă un fișier Listei de Redare" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Deschide Fișier" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Deschide Adresa" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Salvează Lista de Redare" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "O interfață GTK pentru MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Robert Datcu" diff --git a/po/ru.po b/po/ru.po new file mode 100644 index 0000000..4230286 --- /dev/null +++ b/po/ru.po @@ -0,0 +1,1142 @@ +# Pavel Nikulin , 2019. #zanata +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #zanata +# Sergei Tkachenko , 2021. #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: 2021-01-17 09:13-0500\n" +"Last-Translator: Sergei Tkachenko \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 "Automatically resize window to fit video" +msgstr "Автоматически менять размер окна под видео" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Использовать тёмную тему" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Включить декорирование на стороне клиента" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Использовать плавающие элементы управления в оконном режиме" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Автоматически скрывать курсор в оконном режиме" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Минимальная скорость курсора при которой будет показана панель управления." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Размер мертвой зоны в которой движение курсора не будет приводить к показу " +"панели управления" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Использовать кнопки пропуска для управления списком воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Запоминать последний путь при выборе файла" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Всегда открывать новое окно" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Перейти к параметрам MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Путь к файлу конфигурации MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Подгружать файл конфигурации MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Путь к файлу конфигурации ввода MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Подгружать файл конфигурации ввода MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Включить поддержку MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Включить поддержку мультимедийных клавиш" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Предварительная выборка метаданных" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Игнорировать ошибки воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Ширина окна" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Высота окна" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Развернуто ли окно или нет" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Громкость плеера" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" +"Продолжить ли воспроизведение при достижении конца списка воспроизведеия" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Ширина списка воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Показать или не показывать элементы управления" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Показать или скрыть список воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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 HIG, но также может быть адаптирован для других систем, " +"которые не используют декорирование на стороне клиента (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-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:30 +msgid "The Celluloid Developers" +msgstr "Разработчики Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Этот выпуск содержит следующие изменения:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" +"Появилась возможность открытия контекстного меню при пустом списке " +"воспроизведения." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" +"Убрано постоянное изменение размера полосы прокрутки из-за изменения размера" +" метки времени." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"При большом количестве появляющихся подряд ошибок отображается только одно " +"окно с ошибкой. " + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Добавлен пункт меню для открытия папок." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" +"Настроена позиция элементов модальных окон в режиме отключенного CSD для " +"большего соответствия с CSD режимом." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Добавлена возможность подгрузки внешних видео дорожек." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "Воспроизведение в случайном порядке сделано переключаемым." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Это не полный список. Полный список изменений см. в журнале git." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Сохранение режма развернутого окна между сессиями" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Сохранение режима повтора между сессиями" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Реализован поиск по списку воспроизведения." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Обновлен список комбинаций клавиш." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" +"Исправлена обработка кавычек и экранирующих последовательностей в " +"дополнительных параметрах mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "Отображение времени возле курсора при наведении на панель прокрутки." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Добавлена возможность настройки мертвой зоны в которой движение курсора не " +"будет приводить к показу панели управления." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Исправлены размеры окна на HiDPI-дисплеях." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Добавлен финский перевод от Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Добавлен словенский перевод от @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Добавлен персидский перевод от @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Добавлен украинский перевод от @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Добавлен пункт меню для открытия дисков" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Исправлен сбой при работе с mpv 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Проект переименован в Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Добавлен турецкий перевод от @TeknoMobil." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Добавлен перевод на эсперанто от @F3nd0." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Переход с opengl-cb на новый API рендеринга" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Обработка комбинаций клавиш цифровой клавиатуры" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Обработка сочетаний клавиш в кодировке Unicode" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Проброска событий от медиа клавиш в mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Добавлена возможность игнорировать ошибки воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Разделите вкладку Общие в диалоге настроек" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Улучшено поведение при переключении плейлиста под тайловыми оконными " +"менеджерами" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Использовать отдельное MPRIS DBus соединение для каждого окна" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Добавлена поддержка MPRIS cвойства LoopStatus" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Установить каталог по умолчанию для скриншотов в XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Добавлен параметр командной строки для настройки WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"В контекстное меню добавлен пункт для удаления элементов списка " +"воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"В контекстное меню добавлен пункт для копирования пути расположения элемента" +" списка воспроизведения" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Добавлена настройка использования кнопок пропуска для перехода по списку " +"воспроизведения вместо перехода по главам" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Добавлена настройка автоматического скрытия курсора в оконном режиме" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Главное окно, показывающее приложение в действии" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Главное окно с отключённым CSD" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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;ТВ;Диск;Альбом;Музыка;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Новое окно" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Воспроизводится" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Показать версию релиза" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Поставить в очередь" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Создать новое окно" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "ПАРАМЕТРЫ" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Установите роль окна" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Не подключаться к уже работающему экземпляру" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Приостановить" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Воспроизведение" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Остановить" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Перемотать вперёд" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Перемотать назад" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Следующая глава" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Предыдущая глава" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Режим повтора" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Перемешать список воспроизведения" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Переход в полноэкранный режим и обратно" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Ошибка" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Все файлы" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Медиафайлы" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Аудиофайлы" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Видеофайлы" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Файлы изображений" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "Диски не найдены" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Файл" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "От_крыть..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "От_крыть расположение..." + +#: src/celluloid-menu.c:239 +#, fuzzy +msgid "Open _Disc…" +msgstr "От_крыть расположение..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Сохранить список воспроизведения" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "Но_вое окно" + +#: src/celluloid-menu.c:242 +#, fuzzy +msgid "_Quit" +msgstr "Завершить" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Правка" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "Пара_метры" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "В_идео дорожка" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Аудио дорожка" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Дорожка с_убтитров" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "В_ид" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Показать/Скрыть элементы управления" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Показать/Скрыть список воспроизведения" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Полноэкранный режим" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Справка" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Комбинации клавиш" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_О Celluloid" + +#: src/celluloid-menu.c:321 +#, 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:130 +msgid "Location:" +msgstr "Расположение:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Отмена" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Открыть" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Не удалось применить один или несколько параметров MPV." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Копировать расположение" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Удалить" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Добавить…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Доб_авить расположение…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_В случайном порядке" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Повторять _файл" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Повторять _список воспроизведения" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Список воспроизведения" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +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:341 +msgid "mpv configuration file:" +msgstr "файл конфигурации mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "файл конфигурации ввода mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Дополнительные параметры mpv:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Интерфейс" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Файлы настроек" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Разное" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Модули" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Сохранить" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "Перейти в режим поиска" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Перейти к следующему совпадению" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Перейти к предыдущему совпадению" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Выйти из режима поиска" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Циклически доступные аудио дорожки" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Уменьшить/увеличить громкость" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Отключить или включить звук" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Изменить задержку аудио на + / - 0,1 секунды" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Переключить видимости субтитров" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Циклически переключить доступные субтитры" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Изменить задержку субтитров на + / - 0,1 секунды" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Переключить стиль субтитров SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Переместить субтитры вверх/вниз" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Циклически доступные видео дорожки" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Уменьшает/увеличивает диапазон панорамирования и сканирования" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Сделать скриншот" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Сделать скриншот, без субтитров" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Сделать скриншот, с субтитрами и OSD, масштабированием" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Изменить размер видео до половины своего исходного размера" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Изменить размер видео до исходного размера" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Удвоить размер видео относительно оригинального размера" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Регулировка контрастности" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Регулировка яркости" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Регулировка гаммы" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Регулировка насыщенности" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Включить или отключить деинтерлейсинг" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Цикл коррекции соотношения сторон" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Пользовательский интерфейс" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Видео" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Аудио" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Субтитры" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Воспроизведение" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Переход" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Загрузить звуковую дорожку…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Загрузить видео дорожку..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Загрузить субтитры…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Включение или отключение декораций на стороне клиента требует перезапуска, " +"чтобы изменения вступили в силу." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Добавить папку в список воспроизведения" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Открыть папку" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Добавить файл в список воспроизведения" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Открыть файл" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Добавить расположение в список воспроизведения" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Открыть расположение" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Сохранить список воспроизведения" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK интерфейс для MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Maxim Orlov , 2018.\n" +"Artem Polishchuk , 2019.\n" +"Sergei Tkachenko , 2021." diff --git a/po/sk.po b/po/sk.po new file mode 100644 index 0000000..8b2262e --- /dev/null +++ b/po/sk.po @@ -0,0 +1,1108 @@ +# Ati , 2020. #zanata +# Ati , 2021. #zanata +# gnome-mpv , 2021. #zanata +msgid "" +msgstr "" +"Project-Id-Version: celluloid\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-10-09 22:16+0700\n" +"PO-Revision-Date: 2021-01-30 04:12-0500\n" +"Last-Translator: Ati \n" +"Language-Team: Slovak\n" +"Language: sk\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 "Či už boli nastavenia prevziate z predchádzajúcej verzie" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Automaticky prispôsobiť veľkosť okna videu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Použiť tmavý motív" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Povoliť dekorácie na strane klienta" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Použiť plávajúce ovládacie prvky v režime okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Automaticky skryť kurzor myši v režime okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Minimálna rýchlosť kurzora, pri ktorej budú plávajúce ovládacie prvky " +"odkryté." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Veľkosť mŕtvej zóny, v ktorej pohyb kurzora nespôsobí zobrazenie ovládacích " +"prvkov." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Zapamätanie umiestnenia posledného otvoreného súboru" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Vždy otvoriť nové okno" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Cesta ku konfiguračnému súboru mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Načítanie konfiguračného súboru mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Cesta k mpv vstupnému konfiguračnému súboru" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Načítanie vstupného konfiguračného súboru mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Povoliť podporu MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Povoliť podporu mediálnych tlačidiel" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Predbežne načítať metadáta" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorovať chyby prehrávania" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +#, fuzzy +msgid "Inhibit session idling" +msgstr "Zakázať voľnobežnú reláciu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Šírka okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Výška okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Či je okno maximalizované alebo nie" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Hlasitosť prehrávača" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Zobraziť alebo nezobraziť ovládacie prvky" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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 "Funkcie:" + +#: 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 "Načítavanie externých konfiguračných súborov mpv" + +#: 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:30 +msgid "The Celluloid Developers" +msgstr "Vývojári Celluloidu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Toto vydanie obsahuje nasledujúce zmeny:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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;Seriál;Prehrá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:495 +msgid "Playing" +msgstr "Prehrávanie" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Zobraziť verziu" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Vytvoriť nové okno" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pozastaviť" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Prehrať" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Zastaviť" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Dopredu" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Dozadu" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Nasledujúca kapitola" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Predchádzajúca kapitola" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Prepnúť na celú obrazovku" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Chyba" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Všetky súbory" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Mediálne súbory" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Zvukové súbory" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Videosúbory" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Súbory s obrázkami" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Súbory s titulkami" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Žiadna" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Neznáma" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Nenašiel sa žiadny disk" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Nastavenia" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Video stopa" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Audio stopa" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "" + +#: src/celluloid-menu.c:321 +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:130 +msgid "Location:" +msgstr "Umiestnenie:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Pridať zásuvný modul" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Zásuvné moduly Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "Zásuvné moduly JavaScript" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "Zásuvné moduly C" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Nepodarilo sa skopírovať súbor z '%s' do '%s'. Dôvod: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Nenašli sa žiadne zásuvné moduly" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Odstrániť" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Naozaj chcete odstrániť tento skript? Túto akciu nie je možné vrátiť späť." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Nepodarilo sa odstrániť súbor '%s'. Dôvod: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "konfiguračný súbor mpv:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "vstupný konfiguračný súbor mpv:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Rozhranie" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Konfiguračné súbory" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Rôzne" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Zásuvné moduly" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Uložiť" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Nastavenia" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Otvoriť súbor" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Otvoriť umiestnenie" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Pridať súbor do playlistu" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Pridať umiestnenie do playlistu" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Zobraziť nastavenia" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Zobraziť ovládacie prvky" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Zobraziť playlist" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Prepnutie do režimu celej obrazovky" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Vypnutie režimu celej obrazovky" + +#: 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 "Zníženie/zvýšenie rýchlosti prehrávania o 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Polovičná/dvojnásobná rýchlosť prehrávania" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Obnovenie normálnej rýchlosti prehrávania" + +#: 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 "Odstránenie vybranej položky z playlistu" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Uložiť playlist" + +#: 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 "Nekonečné opakovanie" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Pozastavenie alebo pokračovanie" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Ukončenie" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Uloženie aktuálnej polohy prehrávania a ukončenie" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Prejsť do režimu vyhľadávania" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Prejsť na ďalšiu zhodu" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Prejsť na predchádzajúcu zhodu" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Ukončenie režimu vyhľadávania" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Prepnúť zvukovú stopu" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Zníženie/zvýšenie hlasitosti" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Stlmiť alebo obnoviť zvuk" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Nastavenie oneskorenia zvuku o +/- 0,1 sekundy" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Viditeľnost titulkov" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Prepnúť titulky" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Nastavenie oneskorenia titulkov o +/- 0,1 sekundy" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Prepnúť štýl titulkov SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Posunúť titulky nahor/nadol" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Prepnúť video stopu" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Vytvorenie snímky obrazovky" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "bez titulkov" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Vytvorenie snímky obrazovky ako sa zobrazuje v okne" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Zmenšiť veľkosť videa na polovicu" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Zmeniť veľkosť videa na pôvodnú veľkosť" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Zväčšiť veľkosť videa na dvojnásobok" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Úprava kontrastu" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Úprava jasu" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Úprava gamy" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Úprava sýtosti" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Zapnúť alebo vypnúť odstraňovanie prekladania" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Zmena pomeru strán" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Používateľské rozhranie" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Zvuk" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Titulky" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Prehrávanie" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Prehľadávanie" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Načítanie stopy so zvukom…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Načítanie stopy s videom…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Načítanie stopy s titulkami…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "Zapnutie alebo vypnutie dekorácií na strane klienta vyžaduje reštart." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "Pridať priečinok do playlistu" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Otvoriť priečinok" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Pridať súbor do playlistu" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Otvoriť súbor" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Pridať umiestnenie do playlistu" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Otvoriť umiestnenie" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Uložiť playlist" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK frontend pre MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" diff --git a/po/sl.po b/po/sl.po new file mode 100644 index 0000000..c234122 --- /dev/null +++ b/po/sl.po @@ -0,0 +1,1129 @@ +# Nejc Bertoncelj , 2020. #zanata +msgid "" +msgstr "" +"Project-Id-Version: celluloid\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-02-16 14:17+0700\n" +"PO-Revision-Date: 2020-06-16 05:00-0400\n" +"Last-Translator: Nejc Bertoncelj \n" +"Language-Team: Slovenian\n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 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 "So bile nastavitve že preseljene iz prejšnje različice" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:17 +msgid "Automatically resize window to fit video" +msgstr "Samodejno preoblikuj okno, da se prilega sliki" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Omogoči temno temo" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Omogoči dekoracije na uporabniški strani (CSD)" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Omogoči plavajoče gumbe v okenskem načinu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "Najmanjša hitrost kazalca, pri katerem bodo plavajoči gumbi skriti" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Uporabi gumbe za preskok za nadzor seznama predvajanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Vsakič odpri novo okno" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Nastavitve, ki se prenesejo programu MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Pot do nastavitvene datoteke (mpv.conf)" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Pot do nastavitvene datoteke za tipkovne bližnjice (input.conf)" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Omogoči podporo za MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Omogoči podporo predstavnostnih tipk" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Prenesi metapodatke" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Prezri napake predvajanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Širina okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Višina okna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Naj bo okno razprto" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Glasnost predvajalnika" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Naj se seznam predvajanja vrti v zanki" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Širina seznama predvajanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Prikaži gumbe za predvajanje" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Prikaži seznam predvajanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +msgid "URI of the last folder accessed" +msgstr "URI zadnje dostopane mape" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:7 +#: data/io.github.celluloid_player.Celluloid.desktop.in:4 +#: src/celluloid-application.c:451 +msgid "Celluloid" +msgstr "Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:8 +msgid "GTK+ frontend for mpv" +msgstr "GTK+ vmesnik 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 "" +"Celluloid je preprost večpredstavnostni predvajalnik, ki lahko predvaja " +"takorekoč vse zvočne in video formate. Podpira sezname predvajanje in nadzor" +" predvajanja MPRIS2. Oblikovan je po GNOME-ovih smernicah HIG, lahko pa se " +"prilagodi tudi sistemom brez njih. Celluloid je osnovan na predvajalniku MPV" +" in knjižnici GTK." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:23 +msgid "Features:" +msgstr "Lastnosti:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:25 +msgid "Drag and drop playlist" +msgstr "Povleci in spusti" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:26 +msgid "Loading external mpv configuration files" +msgstr "Nalaganje zunanjih nastavitvenih datotek za MPV" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:27 +msgid "MPRIS2 D-Bus interface" +msgstr "MPRIS2 D-Bus vmesnik" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Razvijalci programa Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Ta različica vsebuje sledeče spremembe:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" +"Ta seznam je nepopoln. Preveri zapisnik GIT (git log) za vse spremembe." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" +"Adjust the range of volume button based on the value of the volume-max " +"property." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "Retain window maximization state across sessions." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "Retain loop state across sessions." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "Implement playlist search." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "Update the list of shortcuts in Keyboard Shortcuts dialog." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "Correctly handle quotes and escape sequences in extra mpv options." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "Display time at cursor position when hovering the seek bar." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "Make window sizing work correctly with HiDPI displays." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "Add Finnish translation by Kimmo Kujansuu." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "Add Slovenian translation by @bertronika." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Dodan perzijski prevod (@danialbehzadi)" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Dodan ukrajinski prevod (@vl-nix)" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "Dodana podpora za prikazovanje/skrivanje oken z opcijo --border" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Dodan menijski vnos za odpiranje zgoščenk" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Onemogoči skrivanje kazalca, ko je v okenskem načinu odprto okno za " +"nastavitev glasnosti" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Odpravi sesutje pri mpv verziji 0.30" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Preimenovanje projekta v Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Dodan turški prevod (@TeknoMobil)" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Dodan esperanto prevod (@F3nd0)" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Selitev iz opengl-cb v nov vmesnik za renderiranje" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Obvladuj bližnjice na numerični tipkovnici" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Obvladuj Unicode tipkovne bližnjice" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Posreduj pritiske medijskih tipk programu mpv" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "Dodaj ključ dconf za nadzor hitrosti kazalca, ko gumbi niso skriti." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Dodaj možnost za skrivanje napak predvajanja." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Razdeli zavihek Splošno v nastavitvah" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" +"Izboljšaj obnašanje pri preklopu seznama predvajanja v upravljalnikih oken" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Premakni vnose menija aplikacij v glavni meni" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Uporabi ločene povezave MPRIS DBus za vsako okno" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Dodaj podporo za lastnost LoopStatus v MPRIS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" +"Dodaj možnost --mpv-options za podajanje nastavitev prek ukazne vrstice" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Nastavi privzeto mapo za posnetke zaslona na XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" +"Izboljšaj podporo nastavitev --window-scale, --autofit, --autofit-larger in " +"--autofit-smaller" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Dodaj nastavitev ukazne vrstice za WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"V kontekstni meni dodaj gumb za odstranjevanje vnosov seznama predvajanja" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"V kontekstni meni dodaj gumb za kopiranje lokacije vnosov seznama " +"predvajanja" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Dodaj možnost za preskakovanje vnosov seznama predvajanja namesto poglavij z" +" gumbi za preskok." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Omogoči izbirniku datotek izbor " + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Dodaj vnos v meni desnega klika za vrtenje ene datoteke v zanki" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "Obvladuj dogodke sprememb lastnosti za celozaslonski in okenski način" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Dodaj možnost za skrivanje kazalca v okenskem načinu" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Glavno okno programa med predvajanjem" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Glavno okno z onemogočenimi dekoracijami na uporabniški strani (CSD)" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Glavno okno z odprtim seznamom predvajanja" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Večpredstavnostni predvajalnik" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Predvajaj filme in videoposnetke" + +#. 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 "" +"videoposnetek;video;film;videoizrezek;serija;predvajalnik;DVD;TV;CD;zgoščenka;album;glasba;GNOME;mpv;" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:23 +msgid "New Window" +msgstr "Novo okno" + +#: src/celluloid-application.c:495 +msgid "Playing" +msgstr "Predvajanje" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Prikaži izdajo različice" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Dodaj v seznam predvajanja" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Ustvari novo okno" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "NASTAVITVE" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Nastavi vlogo okna" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ne priklopi se na že delujoč program" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pavza" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Predvajaj" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Ustavi" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Naprej" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Nazaj" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Naslednje poglavje" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Prejšnje poglavje" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Seznam predvajanja v zanki" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Naključen izbor seznama predvajanja" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Preklopi celozaslonski način" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Napaka" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Vse datoteke" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Večpredstavnostne datoteke" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Zvočne datoteke" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Video datoteke" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Slikovne datoteke" + +#: src/celluloid-file-chooser.c:184 +msgid "Subtitle Files" +msgstr "Datoteke s podnapisi" + +#: src/celluloid-menu.c:106 +msgid "None" +msgstr "Brez" + +#. For simplicity, also dup the default string used when the +#. * track has no title. +#: src/celluloid-menu.c:121 +msgid "Unknown" +msgstr "Neznano" + +#: src/celluloid-menu.c:154 +msgid "_Load External…" +msgstr "Naloži z_unanje..." + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Zgoščenka ni najdena" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Datoteka" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Odpri..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Odpri _mesto..." + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Odpri _zgoščenko..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Shrani seznam predvajanja" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Novo okno" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Izhod" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Uredi" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Možnosti" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Video sled" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Avdio sled" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Podnapisi" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Ogled" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "Preklopi _gumbe" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "Preklopi _seznam predvajanja" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Celozaslonski način" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Pomoč" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Tipkovne bližnjice" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_O programu" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Odpri _zgoščenko" + +#: src/celluloid-mpv.c:240 +#, c-format +msgid "Playback was terminated abnormally. Reason: %s." +msgstr "Predvajanje je bilo nepričakovano prekinjeno. Razlog: %s." + +#: src/celluloid-open-location-dialog.c:130 +msgid "Location:" +msgstr "Mesto:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Prekliči" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Odpri" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Napaka pri uveljavljanju nastavitev za MPV." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopiraj mesto" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "O_dstrani" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Dodaj..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Dodaj _lokacijo..." + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "P_remešaj" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Predvajaj v _zanki" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Predvajaj seznam pre_dvajanja v zanki" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Seznam predvajanja" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Seznam predvajanja je prazen" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Dodaj vtičnik" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Lua vtičniki" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "JavaScript vtičniki" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C vtičniki" + +#: src/celluloid-plugins-manager.c:334 +#, c-format +msgid "Failed to copy file from '%s' to '%s'. Reason: %s" +msgstr "Napaka prenašanja iz '%s' v '%s'. Razlog: %s" + +#: src/celluloid-plugins-manager.c:385 +msgid "No plugins found" +msgstr "Vtičniki niso najdeni" + +#: src/celluloid-plugins-manager-item.c:79 +msgid "Remove" +msgstr "Odstrani" + +#: src/celluloid-plugins-manager-item.c:178 +msgid "" +"Are you sure you want to remove this script? This action cannot be undone." +msgstr "" +"Ste prepričani, da želite odstraniti ta skript? Razveljavitev operacije ni " +"mogoča." + +#: src/celluloid-plugins-manager-item.c:199 +#, c-format +msgid "Failed to delete file '%s'. Reason: %s" +msgstr "Napaka odstranjevanja datoteke '%s'. Razlog: %s" + +#: src/celluloid-preferences-dialog.c:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Vmesnik" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Nastavitve za mpv" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Razno" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Vtičniki" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Shrani" + +#: src/celluloid-preferences-dialog.c:432 +msgid "Preferences" +msgstr "Nastavitve" + +#: src/celluloid-shortcuts-window.c:57 +msgid "Open file" +msgstr "Odpri datoteko" + +#: src/celluloid-shortcuts-window.c:58 +msgid "Open location" +msgstr "Odpri mesto" + +#: src/celluloid-shortcuts-window.c:59 +msgid "Add file to playlist" +msgstr "Dodaj datoteko na seznam predvajanja" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Dodaj mesto na seznam predvajanja" + +#: src/celluloid-shortcuts-window.c:61 +msgid "Show preferences dialog" +msgstr "Pokaži okno za nastavitve" + +#: src/celluloid-shortcuts-window.c:62 +msgid "Toggle controls" +msgstr "Preklopi gumbe" + +#: src/celluloid-shortcuts-window.c:63 +msgid "Toggle playlist" +msgstr "Preklopi seznam predvajanja" + +#: src/celluloid-shortcuts-window.c:64 +msgid "Toggle fullscreen mode" +msgstr "Preklopi na celozaslonski način" + +#: src/celluloid-shortcuts-window.c:65 +msgid "Leave fullscreen mode" +msgstr "Zapusti celozaslonski način" + +#: src/celluloid-shortcuts-window.c:66 +msgid "Toggle OSD states between normal and playback time/duration" +msgstr "Prikazu OSD dodaj čas predvajanja in trajanje" + +#: src/celluloid-shortcuts-window.c:67 +msgid "Show filename on the OSD" +msgstr "Prikaži ime datoteke na OSD" + +#: src/celluloid-shortcuts-window.c:68 +msgid "Show progress, elapsed time, and duration on the OSD" +msgstr "Prikaži napredek, pretečen čas in trajanje na OSD" + +#: src/celluloid-shortcuts-window.c:71 +msgid "Seek backward/forward 5 seconds" +msgstr "Išči nazaj/naprej po 5 sekund" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Išči nazaj/naprej po 1 sekundo" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Išči nazaj/naprej po 1 minuto" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Točno iskanje nazaj/naprej po 5 sekund" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Išči do prejšnjega/naslednjega podnapisa" + +#: src/celluloid-shortcuts-window.c:76 +msgid "Step backward/forward a single frame" +msgstr "Prehajaj med prejšnjo/naslednjo sličico" + +#: src/celluloid-shortcuts-window.c:77 +msgid "Seek to the beginning of the previous/next chapter" +msgstr "Pojdi na začetek prejšnjega/naslednjega poglavja" + +#: src/celluloid-shortcuts-window.c:80 +msgid "Decrease/increase playback speed by 10%" +msgstr "Zvišaj/znižaj hitrost predvajanja za 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Prepolovi/podvoji hitrost predvajanja" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Ponastavi hitrost predvajanja na običajno" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Pojdi nazaj/naprej po seznamu predvajanja" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Odstrani izbran element seznama predvajanja" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Shrani seznam predvajanja" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Nastavi/počisti točki A-B zanke" + +#: src/celluloid-shortcuts-window.c:87 +msgid "Toggle infinite looping" +msgstr "Preklopi neskončno zanko" + +#: src/celluloid-shortcuts-window.c:88 +msgid "Pause or unpause" +msgstr "Začasno ustavi" + +#: src/celluloid-shortcuts-window.c:89 +msgid "Quit" +msgstr "Zapri" + +#: src/celluloid-shortcuts-window.c:90 +msgid "Save current playback position and quit" +msgstr "Shrani trenutno pozicijo na seznamu predvajanja in zapri" + +#: src/celluloid-shortcuts-window.c:93 +msgid "Enter search mode" +msgstr "Vstopi v način iskanja" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Preskoči na naslednji zadetek" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Preskoči na prejšnji zadetek" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Zapri način iskanja" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Kroži skozi zvočne sledi" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Zvišaj/znižaj glasnost" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Izklopi ali vklopi zvok" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Nastavi zamik zvoka za +/- 0,1 sekundo" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Omogoči vidljivost podnapisov" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Kroži skozi podnapise" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Nastavi zamik podnapisov za +/- 0,1 sekundo" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Omogoči prezrtje stilov podnapisov SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Premakni podnapise gor/dol" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Omogoči združljivostni način za VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Kroži skozi video sledi" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Zvišaj/znižaj območje pomikanje-skeniranje (pan-scan)" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Naredi posnetek zaslona" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Naredi posnetek zaslona brez podnapisov" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Naredi posnetek zaslona, kot ga prikazuje okno" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Preoblikuj sliko na polovico izvirne velikosti" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Preoblikuj sliko na izvirno velikost" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Preoblikuj sliko na dvojno izvirno velikost" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Nastavi kontrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Nastavi svetlost" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Nastavi gama vrednost" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Nastavi nasičenost" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Omogoči/onemogoči odpravljanje prepletanja (deinterlacing)" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Kroži med razmerji slike" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Uporabniški vmesnik" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Zvok" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Podnapisi" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Predvajanje" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Iskanje" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Naloži zvočno sled..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Naloži slikovno sled..." + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Naloži podnapise..." + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Omogočanje/onemogočanje dekoracij na uporabniški strani zahteva vnovični " +"zagon." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Dodaj datoteko na seznam predvajanja" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Odpri datoteko" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Dodaj mesto na seznam predvajanja" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Odpri mesto" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Shrani seznam predvajanja" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK vmesnik za MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Nejc Bertoncelj " diff --git a/po/sr.po b/po/sr.po new file mode 100644 index 0000000..7722b7a --- /dev/null +++ b/po/sr.po @@ -0,0 +1,1108 @@ +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #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: 2020-06-23 10:41-0400\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 "Automatically resize window to fit video" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Омогући тамну тему" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Омогући украсе клијента" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Користи пливајуће контроле у режиму прозора" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Увек отвори нови прозор" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Опције које треба пренети на mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Путања до mpv конфигурационе датотеке" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Путања до mpv конфигурационе датотеке уноса" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Омогући подршку за MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Омогући подршку за мултимедијалне тастере" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Припреми метаподатке" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Ширина прозора" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Висина прозора" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Јачина звука" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Ширина листе пуштања" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Дозвољава приказ контрола" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Прикажи листу пуштања" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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:30 +msgid "The Celluloid Developers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +#, fuzzy +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Користи пливајуће контроле у режиму прозора" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Главни прозор са онемогућеним CSD-ом" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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:495 +msgid "Playing" +msgstr "Репродукција" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Прикажи верзију издања" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Нанижи" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Направи нови прозор" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Не повезуј на већ покренут примерак" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Паузирај" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Пусти" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Заустави" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Напред" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Назад" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Следеће Поглавље" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Претходно Поглавље" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Цео Екран" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Грешка" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Све Датотеке" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Медијски записи" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Звучни записи" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Видео записи" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Слике" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Датотека" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Сачувај Листу Пуштања" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Нови прозор" + +#: src/celluloid-menu.c:242 +#, fuzzy +msgid "_Quit" +msgstr "Напусти" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Уреди" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Поставке" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Видео Снимак" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Аудио Снимак" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Превод" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Преглед" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Прикажи Контроле" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Прикажи Листу Пуштања" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Цео Екран" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Помоћ" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Пречице Тастатуре" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "" + +#: src/celluloid-menu.c:321 +#, 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:130 +msgid "Location:" +msgstr "Локација:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Откажи" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Отвори" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Неуспешна примена једне или више MPV опција." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Додај..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Додај_Локацију..." + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Насумично" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Листа Пуштања" + +#: src/celluloid-playlist-widget.c:943 +#, fuzzy +msgid "Playlist is empty" +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:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Сачувај" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Кружи кроз аудио снимке" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Смањи/појачај" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Искључи или укључи звук" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Прилагоди кашњење звука за +/- 0.1 секунд" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Промени видљивост поднатписа" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Кружи кроз доступне поднатписе" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Прилагоди кашњење поднатписа за +/- 0.1 секунд" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Измени SSA/ASS стил поднатписа" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Помери поднатписе горе/доле" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Измени VSFilter режим усклађености" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Кружи кроз видео снимке" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Повећај/умањи опсег скенирања односа" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Направи снимак екрана" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Направи снимак екрана без поднатписа" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Направи снимак екрана како га прозор приказује" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Преполови оригиналну величину видео снимка" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Поврати оригиналну величину видео снимка" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Удвостручи оригиналну величину видео снимка" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Прилагоди контраст" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Прилагоди осветљеност" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Прилагоди гаму" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Прилагоди засићење" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Омогући или онемогући преплитање" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Кружи кроз промену размере" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Корисничко Сучеље" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Видео" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Аудио" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Поднатпис" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Репродукција" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Трагање" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Учитај звучни запис…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Учитај превод…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Потребно је поновно покретање да би измена подешавања украса клијента имала " +"ефекат." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Додај Датотеку у Листу Пуштања" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Отвори Датотеку" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Додај Локацију у Листу Пуштања" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Отвори Локацију" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Сачувај Листу Пуштања" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK прочеље за MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Срђан С." diff --git a/po/sr@latin.po b/po/sr@latin.po new file mode 100644 index 0000000..df1a701 --- /dev/null +++ b/po/sr@latin.po @@ -0,0 +1,1108 @@ +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #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: 2020-06-23 10:41-0400\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 "Automatically resize window to fit video" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Omogući tamnu temu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Omogući ukrase klijenta" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Koristi plivajuće kontrole u režimu prozora" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Uvek otvori novi prozor" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Opcije koje treba preneti na mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Putanja do mpv konfiguracione datoteke" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Putanja do mpv konfiguracione datoteke unosa" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Omogući podršku za MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Omogući podršku za multimedijalne tastere" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Pripremi metapodatke" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Širina prozora" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Visina prozora" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Jačina zvuka" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Širina liste puštanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Dozvoljava prikaz kontrola" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Prikaži listu puštanja" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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:30 +msgid "The Celluloid Developers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +#, 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:285 +msgid "The main window showing the application in action" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Glavni prozor sa onemogućenim CSD-om" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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:495 +msgid "Playing" +msgstr "Reprodukcija" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Prikaži verziju izdanja" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Naniži" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Napravi novi prozor" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Ne povezuj na već pokrenut primerak" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Pauziraj" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Pusti" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Zaustavi" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Napred" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Nazad" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Sledeće Poglavlje" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Prethodno Poglavlje" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Ceo Ekran" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Greška" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Sve Datoteke" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Medijski zapisi" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Zvučni zapisi" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Video zapisi" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Slike" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Datoteka" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Sačuvaj Listu Puštanja" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Novi prozor" + +#: src/celluloid-menu.c:242 +#, fuzzy +msgid "_Quit" +msgstr "Napusti" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Uredi" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Postavke" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Video Snimak" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Audio Snimak" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Prevod" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Pregled" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Prikaži Kontrole" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Prikaži Listu Puštanja" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Ceo Ekran" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Pomoć" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Prečice Tastature" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "" + +#: src/celluloid-menu.c:321 +#, 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:130 +msgid "Location:" +msgstr "Lokacija:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Otkaži" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Otvori" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Neuspešna primena jedne ili više MPV opcija." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Dodaj..." + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Dodaj_Lokaciju..." + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Nasumično" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Lista Puštanja" + +#: src/celluloid-playlist-widget.c:943 +#, fuzzy +msgid "Playlist is empty" +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:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Sačuvaj" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Kruži kroz audio snimke" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Smanji/pojačaj" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Isključi ili uključi zvuk" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Prilagodi kašnjenje zvuka za +/- 0.1 sekund" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Promeni vidljivost podnatpisa" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Kruži kroz dostupne podnatpise" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Prilagodi kašnjenje podnatpisa za +/- 0.1 sekund" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Izmeni SSA/ASS stil podnatpisa" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Pomeri podnatpis gore/dole" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Izmeni VSFilter režim usklađenosti" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Kruži kroz video snimke" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Povećaj/umanji opseg skeniranja odnosa" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Napravi snimak ekrana" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Napravi snimak ekrana bez podnatpisa" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Napravi snimak ekrana kako ga prozor prikazuje" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Prepolovi originalnu veličinu video snimka" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Povrati originalnu veličinu video snimka" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Udvostruči originalnu veličinu video snimka" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Prilagodi kontrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Prilagodi osvetljenost" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Prilagodi gamu" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Prilagodi zasićenje" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Omogući ili onemogući preplitanje" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Kruži kroz promenu razmere" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Korisničko Sučelje" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Audio" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Podnatpis" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Reprodukcija" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Traganje" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Učitaj zvučni zapis..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Učitaj prevod..." + +#: src/celluloid-view.c:901 +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:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Dodaj Datoteku u Listu Puštanja" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Otvori Datoteku" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Dodaj Lokaciju u Listu Puštnja" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Otvori Lokaciju" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Sačuvaj Listu Puštanja" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK pročelje za MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Srđan S." diff --git a/po/sv.po b/po/sv.po new file mode 100644 index 0000000..96968c7 --- /dev/null +++ b/po/sv.po @@ -0,0 +1,1116 @@ +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #zanata +# Åke Engelbrektson , 2020. #zanata +# Kristoffer Brissman , 2021. #zanata +# Åke Engelbrektson , 2021. #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: 2021-02-21 03:36-0500\n" +"Last-Translator: Kristoffer Brissman \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 "Automatically resize window to fit video" +msgstr "Ändra automatiskt storlek på fönster för att passa videon" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Aktivera mörkt tema" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Aktivera fönsterdekorationer i klienten" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Använd flytande kontroller i fönsterläge" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "Dölj muspekare automatiskt i fönsterläge" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "Lägsta muspekarhastighet vid vilken flytande kontroller visas igen." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" +"Storlek på den döda zon i vilken markörens rörelse inte kommer att medföra " +"att kontrollerna visas." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Använd hoppa-över-knappar för att kontrollera spelningslista" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "Låt filväljaren komma ihåg senaste filens plats" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Öppna alltid nytt fönster" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Alternativ att skicka vidare till mpv" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Sökväg till mpv konfigurationsfil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "Läs in mpv-konfigurationsfil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Sökväg till mpv indata konfigurationsfil" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "Läs in konfigurationsfil för mpv-indata" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Aktivera stöd för MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Aktivera stöd för media knappar" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Läs in metadata i förväg" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ignorera uppspelningsfel" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "Förhindra sessionsvänteläge" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Fönsterbredd" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Fönsterhöjd" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Om fönstret är maximerat eller inte" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Volym för spelaren" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Om spelningslistan skall börja om när slutet nås" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Spelningslistans bredd" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Visa eller visa ej kontrollerna" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Visa spelningslistan eller inte" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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 "" +"Celluloid är en enkel mediaspelare som kan spela upp i stort sett alla film-" +" och ljudformat. Den stödjer spelningslistor och MPRIS2 " +"mediaspelarkontroller. Designen av Celluloid följer GNOME Human Interface " +"Guidelines, men kan också anpassas för andra system som inte använder " +"klientsidans dekorationer (CSD). Den är baserad på biblioteket mpv och GTK." + +#: 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 spelningslista" + +#: 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:30 +msgid "The Celluloid Developers" +msgstr "Celluloids utvecklare" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Den här versionen innehåller följande ändringar:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" +"Visa endast ett felmeddelande när ett stort antal fel uppstår i snabb följd" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "Lägg till menyobjekt för att öppna mappar." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "Lägg till stöd för externa videospår" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Ange standard skärmklippsmapp till XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Lägg till kommandoalternativ för inställning av WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "Lägg till alternativet att dölja muspekaren automatiskt i fönsterläge" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Huvudfönstret med CSD inaktiverat" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +msgid "The main window with playlist open" +msgstr "Huvudfönstret med spelningslista öppen" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:5 +msgid "Multimedia Player" +msgstr "Multimediaspelare" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Spela filmer och videor" + +#. 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:495 +msgid "Playing" +msgstr "Spelar" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Visa utgivningsversion" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Lägg till i kö" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Skapa ett nytt fönster" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "ALTERNATIV" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Anslut inte till en instans som redan körs" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Paus" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Spela upp" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Stopp" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Framåt" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Spola tillbaka" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Nästa kapitel" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Föregående kapitel" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Upprepa spelningslista" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "Blanda spelningslista" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Växla helskärm" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Fel" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Alla filer" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Mediefiler" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Ljudfiler" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Videofiler" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Bildfiler" + +#: src/celluloid-file-chooser.c:184 +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 "_Läs in externt…" + +#. Disable the menu item by setting the action to something +#. * invalid. +#: src/celluloid-menu.c:207 +msgid "No disc found" +msgstr "Ingen skiva hittades" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Fil" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Öppna…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "Öppna _mapp…" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "Öppna _plats…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "Öppna _skiva…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "_Spara spelningslista" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Nytt fönster" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Avsluta" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Redigera" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Inställningar" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Videospår" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Ljudspår" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Undertextspår" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Visa" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Visa/Dölj kontroller" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Visa/Dölj spelningslista" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Helskärm" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Hjälp" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Kortkommandon" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Om Celluloid" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Öppna _skiva" + +#: 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:130 +msgid "Location:" +msgstr "Plats:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Avbryt" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Öppna" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Misslyckades att tillämpa en eller flera mpv-parametrar." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Kopiera plats" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_ta bort" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Lägg till…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "Lägg till _mapp…" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Lägg till _plats…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Blanda" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Upprepa _fil" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Upprepa _spelningslista" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Spelningslista" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Spelningslistan är tom" + +#: src/celluloid-plugins-manager.c:163 src/celluloid-plugins-manager.c:409 +msgid "Add Plugin" +msgstr "Lägg till insticksmodul" + +#: src/celluloid-plugins-manager.c:175 +msgid "Lua Plugins" +msgstr "Insticksmoduler Lua" + +#: src/celluloid-plugins-manager.c:181 +msgid "JavaScript Plugins" +msgstr "Insticksmoduler JavaScript" + +#: src/celluloid-plugins-manager.c:186 +msgid "C Plugins" +msgstr "C-instick" + +#: 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 "Inga insticksmoduler hittades" + +#: 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 "Vill du verkligen ta bort detta skript? Denna åtgärd 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:341 +msgid "mpv configuration file:" +msgstr "Mpv-konfigurationsfil:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "Konfigurationsfil för mpv-indata:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "Extra mpv-parametrar:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Gränssnitt" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Konfigurationsfiler" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Diverse" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Insticksmoduler" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Spara" + +#: src/celluloid-preferences-dialog.c:432 +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 spelningslista" + +#: src/celluloid-shortcuts-window.c:60 +msgid "Add location to playlist" +msgstr "Lägg till plats i spelningslista" + +#: 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 spelningslista" + +#: 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 speltid/varaktighet" + +#: 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 5 sekunder" + +#: src/celluloid-shortcuts-window.c:72 +msgid "Exact seek backward/forward 1 second" +msgstr "Sök exakt bakåt/framåt en sekund" + +#: src/celluloid-shortcuts-window.c:73 +msgid "Seek backward/forward 1 minute" +msgstr "Sök bakåt/framåt en minut" + +#: src/celluloid-shortcuts-window.c:74 +msgid "Exact seek backward/forward 5 seconds" +msgstr "Sök exakt bakåt/framåt 5 sekunder" + +#: src/celluloid-shortcuts-window.c:75 +msgid "Seek to previous/next subtitle" +msgstr "Sök 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 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 uppspelningshastigheten med 10%" + +#: src/celluloid-shortcuts-window.c:81 +msgid "Halve/double current playback speed" +msgstr "Halva/Dubbla aktuella uppspelningshastigheten" + +#: src/celluloid-shortcuts-window.c:82 +msgid "Reset playback speed to normal" +msgstr "Återställ normal uppspelningshastighet" + +#: src/celluloid-shortcuts-window.c:83 +msgid "Go backward/forward in the playlist" +msgstr "Gå bakåt/framåt i spelningslistan" + +#: src/celluloid-shortcuts-window.c:84 +msgid "Remove selected playlist item" +msgstr "Ta bort markerat objekt från spelningslista" + +#: src/celluloid-shortcuts-window.c:85 +msgid "Save playlist" +msgstr "Spara spelningslista" + +#: src/celluloid-shortcuts-window.c:86 +msgid "Set/clear A-B loop points" +msgstr "Ange/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 "Enter search mode" +msgstr "Gå till sökläge" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Hoppa till nästa träff" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Hoppa till föregående träff" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Avsluta sökläge" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Bläddra igenom ljudspår" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Sänk/Höj volymen" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Slå på eller av ljud" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Justera ljudfördröjning med +/- 0,1 sekunder" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Växla synlighet av undertexter" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Bläddra igenom tillgängliga undertexter" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Justera undertexters fördröjning med +/- 0,1 sekunder" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "SSA/ASS åsidosättning av undertexters stil av/på" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Flytta undertexter upp/ner" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Växla VSFilter aspekt kompatibilitetsläge" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Bläddra igenom videospår" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Minska/Öka panorera-och-skanna-området" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Ta ett skärmklipp" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Ta ett skärmklipp, utan undertexter" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Ta ett skärmklipp, som det visas i fönstret." + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Ändra storlek på videon till halva originalstorleken" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Återställ videon till sin ursprungliga storlek" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Ändra storlek på videon till dubbla originalstorleken" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Justera kontrast" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Justera ljusstyrka" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Justera gamma" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Justera färgmättnad" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Aktivera eller inaktivera deinterlacer" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Ändra överskridning av bildförhållande" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Användargränssnitt" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Ljud" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Undertext" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Uppspelning" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Söker" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Läs in ljudspår…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "Läs in videospår…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Läs in undertextspår…" + +#: src/celluloid-view.c:901 +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:1444 +msgid "Add Folder to Playlist" +msgstr "Lägg till mapp till spelningslista" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "Öppna mapp" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Lägg till fil i spelningslista" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Öppna fil" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Lägg till plats till spelningslista" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Öppna plats" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Spara spelningslista" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "Ett GTK gränssnitt för MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Patrik Nilsson \n" +"Åke Engelbrektson " diff --git a/po/tr.po b/po/tr.po new file mode 100644 index 0000000..2c5ca59 --- /dev/null +++ b/po/tr.po @@ -0,0 +1,1127 @@ +# Serdar Sağlam , 2019. #zanata +# gnome-mpv , 2019. #zanata +# Serdar Sağlam , 2020. #zanata +# gnome-mpv , 2020. #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: 2020-06-23 10:50-0400\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 "Automatically resize window to fit video" +msgstr "Videoya sığması için pencereyi otomatik olarak yeniden boyutlandır" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Koyu temayı etkinleştir" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "İstemci tarafı süslemelerini etkinleştir" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Pencere kipinde kayan kontroller kullan" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +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:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Oynatma listesini kontrol için atlama düğmelerini kullan" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Her zaman yeni pencere aç" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Mpv'ye geçiş seçenekleri" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Mpv yapılandırma dosyası yolu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Mpv giriş yapılandırma dosyası yolu" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "MPRIS desteğini etkinleştir" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Medya tuşları desteğini etkinleştir" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Meta verileri önceden al" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Oynatma hatalarını yoksay" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Pencere genişliği" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Pencere yüksekliği" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "Pencerenin büyütülüp büyütülmediği" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Oynatıcı hacmi" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "Oynatma listesinin sonuna ulaşıldığında döngü yapıp yapmamak" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Oynatma listesi genişliği" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Kontrolleri göster veya gösterme" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Oynatma listesini göster veya gösterme" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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 "" +"Celluloid, neredeyse tüm video ve ses biçimlerini oynatabilen basit bir " +"medya oynatıcıdır. Oynatma listelerini ve MPRIS2 medya oynatıcı " +"kontrollerini destekler. Celluloid tasarımı GNOME Arayüz Kılavuzlarına " +"uygundur, ancak istemci tarafı süslemeleri (CSD) kullanmayan diğer sistemler" +" için de uyarlanabilir. Mpv kütüphanesine ve GTK'ya dayanmaktadır." + +#: 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:30 +msgid "The Celluloid Developers" +msgstr "Celluloid Geliştiricileri" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +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:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +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:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "Farsça çeviriyi hazırlayan @danialbehzadi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "Ukraynaca çeviriyi hazırlayan @vl-nix" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" +"Mpv --border seçeneğini kullanarak pencere dekorasyonlarını göstermek / " +"gizlemek için destek" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "Diskleri açmak için menü ögesi ekle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" +"Ses açılır penceresi pencereli kipte açıkken imlecin gizlenmesini engelle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "Mpv 0.30 kilitlenmesi düzeltildi" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "Proje Celluloid olarak yeniden adlandırıldı" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "Türkçe çeviriyi hazırlayan @Serdar Sağlam" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "Esperanto çeviriyi hazırlayan @F3nd0" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "Opengl-cb'den yeni render API'sına taşı" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "Sayısal tuş takımlarını yönet" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "Unicode tuş takımlarını yönet" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "Medya anahtarı olaylarını mpv'ye ilet" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Denetimlerin yasak olduğu imleç hızını kontrol etmek için dconf anahtarı " +"ekleyin" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "Oynatma hatalarını bastırmak için seçenek ekle" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +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:202 +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:205 +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:208 +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:211 +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:214 +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:230 +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:233 +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:237 +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:240 +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:243 +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:258 +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:262 +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:265 +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:268 +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:271 +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:285 +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:289 +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:293 +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 "Çoklu Ortam Oynatıcı" + +#: data/io.github.celluloid_player.Celluloid.desktop.in:6 +msgid "Play movies and videos" +msgstr "Filmleri ve videoları oynatın" + +#. 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:495 +msgid "Playing" +msgstr "Oynatılıyor" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Mevcut sürümü göster" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Kuyruğa al" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Yeni pencere oluştur" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "SEÇENEKLER" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Pencere rolünü ayarla" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Zaten çalışan bir örneğe bağlanmayın" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Duraklat" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Oynat" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Durdur" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "İleri Sar" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Geri Sar" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Sonraki Bölüm" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Önceki Bölüm" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Yinele" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Tam Ekran ⏎" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Hata" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Tüm Dosyalar" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Medya Dosyaları" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Ses Dosyaları" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Video Dosyaları" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Görüntü Dosyaları" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "Disk bulunamadı" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Dosya" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Aç…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "_Konum Aç…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "_Disk Aç…" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "Listeyi _Kaydet" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Yeni Pencere" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "_Çık" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "_Düzenle" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Tercihler" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "_Video" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Diller" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "_Altyazılar" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Görünüm" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Kontrol Tuşları" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Oynatma Listesi" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Tam Ekran" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Yardım" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Klavye Kısayolları" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "Celluloid _Hakkında" + +#: src/celluloid-menu.c:321 +msgid "Open _Disc" +msgstr "Disk _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:130 +msgid "Location:" +msgstr "Konum:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_İptal" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Aç" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Bir veya daha fazla MPV seçeneği uygulanamadı." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "Konumu _Kopyala" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "_Kaldır" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Ekle…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "_Konum Ekle…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_Karıştır" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "_Dosyayı Yinele" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "_Yinele" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Oynatma Listesi" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +msgstr "Oynatma listesi boş" + +#: 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:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Arabirim" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Yapılandırma Dosyaları" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Çeşitli" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Eklentiler" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "_Kaydet" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "Arama kipine gir" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "Bir sonraki eşlemeye atla" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "Bir önceki eşlemeye atla" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "Arama kipinden çık" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Ses parçaları arasında geçiş yap" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Sesi azalt/arttır" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Sesi kapat/aç" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Ses gecikmesini +/- 0.1 saniye olarak ayarla" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Altyazı görünürlüğünü değiştir" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Kullanılabilir altyazılar arasında geçiş yap" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Altyazı gecikmesini +/- 0.1 saniye olarak ayarla" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "SSA/ASS altyazı stili geçersiz kılmayı değiştir" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Altyazıları yukarı/aşağı taşı" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "VSFilter en boy uyumluluk kipini değiştir" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Yinelenen mevcut video parçaları" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Pan ve tarama aralığını azalt/artır" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Ekran görüntüsü al" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Altyazısız ekran görüntüsü al" + +#: src/celluloid-shortcuts-window.c:118 +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:119 +msgid "Resize video to half its original size" +msgstr "Videoyu orijinal boyutunun yarısı olarak yeniden boyutlandır" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Videoyu orijinal boyuta yeniden boyutlandır" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Orijinal boyutunu ikiye katlamak için videoyu yeniden boyutlandır" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Karşıtlığı ayarla" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Parlaklığı ayarla" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Gama'yı ayarla" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Doygunluğu ayarla" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Deinterlacer özelliğini etkinleştir veya devre dışı bırak" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Yineleme en boy oranı geçersiz kıl" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Kullanıcı Arabirimi" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Video" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Ses" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Altyazı" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Oynat" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Geçiş" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Ses Parçası Yükle…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Altyazı Parçası Yükle…" + +#: src/celluloid-view.c:901 +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:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Oynatma Listesine Dosya Ekle" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Dosya Aç" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Oynatma Listesine Konum Ekle" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Konum Aç" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Oynatma Listesini Kaydet" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "MPV için bir GTK arayüzü" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "Serdar Sağlam " diff --git a/po/uk.po b/po/uk.po new file mode 100644 index 0000000..1c34162 --- /dev/null +++ b/po/uk.po @@ -0,0 +1,1128 @@ +# Ukrainian translations for gnome-mpv package. +# , 2019. +# Stepan Perun , 2019. #zanata +# gnome-mpv , 2019. #zanata +# gnome-mpv , 2020. #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: 2020-06-23 10:40-0400\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 "Automatically resize window to fit video" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "Увімкнути темну тему" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "Увімкнути декорування на стороні клієнта" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "Використовувати плаваючі елементи керування у віконному режимі" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "" +"Мінімальна швидкість курсору, коли плаваючі елементи управління не " +"приховані." + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "Використовувати кнопки пропуску для керування списком відтворення" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "Завжди відкривати нове вікно" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "Перейти до параметрів MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "Шлях до файлу конфігурації MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "Шлях до файлу конфігурації вводу MPV" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "Увімкнути підтримку MPRIS" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "Увімкнути підтримку мультимедійних клавіш" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "Попередня вибірка метаданих" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "Ігнорувати помилки відтворення" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "Ширина вікна" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "Висота вікна" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "Гучність" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "Ширина списку відтворення" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "Показати або не показувати елементи керування" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "Показати або приховати список відтворення" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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:30 +msgid "The Celluloid Developers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "Цей випуск містить наступні зміни:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "Цей список є неповним. Повний список змін див. в журналі git." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +#, fuzzy +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" +"Мінімальна швидкість курсору, коли плаваючі елементи управління не " +"приховані." + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +#, fuzzy +msgid "Add option for suppressing playback errors" +msgstr "Ігнорувати помилки відтворення" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "Розділіть вкладку Загальні в діалозі налаштувань" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "Поліпшення поведінки при перемиканні списку відтворення" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "Перемістити елементи меню програми в основне меню" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "Використовувати окреме з'єднання MPRIS DBus для кожного вікна" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "Додати підтримку циклу для MPRIS" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +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:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "Встановити каталог за замовчуванням для скріншотів у XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +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:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "Додати параметр командного рядка для встановлення WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" +"Додати пункт контекстного меню для видалення елементів списку відтворення" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" +"Додати пункт контекстного меню для копіювання розташування елементів списку " +"відтворення" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" +"Додати кнопки пропуску для зміни запису списку відтворення, а не глави" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "Приймати не локальні розташування" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "Додати пункт меню правою кнопкою миші для зациклення одного файлу" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" +"Обробляти події зміни властивостей для повноекранного режиму і масштабу " +"вікна" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" +"Додати опцію автоматичного приховування курсору миші у віконному режимі" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "Головне вікно, яке показує програму у дії" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "Головне вікно з вимкненим CSD" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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:495 +msgid "Playing" +msgstr "Відтворюється" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "Показати версію релізу" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "Поставити в чергу" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "Створити нове вікно" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "ПАРАМЕТРИ" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "Встановіть роль вікна" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "Не підключатися до вже працюючого екземпляра" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "Призупинити" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "Відтворення" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "Зупинити" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "Перемотати вперед" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "Перемотати назад" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "Наступний розділ" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "Попередній розділ" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "Режим повтору" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "Перехід у повноекранний режим і назад" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "Помилка" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "Усі файли" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "Медіафайли" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "Аудіофайли" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "Відеофайли" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "Файли зображень" + +#: src/celluloid-file-chooser.c:184 +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:207 +#, fuzzy +msgid "No disc found" +msgstr "Модулі не знайдено" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "_Файл" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "_Відкрити..." + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "_Відкрити розташування..." + +#: src/celluloid-menu.c:239 +#, fuzzy +msgid "Open _Disc…" +msgstr "_Відкрити розташування..." + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "З_берегти список відтворення" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "_Створити вікно" + +#: src/celluloid-menu.c:242 +#, fuzzy +msgid "_Quit" +msgstr "Завершити" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "З_міни" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "_Параметри" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "В_ідео доріжка" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "_Аудіо доріжка" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "Доріжка с_убтитрів" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "_Вигляд" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "_Показати/Приховати елементи керування" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "_Показати/Приховати список відтворення" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "_Повноекранний режим" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "_Довідка" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "_Комбінації клавіш" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "_Про Celluloid" + +#: src/celluloid-menu.c:321 +#, 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:130 +msgid "Location:" +msgstr "Розташування:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "_Скасувати" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "_Відкрити" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "Не вдалося застосувати один або кілька параметрів MPV." + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "_Копіювати розташування" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "Ви_лучити" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "_Додати…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "Дод_ати розташування…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "_У випадковому порядку" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "Повторювати _файл" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "Повторювати _список відтворення" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "Список відтворення" + +#: src/celluloid-playlist-widget.c:943 +#, fuzzy +msgid "Playlist is empty" +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:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "Інтерфейс" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "Файли налаштувань" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "Різне" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "Модулі" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "З_берегти" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "Циклічно доступні аудіо доріжки" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "Зменшити/збільшити гучність" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "Вимкнути або увімкнути звук" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "Змінити затримку аудіо на + / - 0,1 секунди" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "Переключити видимість субтитрів" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "Циклічно переключити доступні субтитри" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "Змінити затримку субтитрів на + / - 0,1 секунди" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "Переключити стиль субтитрів SSA/ASS" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "Перемістити субтитри вгору/вниз" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "Перемикання режиму сумісності аспектів VSFilter" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "Циклічно доступні відео доріжки" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "Зменшує/збільшує діапазон панорамування та сканування" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "Зробити скріншот" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "Зробити скріншот, без субтитрів" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "Зробити скріншот, з субтитрами та OSD, масштабуванням" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "Змінити розмір відео до половини свого вихідного розміру" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "Змінити розмір відео до оригінального розміру" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "Подвоїти розмір відео щодо оригінального розміру" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "Регулювання контрастності" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "Регулювання яскравості" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "Регулювання гами" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "Регулювання насиченості" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "Увімкнути або вимкнути деінтерлейсинг" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "Цикл корекції співвідношення сторін" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "Інтерфейс користувача" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "Відео" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "Аудіо" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "Субтитри" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "Відтворення" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "Перехід" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "Завантажити звукову доріжку…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "Завантажити субтитри…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "" +"Увімкнути або вимкнути декорування на стороні клієнта вимагає " +"перезавантаження щоб зміни набули чинності." + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "Додати файл до списку відтворення" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "Відкрити файл" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "Додати розташування до списку відтворення" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "Відкрити розташування" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "Зберегти список відтворення" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "GTK інтерфейс для MPV" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 0000000..4e55ba3 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,1115 @@ +# 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 +# gnome-mpv , 2020. #zanata +# 玉堂白鹤 , 2020. #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: 2020-06-30 08:57-0400\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 "Automatically resize window to fit video" +msgstr "自动调整窗口大小以适合视频" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "启用暗色主题" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "启用客户端装饰" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "在窗口模式下启用浮动控制" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "浮动控件取消隐藏时的最小光标速度。" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "使用跳转按钮控制播放列表" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "总是打开新窗口" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "要传递给 mpv 的选项" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "mpv 配置文件的路径" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "mpv 输入配置文件的路径" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "启用 MPRIS 支持" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "启用媒体键支持" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "预先读取元数据" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "忽略播放错误" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "窗口宽度" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "窗口高度" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "窗口是否最大化" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "播放器音量" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "播放列表结束时是否循环播放" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "播放列表宽度" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "是否显示控制栏" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "是否显示播放列表" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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:30 +msgid "The Celluloid Developers" +msgstr "Celluloid 开发者" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "该发布版本包含了以下变更:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "这个列表不是完整的。请到 git log 中查看完整的 changelog。" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "实现播放列表搜索。" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "更新快捷键对话框中的快捷方式列表。" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "添加 Kimmo Kujansuu 贡献的芬兰语翻译。" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "添加 @bertronika 贡献的斯洛文尼亚语翻译。" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "添加 @danialbehzadi 贡献的波斯语翻译" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "添加 @vl-nix 贡献的乌克兰语翻译" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "使用 mpv 选项 --border 添加显示/隐藏窗口装饰的支持" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "添加打开光盘的菜单项" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "将项目重命名为 Celluloid" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "添加选项以抑制播放错误" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "在首选项对话框中分离“通用”标签页" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "改善平铺式窗口管理器下的切换显示播放列表功能" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "将 App Menu 的项目移动到主菜单" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "为每个窗口使用分离的 MPRIS DBus 连接" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "添加 MPRIS 属性 LoopStatus 的支持" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +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:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "设置默认的截图目录为 XDG_PICTURES_DIR" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +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:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "增加一个命令行参数来设置 WM_ROLE" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "增加上下文菜单项来移除播放列表里的项目" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "增加上下文菜单项来复制播放列表项目的路径" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "增加选项来让跳转按钮可以切换播放列表项,而不是切换章节" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "让文件选择器可以接受非本地路径" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "增加循环播放单个文件的右键菜单项" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "处理全屏和窗口大小的属性变化事件" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "增加选项以在窗口模式下自动隐藏鼠标指针" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "显示运行中应用的主窗口" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "关闭了 CSD 的主窗口" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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:495 +msgid "Playing" +msgstr "正在播放" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "显示发布版本号" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "加入队列" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "创建一个新窗口" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "选项" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "设置窗口规则" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "不要连接到已经运行中的实例" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "暂停" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "播放" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "停止" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "快进" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "快退" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "下一章节" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "上一章节" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "循环播放列表" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "随机播放列表" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "切换全屏" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "错误" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "所有文件" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "媒体文件" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "音频文件" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "视频文件" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "图像文件" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "未找到光盘" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "文件(_F)" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "打开...(_O)" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "打开路径...(_L)" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "打开光盘...(_D)" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "保存播放列表(_S)" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "新建窗口(_N)" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "退出(_Q)" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "编辑(_E)" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "首选项(_P)" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "视频轨道(_V)" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "音轨(_A)" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "字幕轨道(_u)" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "视图(_V)" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "切换控制栏(_T)" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "切换播放列表(_T)" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "全屏(_F)" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "帮助(_H)" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "快捷键(_K)" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "关于 Celluloid(_A)" + +#: src/celluloid-menu.c:321 +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:130 +msgid "Location:" +msgstr "路径:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "取消(_C)" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "打开(_O)" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "应用一个或多个 MPV 选项失败。" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "复制路径(_A)" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "移除(_R)" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "添加(_A)…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "添加路径(_L)" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "随机播放(_S)" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "循环播放文件(_F)" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "循环播放列表(_P)" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "播放列表" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +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:341 +msgid "mpv configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "用户界面" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "配置文件" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "杂项" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "插件" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "保存(_S)" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "进入搜索模式" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "跳转到下一匹配" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "跳转到上一匹配" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "退出搜索模式" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "循环播放音轨" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "减少/增大音量" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "静音/取消静音" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "将音频延迟调整为 +/- 0.1 秒" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "切换字幕可见性" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "循环播放当前字幕范围" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "将字幕延迟调整为 +/- 0.1 秒" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "切换 SSA/ASS 字幕样式覆盖" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "移动到上一行/下一行字幕" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "切换 VSFilter aspect 兼容模式" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "循环播放视频轨道" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "减小/增加 pan-and-scan 范围" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "截取屏幕截图" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "截取屏幕截图,不包含字幕" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "截取屏幕截图,就如同窗口中显示的一样(包含字幕、OSD、缩放)" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "调整视频大小为其原始大小的一半" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "调整视频大小为其原始大小" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "调整视频大小为其原始大小的两倍" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "调整对比度" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "调整亮度" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "调整伽玛值" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "调整饱和度" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "激活/取消激活去隔行扫描器" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "循环切换宽高比重写" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "用户界面" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "视频" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "音频" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "字幕" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "回放" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "跳转" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "加载音频轨道..." + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "加载视频轨…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "加载字幕轨道..." + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "启用或禁用客户端装饰(CSD),需要重启播放器以生效。" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "添加文件到播放列表" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "打开文件" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "添加路径到播放列表" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "打开路径" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "保存播放列表" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "MPV 的 GTK 前端程序" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Mingye Wang , 2015, 2016.\n" +"Jeff Bai , 2015, 2016.\n" +"Sun , 2015, 2016.\n" +"Huang Jiayao , 2017, 2018." diff --git a/po/zh_TW.po b/po/zh_TW.po new file mode 100644 index 0000000..3399a12 --- /dev/null +++ b/po/zh_TW.po @@ -0,0 +1,1115 @@ +# 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 +# Hsiu-Ming Chang , 2020. #zanata +# gnome-mpv , 2020. #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: 2020-12-31 11:30-0500\n" +"Last-Translator: Hsiu-Ming Chang \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 "Automatically resize window to fit video" +msgstr "自動調整視窗大小以符合影片" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:23 +msgid "Enable dark theme" +msgstr "啟用暗色主題" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:29 +msgid "Enable client-side decorations" +msgstr "啟用客戶端裝飾" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:35 +msgid "Use floating controls in windowed mode" +msgstr "在視窗模式下啟用浮動控制介面" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:41 +msgid "Automatically hide mouse cursor in windowed mode" +msgstr "在視窗模式下自動隱藏滑鼠游標" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:47 +msgid "The minimum cursor speed at which floating controls will be unhidden." +msgstr "取消隱藏浮動控制介面的最小游標速度。" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:54 +msgid "" +"Size of the dead zone in which cursor movement will not cause the controls " +"to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:60 +msgid "Use skip buttons for controlling playlist" +msgstr "使用跳轉按鈕控制播放清單" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:66 +msgid "Make file chooser remember last file's location" +msgstr "讓檔案選擇器記住上次的檔案位置" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:72 +msgid "Always open new window" +msgstr "總是開啟新視窗" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:78 +#: src/celluloid-application.c:575 +msgid "Options to pass to mpv" +msgstr "要傳遞給 mpv 的選項" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:84 +msgid "Path to mpv configuration file" +msgstr "mpv 配置檔的路徑" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:90 +msgid "Load mpv configuration file" +msgstr "載入 mpv 配置檔" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:96 +msgid "Path to mpv input configuration file" +msgstr "mpv 輸入配置檔的路徑" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:102 +msgid "Load mpv input configuration file" +msgstr "載入 mpv 輸入配置檔" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:108 +msgid "Enable MPRIS support" +msgstr "啟用 MPRIS 支援" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:114 +msgid "Enable media keys support" +msgstr "啟用播放快捷鍵支援" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:120 +msgid "Prefetch metadata" +msgstr "預先讀取詮釋資料" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:126 +msgid "Ignore playback errors" +msgstr "無視播放錯誤訊息" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:132 +msgid "Inhibit session idling" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:142 +msgid "Width of the window" +msgstr "視窗寬度" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:148 +msgid "Height of the window" +msgstr "視窗高度" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:154 +msgid "Whether or not the window is maximized" +msgstr "視窗是否最大化" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:161 +msgid "Volume of player" +msgstr "播放器音量" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:167 +msgid "Whether or not to loop when the end of playlist is reached" +msgstr "播放清單結束時是否循環播放" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:173 +msgid "Width of the playlist" +msgstr "播放清單寬度" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:179 +msgid "Show or not show the controls" +msgstr "是否顯示控制介面" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:185 +msgid "Show or not show the playlist" +msgstr "是否顯示播放清單" + +#: data/io.github.celluloid_player.Celluloid.gschema.xml:191 +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:451 +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 "" +"Celluloid 是一個簡單的媒體播放器,可以播放幾乎所有影片和音訊格式。支援播放清單和 MPRIS2 媒體播放器控制介面。Celluloid " +"的設計遵循 GNOME Human Interface Guidelines,但也可以適用於不使用客戶端裝飾 (CSD) 的其他系統。Celluloid" +" 基於 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 "MPRIS2 D-Bus 介面" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:30 +msgid "The Celluloid Developers" +msgstr "Celluloid 開發者" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:34 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:73 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:126 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:156 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:195 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:226 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:254 +msgid "This release contains the following changes:" +msgstr "此發行版本包含了以下變更:" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:38 +msgid "Make it possible to activate context menu when the playlist is empty." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:41 +msgid "" +"Prevent constant resizing of the seek bar due to timestamp label resizing as" +" its value changes." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:45 +msgid "" +"Only show a single error dialog when a large number of errors occurs in " +"rapid succession." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:49 +msgid "Add menu item for opening folders." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:52 +msgid "" +"Adjust position of UI elements of modal dialogs in non-CSD mode to be more " +"consistent with CSD mode." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:56 +msgid "Add support for loading external video tracks." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:59 +msgid "Make playlist shuffle toggleable." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:62 +msgid "Make arrow key bindings work with arrow keys on numpad." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:66 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:119 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:149 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:188 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:219 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:247 +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:275 +msgid "This listing is incomplete. See git log for complete changelog." +msgstr "這個清單不是完整的。請到 git log 中檢視完整的變更記錄。" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:77 +msgid "" +"Adjust the range of volume button based on the value of the volume-max " +"property." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:81 +msgid "Retain window maximization state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:84 +msgid "Retain loop state across sessions." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:87 +msgid "Implement playlist search." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:90 +msgid "Update the list of shortcuts in Keyboard Shortcuts dialog." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:93 +msgid "Correctly handle quotes and escape sequences in extra mpv options." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:96 +msgid "Display time at cursor position when hovering the seek bar." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:99 +msgid "" +"Deprecate '--mpv-options'. Options starting with '--mpv-' can be used to set" +" mpv options instead. For example, passing '--mpv-vf=vflip' to Celluloid is " +"equivalent to passing '--vf=vflip' to mpv." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:105 +msgid "" +"Add support for configuring dead zone, an area in which mouse movement will " +"not cause controls to be shown." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:109 +msgid "Make window sizing work correctly with HiDPI displays." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:112 +msgid "Add Finnish translation by Kimmo Kujansuu." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:115 +msgid "Add Slovenian translation by @bertronika." +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:130 +msgid "Add Persian translation by @danialbehzadi" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:133 +msgid "Add Ukranian translation by @vl-nix" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:136 +msgid "" +"Add support for showing/hiding window decorations using the mpv option " +"--border" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:139 +msgid "Add menu item for opening discs" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:142 +msgid "Block cursor autohide when volume popup is open in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:145 +msgid "Fix crash with mpv 0.30" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:160 +msgid "Rename project to Celluloid" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:163 +msgid "Add Turkish translation by @TeknoMobil" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:166 +msgid "Add Esperanto translation by @F3nd0" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:169 +msgid "Migrate from opengl-cb to the new render API" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:172 +msgid "Handle numpad keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:175 +msgid "Handle unicode keybindings" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:178 +msgid "Forward media key events to mpv" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:181 +msgid "" +"Add dconf key for controlling cursor speed at which controls are unhidden" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:184 +msgid "Add option for suppressing playback errors" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:199 +msgid "Split up the General tab in the preferences dialog" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:202 +msgid "Improve behavior when toggling playlist under tiling window managers" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:205 +msgid "Move app menu items to primary menu" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:208 +msgid "Use separate MPRIS DBus connection for each window" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:211 +msgid "Add support for MPRIS property LoopStatus" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:214 +msgid "" +"Add option --mpv-options for setting arbitrary mpv options from the command-" +"line" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:230 +msgid "Set default screenshot directory to XDG_PICTURES_DIR" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:233 +msgid "" +"Improve handling of --window-scale, --autofit, --autofit-larger, and " +"--autofit-smaller" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:237 +msgid "Add command line option for setting WM_ROLE" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:240 +msgid "Add context menu item for removing playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:243 +msgid "Add context menu item for copying location of playlist items" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:258 +msgid "" +"Add option to make skip buttons change playlist entries rather than chapters" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:262 +msgid "Make the file chooser accept non-local locations" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:265 +msgid "Add right-click menu entry for looping a single file" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:268 +msgid "Handle property change events for fullscreen and window-scale" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:271 +msgid "Add option to autohide mouse cursor in windowed mode" +msgstr "" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:285 +msgid "The main window showing the application in action" +msgstr "顯示執行中應用程式的主視窗" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:289 +msgid "The main window with CSD disabled" +msgstr "關閉了 CSD 的主視窗" + +#: data/io.github.celluloid_player.Celluloid.appdata.xml.in:293 +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: 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:495 +msgid "Playing" +msgstr "正在播放" + +#: src/celluloid-application.c:551 +msgid "Show release version" +msgstr "顯示發行版本" + +#: src/celluloid-application.c:559 +msgid "Enqueue" +msgstr "加入佇列" + +#: src/celluloid-application.c:567 +msgid "Create a new window" +msgstr "建立一個新視窗" + +#: src/celluloid-application.c:576 +msgid "OPTIONS" +msgstr "選項" + +#: src/celluloid-application.c:583 +msgid "Set the window role" +msgstr "設定視窗角色 (window role)" + +#: src/celluloid-application.c:591 +msgid "Don't connect to an already-running instance" +msgstr "不要連接到正在執行的實體" + +#: src/celluloid-control-box.c:362 +msgid "Pause" +msgstr "暫停" + +#: src/celluloid-control-box.c:362 src/celluloid-control-box.c:565 +msgid "Play" +msgstr "播放" + +#: src/celluloid-control-box.c:568 +msgid "Stop" +msgstr "停止" + +#: src/celluloid-control-box.c:571 +msgid "Forward" +msgstr "快進" + +#: src/celluloid-control-box.c:574 +msgid "Rewind" +msgstr "倒回" + +#: src/celluloid-control-box.c:577 +msgid "Next Chapter" +msgstr "下一章節" + +#: src/celluloid-control-box.c:580 +msgid "Previous Chapter" +msgstr "前一章節" + +#: src/celluloid-control-box.c:583 +msgid "Loop Playlist" +msgstr "循環播放清單" + +#: src/celluloid-control-box.c:586 +msgid "Shuffle Playlist" +msgstr "隨機播放清單" + +#: src/celluloid-control-box.c:589 src/celluloid-header-bar.c:91 +msgid "Toggle Fullscreen" +msgstr "開關全螢幕" + +#: src/celluloid-controller.c:992 src/celluloid-view.c:1558 +msgid "Error" +msgstr "錯誤" + +#: src/celluloid-file-chooser.c:139 src/celluloid-plugins-manager.c:170 +msgid "All Files" +msgstr "所有檔案" + +#: src/celluloid-file-chooser.c:147 +msgid "Media Files" +msgstr "多媒體檔" + +#: src/celluloid-file-chooser.c:158 +msgid "Audio Files" +msgstr "音訊檔" + +#: src/celluloid-file-chooser.c:166 +msgid "Video Files" +msgstr "影片檔" + +#: src/celluloid-file-chooser.c:174 +msgid "Image Files" +msgstr "圖片檔" + +#: src/celluloid-file-chooser.c:184 +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:207 +msgid "No disc found" +msgstr "未找到光碟" + +#: src/celluloid-menu.c:235 +msgid "_File" +msgstr "檔案(_F)" + +#: src/celluloid-menu.c:236 src/celluloid-menu.c:318 +msgid "_Open…" +msgstr "開啟(_O)…" + +#: src/celluloid-menu.c:237 src/celluloid-menu.c:319 +msgid "Open _Folder…" +msgstr "開啟資料夾(_F)…" + +#: src/celluloid-menu.c:238 src/celluloid-menu.c:320 +msgid "Open _Location…" +msgstr "開啟位置(_L)…" + +#: src/celluloid-menu.c:239 +msgid "Open _Disc…" +msgstr "開啟光碟...(_D)" + +#: src/celluloid-menu.c:240 src/celluloid-menu.c:290 +msgid "_Save Playlist" +msgstr "儲存播放清單(_S)" + +#: src/celluloid-menu.c:241 src/celluloid-menu.c:323 +msgid "_New Window" +msgstr "新增視窗(_N)" + +#: src/celluloid-menu.c:242 +msgid "_Quit" +msgstr "退出(_Q)" + +#: src/celluloid-menu.c:243 +msgid "_Edit" +msgstr "編輯(_E)" + +#: src/celluloid-menu.c:244 src/celluloid-menu.c:296 +msgid "_Preferences" +msgstr "偏好設定(_P)" + +#: src/celluloid-menu.c:245 src/celluloid-menu.c:292 +msgid "_Video Track" +msgstr "視訊軌道(_V)" + +#: src/celluloid-menu.c:246 src/celluloid-menu.c:293 +msgid "_Audio Track" +msgstr "音軌(_A)" + +#: src/celluloid-menu.c:247 src/celluloid-menu.c:294 +msgid "S_ubtitle Track" +msgstr "字幕軌道(_U)" + +#: src/celluloid-menu.c:248 +msgid "_View" +msgstr "檢視(_V)" + +#: src/celluloid-menu.c:249 src/celluloid-menu.c:287 +msgid "_Toggle Controls" +msgstr "開關控制介面(_T)" + +#: src/celluloid-menu.c:250 src/celluloid-menu.c:289 +msgid "_Toggle Playlist" +msgstr "開關播放清單(_T)" + +#: src/celluloid-menu.c:251 +msgid "_Fullscreen" +msgstr "全螢幕(_F)" + +#: src/celluloid-menu.c:252 +msgid "_Help" +msgstr "幫助(_F)" + +#: src/celluloid-menu.c:253 src/celluloid-menu.c:297 +msgid "_Keyboard Shortcuts" +msgstr "快捷鍵(_K)" + +#: src/celluloid-menu.c:254 src/celluloid-menu.c:298 +msgid "_About Celluloid" +msgstr "關於 Celluloid(_A)" + +#: src/celluloid-menu.c:321 +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:130 +msgid "Location:" +msgstr "位置:" + +#: src/celluloid-open-location-dialog.c:136 +#: src/celluloid-preferences-dialog.c:412 +msgid "_Cancel" +msgstr "取消(_C)" + +#: src/celluloid-open-location-dialog.c:138 +msgid "_Open" +msgstr "開啟(_O)" + +#: src/celluloid-player.c:550 +msgid "Failed to apply one or more MPV options." +msgstr "套用一個或多個 MPV 選項失敗。" + +#: src/celluloid-playlist-widget.c:786 +msgid "_Copy Location" +msgstr "複製位置(_C)" + +#: src/celluloid-playlist-widget.c:787 +msgid "_Remove" +msgstr "移除(_R)" + +#: src/celluloid-playlist-widget.c:789 +msgid "_Add…" +msgstr "新增(_A)…" + +#: src/celluloid-playlist-widget.c:790 +msgid "Add _Folder…" +msgstr "加入資料夾(_F)…" + +#: src/celluloid-playlist-widget.c:791 +msgid "Add _Location…" +msgstr "加入位置(_L)…" + +#: src/celluloid-playlist-widget.c:792 +msgid "_Shuffle" +msgstr "隨機播放(_S)" + +#: src/celluloid-playlist-widget.c:793 +msgid "Loop _File" +msgstr "循環播放檔案(_F)" + +#: src/celluloid-playlist-widget.c:794 +msgid "Loop _Playlist" +msgstr "循環播放清單(_P)" + +#: src/celluloid-playlist-widget.c:935 src/celluloid-shortcuts-window.c:136 +msgid "Playlist" +msgstr "播放清單" + +#: src/celluloid-playlist-widget.c:943 +msgid "Playlist is empty" +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:341 +msgid "mpv configuration file:" +msgstr "mpv 配置檔:" + +#: src/celluloid-preferences-dialog.c:347 +msgid "mpv input configuration file:" +msgstr "mpv 輸入配置檔:" + +#: src/celluloid-preferences-dialog.c:367 +msgid "Extra mpv options:" +msgstr "額外的 mpv 選項:" + +#: src/celluloid-preferences-dialog.c:400 +msgid "Interface" +msgstr "界面" + +#: src/celluloid-preferences-dialog.c:403 +msgid "Config Files" +msgstr "設定檔" + +#: src/celluloid-preferences-dialog.c:406 +msgid "Miscellaneous" +msgstr "雜項" + +#: src/celluloid-preferences-dialog.c:409 +msgid "Plugins" +msgstr "外掛" + +#: src/celluloid-preferences-dialog.c:414 +msgid "_Save" +msgstr "儲存(_S)" + +#: src/celluloid-preferences-dialog.c:432 +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 "Enter search mode" +msgstr "進入搜尋模式" + +#: src/celluloid-shortcuts-window.c:94 +msgid "Jump to next match" +msgstr "跳到下一個符合項目" + +#: src/celluloid-shortcuts-window.c:95 +msgid "Jump to previous match" +msgstr "跳到上一個符合項目" + +#: src/celluloid-shortcuts-window.c:96 +msgid "Exit search mode" +msgstr "退出搜尋模式" + +#: src/celluloid-shortcuts-window.c:99 +msgid "Cycle through audio tracks" +msgstr "循環切換音軌" + +#: src/celluloid-shortcuts-window.c:100 src/celluloid-shortcuts-window.c:101 +msgid "Decrease/increase volume" +msgstr "增減音量" + +#: src/celluloid-shortcuts-window.c:102 +msgid "Mute or unmute" +msgstr "是否靜音" + +#: src/celluloid-shortcuts-window.c:103 +msgid "Adjust audio delay by +/- 0.1 seconds" +msgstr "調整音訊延遲 +/- 0.1 秒" + +#: src/celluloid-shortcuts-window.c:106 +msgid "Toggle subtitle visibility" +msgstr "開關字幕可見度" + +#: src/celluloid-shortcuts-window.c:107 +msgid "Cycle through available subtitles" +msgstr "循環切換可用字幕" + +#: src/celluloid-shortcuts-window.c:108 +msgid "Adjust subtitle delay by +/- 0.1 seconds" +msgstr "調整字幕延遲 +/- 0.1 秒" + +#: src/celluloid-shortcuts-window.c:109 +msgid "Toggle SSA/ASS subtitles style override" +msgstr "開關 SSA/ASS 字幕樣式覆蓋" + +#: src/celluloid-shortcuts-window.c:110 +msgid "Move subtitles up/down" +msgstr "字幕上下移動" + +#: src/celluloid-shortcuts-window.c:111 +msgid "Toggle VSFilter aspect compatibility mode" +msgstr "開關 VSFilter aspect 相容模式" + +#: src/celluloid-shortcuts-window.c:114 +msgid "Cycle through video tracks" +msgstr "循環切換視訊軌道" + +#: src/celluloid-shortcuts-window.c:115 +msgid "Decrease/increase pan-and-scan range" +msgstr "減小/增加 pan-and-scan 範圍" + +#: src/celluloid-shortcuts-window.c:116 +msgid "Take a screenshot" +msgstr "拍攝螢幕擷圖" + +#: src/celluloid-shortcuts-window.c:117 +msgid "Take a screenshot, without subtitles" +msgstr "拍攝螢幕擷圖,不包含字幕" + +#: src/celluloid-shortcuts-window.c:118 +msgid "Take a screenshot, as the window shows it" +msgstr "拍攝螢幕擷圖,就如同視窗中顯示的一樣" + +#: src/celluloid-shortcuts-window.c:119 +msgid "Resize video to half its original size" +msgstr "將影片縮至原來一半的大小" + +#: src/celluloid-shortcuts-window.c:120 +msgid "Resize video to its original size" +msgstr "將影片縮放至原始大小" + +#: src/celluloid-shortcuts-window.c:121 +msgid "Resize video to double its original size" +msgstr "將影片放大至原來的兩倍" + +#: src/celluloid-shortcuts-window.c:122 +msgid "Adjust contrast" +msgstr "調整對比" + +#: src/celluloid-shortcuts-window.c:123 +msgid "Adjust brightness" +msgstr "調整亮度" + +#: src/celluloid-shortcuts-window.c:124 +msgid "Adjust gamma" +msgstr "調整 gamma 值" + +#: src/celluloid-shortcuts-window.c:125 +msgid "Adjust saturation" +msgstr "調整飽和度" + +#: src/celluloid-shortcuts-window.c:126 +msgid "Activate or deactivate deinterlacer" +msgstr "是否啟用解調變" + +#: src/celluloid-shortcuts-window.c:127 +msgid "Cycle aspect ratio override" +msgstr "循環切換寬高比覆蓋" + +#: src/celluloid-shortcuts-window.c:130 +msgid "User Interface" +msgstr "使用者界面" + +#: src/celluloid-shortcuts-window.c:131 +msgid "Video" +msgstr "影片" + +#: src/celluloid-shortcuts-window.c:132 +msgid "Audio" +msgstr "音訊" + +#: src/celluloid-shortcuts-window.c:133 +msgid "Subtitle" +msgstr "字幕" + +#: src/celluloid-shortcuts-window.c:134 +msgid "Playback" +msgstr "播放" + +#: src/celluloid-shortcuts-window.c:135 +msgid "Seeking" +msgstr "跳轉" + +#: src/celluloid-view.c:728 +msgid "Load Audio Track…" +msgstr "載入音軌…" + +#: src/celluloid-view.c:732 +msgid "Load Video Track…" +msgstr "載入視訊軌道…" + +#: src/celluloid-view.c:736 +msgid "Load Subtitle Track…" +msgstr "載入字幕軌…" + +#: src/celluloid-view.c:901 +msgid "" +"Enabling or disabling client-side decorations requires restarting to take " +"effect." +msgstr "啟用或停用客戶端裝飾(CSD),需要重新啟動播放器以生效。" + +#: src/celluloid-view.c:1444 +msgid "Add Folder to Playlist" +msgstr "新增資料夾到播放清單" + +#: src/celluloid-view.c:1444 +msgid "Open Folder" +msgstr "開啟資料夾" + +#: src/celluloid-view.c:1449 +msgid "Add File to Playlist" +msgstr "新增檔案到播放清單" + +#: src/celluloid-view.c:1449 +msgid "Open File" +msgstr "開啟檔案" + +#: src/celluloid-view.c:1485 +msgid "Add Location to Playlist" +msgstr "新增位置至播放清單" + +#: src/celluloid-view.c:1486 +msgid "Open Location" +msgstr "開啟位置" + +#: src/celluloid-view.c:1532 +msgid "Save Playlist" +msgstr "儲存播放清單" + +#: src/celluloid-view.c:1598 +msgid "A GTK frontend for MPV" +msgstr "MPV 的 GTK 前端程式" + +#: src/celluloid-view.c:1608 +msgid "translator-credits" +msgstr "" +"Mingye Wang\n" +"Sun\n" +"張修銘 " diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..3ebe710 --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,82 @@ +AUTOMAKE_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-option-parser.c celluloid-option-parser.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-time-label.c celluloid-time-label.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 diff --git a/src/celluloid-application.c b/src/celluloid-application.c new file mode 100644 index 0000000..1146414 --- /dev/null +++ b/src/celluloid-application.c @@ -0,0 +1,656 @@ +/* + * Copyright (c) 2016-2021 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-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 gboolean +local_command_line(GApplication *gapp, gchar ***arguments, gint *exit_status); + +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 gboolean +local_command_line(GApplication *gapp, gchar ***arguments, gint *exit_status) +{ + CelluloidApplication *app = CELLULOID_APPLICATION(gapp); + GPtrArray *options = g_ptr_array_new_with_free_func(g_free); + gchar **argv = *arguments; + gint i = 1; + + g_clear_pointer(&app->mpv_options, g_free); + + while(argv[i]) + { + // Ignore --mpv-options + const gboolean excluded = + g_str_has_prefix(argv[i], "--mpv-options") && + argv[i][sizeof("--mpv-options")] != '='; + + if(!excluded && g_str_has_prefix(argv[i], MPV_OPTION_PREFIX)) + { + const gchar *suffix = + argv[i] + sizeof(MPV_OPTION_PREFIX) - 1; + + const gchar *value = strchr(suffix, '='); + gchar *option = NULL; + + g_assert(!value || value > suffix); + + if(value) + { + gchar key[value - suffix + 1]; + + g_strlcpy(key, suffix, sizeof(key)); + + option = g_strdup_printf("--%s='%s'", key, value + 1); + } + else + { + option = g_strconcat("--", suffix, NULL); + } + + g_ptr_array_add(options, option); + + // Remove collected option + for(gint j = i; argv[j]; j++) + { + argv[j] = argv[j + 1]; + } + } + else + { + i++; + } + } + + if(options->len > 0) + { + g_ptr_array_add(options, NULL); + + app->mpv_options = g_strjoinv(" ", (gchar **)options->pdata); + } + + g_ptr_array_free(options, TRUE); + + return G_APPLICATION_CLASS(celluloid_application_parent_class) + ->local_command_line(gapp, arguments, exit_status); +} + +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; + gchar *mpv_options = NULL; + 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->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", &mpv_options); + g_variant_dict_lookup(options, "role", "s", &app->role); + + /* Combine mpv options from --mpv-options and options matching + * MPV_OPTION_PREFIX + */ + if(mpv_options) + { + gchar *old_mpv_options = app->mpv_options; + + g_warning("--mpv-options is deprecated and will be removed in future versions. Use '--mpv-' prefix options instead."); + + app->mpv_options = + g_strjoin(" ", mpv_options, app->mpv_options, NULL); + + g_free(old_mpv_options); + g_free(mpv_options); + } + + 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) +{ + GSettings *settings = g_settings_new(CONFIG_ROOT); + 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 && + g_settings_get_boolean(settings, "inhibit-idle") ) + { + 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; + } + + g_object_unref(settings); +} + +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) +{ + G_APPLICATION_CLASS(klass)->local_command_line = local_command_line; +} + +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_HIDDEN, + 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 ); + + // This is only added so that mpv prefix options could be document in + // the --help text. + g_application_add_main_option + ( G_APPLICATION(app), + "mpv-MPVOPTION", + '\0', + G_OPTION_FLAG_NONE, + G_OPTION_ARG_NONE, + _("Set the mpv option MPVOPTION to VALUE"), + _("VALUE") ); + + 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; +} diff --git a/src/celluloid-application.h b/src/celluloid-application.h new file mode 100644 index 0000000..0f6f0f7 --- /dev/null +++ b/src/celluloid-application.h @@ -0,0 +1,45 @@ +/* + * 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 diff --git a/src/celluloid-common.c b/src/celluloid-common.c new file mode 100644 index 0000000..bb938f2 --- /dev/null +++ b/src/celluloid-common.c @@ -0,0 +1,296 @@ +/* + * Copyright (c) 2014-2020 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; +} + +char * +format_time(gint seconds, gboolean show_hour) +{ + gchar *result = NULL; + + if(show_hour) + { + result = g_strdup_printf( "%02d:%02d:%02d", + seconds/3600, + (seconds%3600)/60, + seconds%60 ); + } + else + { + result = g_strdup_printf("%02d:%02d", seconds/60, seconds%60); + } + + 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); + } +} diff --git a/src/celluloid-common.h b/src/celluloid-common.h new file mode 100644 index 0000000..c237cc3 --- /dev/null +++ b/src/celluloid-common.h @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2014-2020 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); + +char * +format_time(gint seconds, gboolean show_hour); + +void +activate_action_string(GActionMap *map, const gchar *str); + +G_END_DECLS + +#endif diff --git a/src/celluloid-control-box.c b/src/celluloid-control-box.c new file mode 100644 index 0000000..74cf946 --- /dev/null +++ b/src/celluloid-control-box.c @@ -0,0 +1,750 @@ +/* + * Copyright (c) 2014-2021 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_SHUFFLE, + PROP_VOLUME, + PROP_VOLUME_MAX, + 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 *shuffle_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; + gboolean shuffle; + gdouble volume; + gdouble volume_max; + 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_SHUFFLE: + self->shuffle = g_value_get_boolean(value); + break; + + case PROP_VOLUME: + self->volume = g_value_get_double(value); + break; + + case PROP_VOLUME_MAX: + self->volume_max = 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_SHUFFLE: + g_value_set_boolean(value, self->shuffle); + break; + + case PROP_VOLUME: + g_value_set_double(value, self->volume); + break; + + case PROP_VOLUME_MAX: + g_value_set_double(value, self->volume_max); + 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_boolean + ( "shuffle", + "Shuffle", + "Whether or not the the shuffle button is active", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_SHUFFLE, 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_double + ( "volume-max", + "Volume Max", + "The maximum amplification level", + 0.0, + G_MAXDOUBLE, + 100.0, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_VOLUME_MAX, 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; + GtkAdjustment *adjustment = 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->shuffle_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->shuffle = FALSE; + box->volume = 0.0; + box->volume_max = 100.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->shuffle_button, + "media-playlist-shuffle-symbolic", + _("Shuffle 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->shuffle_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)); + adjustment = gtk_scale_button_get_adjustment + (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( box, "shuffle", + box->shuffle_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_object_bind_property_full( box, "volume-max", + adjustment, "upper", + G_BINDING_DEFAULT|G_BINDING_SYNC_CREATE, + mpv_to_gtk_volume, + gtk_to_mpv_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, + 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); +} diff --git a/src/celluloid-control-box.h b/src/celluloid-control-box.h new file mode 100644 index 0000000..0ef8df4 --- /dev/null +++ b/src/celluloid-control-box.h @@ -0,0 +1,64 @@ +/* + * 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 diff --git a/src/celluloid-controller-actions.c b/src/celluloid-controller-actions.c new file mode 100644 index 0000000..2bfead4 --- /dev/null +++ b/src/celluloid-controller-actions.c @@ -0,0 +1,640 @@ +/* + * Copyright (c) 2015-2021 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 +boolean_to_state( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ); + +static gboolean +state_to_boolean( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ); + +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 +search_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +stop_search_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data); + +static void +toggle_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 +toggle_main_menu_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 +boolean_to_state( GBinding *binding, + const GValue *from_value, + GValue *to_value, + gpointer user_data ) +{ + gboolean from = g_value_get_boolean(from_value); + GVariant *to = g_variant_new("b", from); + + g_value_set_variant(to_value, to); + + return TRUE; +} + +static gboolean +state_to_boolean( 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_boolean(to_value, to); + + return TRUE; +} + +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-shuffle-playlist"); + g_object_bind_property_full( controller->model, "shuffle", + action, "state", + G_BINDING_BIDIRECTIONAL, + boolean_to_state, + state_to_boolean, + 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 folder = FALSE; + gboolean append = FALSE; + + g_variant_get(param, "(bb)", &folder, &append); + + celluloid_view_show_open_dialog + (celluloid_controller_get_view(data), folder, 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 +search_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + CelluloidView *view = celluloid_controller_get_view(data); + + g_object_set(view, "searching", TRUE, NULL); +} + +static void +stop_search_playlist_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + CelluloidView *view = celluloid_controller_get_view(data); + + g_object_set(view, "searching", FALSE, NULL); +} + +static void +toggle_shuffle_playlist_handler(GSimpleAction *action, GVariant *value, gpointer data) +{ + g_simple_action_set_state(action, value); +} + +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 +toggle_main_menu_handler(GSimpleAction *action, GVariant *param, gpointer data) +{ + CelluloidView *view = celluloid_controller_get_view(data); + CelluloidMainWindow *wnd = CELLULOID_MAIN_WINDOW(view); + gboolean csd = celluloid_main_window_get_csd_enabled(wnd); + gboolean visible = celluloid_view_get_main_menu_visible(view); + + if(csd) + { + celluloid_view_set_main_menu_visible(view, !visible); + } +} + +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, "video-add") == 0) + { + celluloid_view_show_open_video_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 = "(bb)"}, + {.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 = "search-playlist", + .activate = search_playlist_handler}, + {.name = "stop-search-playlist", + .activate = stop_search_playlist_handler}, + {.name = "toggle-shuffle-playlist", + .state = "false", + .change_state = toggle_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 = "toggle-main-menu", + .activate = toggle_main_menu_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); +} diff --git a/src/celluloid-controller-actions.h b/src/celluloid-controller-actions.h new file mode 100644 index 0000000..162ab14 --- /dev/null +++ b/src/celluloid-controller-actions.h @@ -0,0 +1,34 @@ +/* + * 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 diff --git a/src/celluloid-controller-input.c b/src/celluloid-controller-input.c new file mode 100644 index 0000000..5a82048 --- /dev/null +++ b/src/celluloid-controller-input.c @@ -0,0 +1,304 @@ +/* + * Copyright (c) 2016-2020 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); + found = !result; + + 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); + gboolean searching = FALSE; + + g_object_get(controller->view, "searching", &searching, NULL); + + if(keystr && !searching) + { + 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); + gboolean searching = FALSE; + + g_object_get(controller->view, "searching", &searching, NULL); + + if(keystr && !searching) + { + 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 ); +} diff --git a/src/celluloid-controller-input.h b/src/celluloid-controller-input.h new file mode 100644 index 0000000..d4adc22 --- /dev/null +++ b/src/celluloid-controller-input.h @@ -0,0 +1,34 @@ +/* + * 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 diff --git a/src/celluloid-controller-private.h b/src/celluloid-controller-private.h new file mode 100644 index 0000000..4aaf0b0 --- /dev/null +++ b/src/celluloid-controller-private.h @@ -0,0 +1,65 @@ +/* + * 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 diff --git a/src/celluloid-controller.c b/src/celluloid-controller.c new file mode 100644 index 0000000..396c8e5 --- /dev/null +++ b/src/celluloid-controller.c @@ -0,0 +1,1328 @@ +/* + * Copyright (c) 2017-2020 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 +video_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 +searching_handler(GObject *object, GParamSpec *pspec, 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); + +static void +update_extra_mpv_options(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); + update_extra_mpv_options(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); + CelluloidModel *model = controller->model; + + celluloid_player_options_init + ( CELLULOID_PLAYER(controller->model), + CELLULOID_MAIN_WINDOW(controller->view) ); + + celluloid_model_initialize(model); +} + +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) +{ + CelluloidController *controller = data; + + update_extra_mpv_options(controller); + celluloid_view_make_gl_context_current(controller->view); + celluloid_model_reset(controller->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 +video_track_load_handler(CelluloidView *view, const gchar *uri, gpointer data) +{ + celluloid_model_load_video_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, "window-maximized", + controller->view, "maximized", + 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, "volume-max", + controller->view, "volume-max", + G_BINDING_DEFAULT ); + 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->view, "loop", + controller->model, "loop-playlist", + G_BINDING_BIDIRECTIONAL| + G_BINDING_SYNC_CREATE, + boolean_to_loop, + loop_to_boolean, + NULL, + NULL ); + g_object_bind_property( controller->view, "shuffle", + controller->model, "shuffle", + G_BINDING_BIDIRECTIONAL|G_BINDING_SYNC_CREATE ); + + 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, + "notify::searching", + G_CALLBACK(searching_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, + "video-track-load", + G_CALLBACK(video_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 +searching_handler(GObject *object, GParamSpec *pspec, gpointer data) +{ + // When the search box becomes visible, it blocks all keyboard inputs + // from being handled by CelluloidController. This means that the key up + // event for the key that triggered the search will never arrive, so we + // need to explicitly reset key states here. + celluloid_model_reset_keys(CELLULOID_CONTROLLER(data)->model); +} + +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; +} + +static void +update_extra_mpv_options(CelluloidController *controller) +{ + GSettings *settings = g_settings_new(CONFIG_ROOT); + const gchar *cli_options = celluloid_application_get_mpv_options + (controller->app); + gchar *pref_options = g_settings_get_string(settings, "mpv-options"); + gchar *options = g_strjoin(" ", pref_options, cli_options, NULL); + + + g_object_set(controller->model, "extra-options", options, NULL); + + g_free(options); + g_free(pref_options); + g_object_unref(settings); +} + +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); + gint scale = celluloid_view_get_scale_factor(controller->view); + + g_debug("Resizing window to %dx%d", new_width, new_height); + celluloid_view_resize_video_area( controller->view, + new_width/scale, + new_height/scale ); + } + + 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; +} diff --git a/src/celluloid-controller.h b/src/celluloid-controller.h new file mode 100644 index 0000000..e8159e6 --- /dev/null +++ b/src/celluloid-controller.h @@ -0,0 +1,60 @@ +/* + * 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 diff --git a/src/celluloid-def.h b/src/celluloid-def.h new file mode 100644 index 0000000..ed8beb8 --- /dev/null +++ b/src/celluloid-def.h @@ -0,0 +1,278 @@ +/* + * Copyright (c) 2014-2021 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 MPV_OPTION_PREFIX "--mpv-" +#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, false))",\ + "Ctrl+l script-message celluloid-action win.show-open-location-dialog(false)",\ + "Ctrl+Shift+o script-message celluloid-action win.show-open-dialog((false, 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+f script-message celluloid-action win.search-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",\ + "F10 script-message celluloid-action win.toggle-main-menu",\ + "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", "#",\ + "UP", "KP_Up",\ + "DOWN", "KP_Down",\ + "RIGHT", "KP_Right",\ + "LEFT", "KP_Left",\ + "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 diff --git a/src/celluloid-file-chooser.c b/src/celluloid-file-chooser.c new file mode 100644 index 0000000..64e649c --- /dev/null +++ b/src/celluloid-file-chooser.c @@ -0,0 +1,203 @@ +/* + * Copyright (c) 2017-2020 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)); + } + + if( action != GTK_FILE_CHOOSER_ACTION_SAVE && + action != GTK_FILE_CHOOSER_ACTION_CREATE_FOLDER ) + { + gtk_file_chooser_set_select_multiple(gtk_chooser, TRUE); + } + + celluloid_file_chooser_set_modal(chooser, TRUE); + gtk_file_chooser_set_local_only(gtk_chooser, FALSE); + 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); +} diff --git a/src/celluloid-file-chooser.h b/src/celluloid-file-chooser.h new file mode 100644 index 0000000..0a39656 --- /dev/null +++ b/src/celluloid-file-chooser.h @@ -0,0 +1,47 @@ +/* + * 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 diff --git a/src/celluloid-header-bar.c b/src/celluloid-header-bar.c new file mode 100644 index 0000000..6f8e606 --- /dev/null +++ b/src/celluloid-header-bar.c @@ -0,0 +1,280 @@ +/* + * Copyright (c) 2016-2021 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" +#include "celluloid-def.h" + +enum +{ + PROP_0, + PROP_OPEN_BUTTON_ACTIVE, + PROP_MENU_BUTTON_ACTIVE, + N_PROPERTIES +}; + +struct _CelluloidHeaderBar +{ + GtkHeaderBar parent_instance; + GtkWidget *open_btn; + GtkWidget *fullscreen_btn; + GtkWidget *menu_btn; + + gboolean open_popover_visible; + gboolean menu_popover_visible; +}; + +struct _CelluloidHeaderBarClass +{ + GtkHeaderBarClass parent_class; +}; + +G_DEFINE_TYPE(CelluloidHeaderBar, celluloid_header_bar, GTK_TYPE_HEADER_BAR) + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidHeaderBar *self = CELLULOID_HEADER_BAR(object); + + switch(property_id) + { + case PROP_OPEN_BUTTON_ACTIVE: + self->open_popover_visible = g_value_get_boolean(value); + break; + + case PROP_MENU_BUTTON_ACTIVE: + self->menu_popover_visible = g_value_get_boolean(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 ) +{ + CelluloidHeaderBar *self = CELLULOID_HEADER_BAR(object); + + switch(property_id) + { + case PROP_OPEN_BUTTON_ACTIVE: + g_value_set_boolean(value, self->open_popover_visible); + break; + + case PROP_MENU_BUTTON_ACTIVE: + g_value_set_boolean(value, self->menu_popover_visible); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} +static void +celluloid_header_bar_class_init(CelluloidHeaderBarClass *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 + ( "open-button-active", + "Open button active", + "Whether or not the open button is active", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_OPEN_BUTTON_ACTIVE, pspec); + + pspec = g_param_spec_boolean + ( "menu-button-active", + "Menu button active", + "Whether or not the menu button is active", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property + (object_class, PROP_MENU_BUTTON_ACTIVE, pspec); +} + +static void +celluloid_header_bar_init(CelluloidHeaderBar *hdr) +{ + GtkHeaderBar *ghdr; + GSettings *settings; + gboolean csd; + GMenu *open_btn_menu; + GMenu *menu_btn_menu; + GtkWidget *open_icon; + GtkWidget *fullscreen_icon; + GtkWidget *menu_icon; + + ghdr = GTK_HEADER_BAR(hdr); + settings = g_settings_new(CONFIG_ROOT); + csd = g_settings_get_boolean(settings, "csd-enable"); + 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(); + hdr->open_popover_visible = FALSE; + hdr->menu_popover_visible = FALSE; + + 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_widget_set_no_show_all(hdr->fullscreen_btn, TRUE); + gtk_header_bar_set_show_close_button(ghdr, TRUE); + + g_object_bind_property( hdr->open_btn, "active", + hdr, "open-button-active", + G_BINDING_DEFAULT ); + g_object_bind_property( hdr->menu_btn, "active", + hdr, "menu-button-active", + G_BINDING_DEFAULT ); + + gtk_widget_set_visible(hdr->fullscreen_btn, csd); + + g_object_unref(settings); +} + +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); +} + +void +celluloid_header_bar_set_open_button_popup_visible( CelluloidHeaderBar *hdr, + gboolean visible ) +{ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(hdr->open_btn), visible); +} + +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_menu_button_popup_visible( CelluloidHeaderBar *hdr, + gboolean visible ) +{ + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(hdr->menu_btn), visible); +} + +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)); +} diff --git a/src/celluloid-header-bar.h b/src/celluloid-header-bar.h new file mode 100644 index 0000000..217aa7c --- /dev/null +++ b/src/celluloid-header-bar.h @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2016-2021 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); + +void +celluloid_header_bar_set_open_button_popup_visible( CelluloidHeaderBar *hdr, + gboolean visible ); + +gboolean +celluloid_header_bar_get_menu_button_popup_visible(CelluloidHeaderBar *hdr); + +void +celluloid_header_bar_set_menu_button_popup_visible( CelluloidHeaderBar *hdr, + gboolean visible ); + +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 diff --git a/src/celluloid-main-window-private.h b/src/celluloid-main-window-private.h new file mode 100644 index 0000000..804dd67 --- /dev/null +++ b/src/celluloid-main-window-private.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2019-2020 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 + diff --git a/src/celluloid-main-window.c b/src/celluloid-main-window.c new file mode 100644 index 0000000..3651968 --- /dev/null +++ b/src/celluloid-main-window.c @@ -0,0 +1,811 @@ +/* + * Copyright (c) 2014-2021 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; + CelluloidHeaderBar *vid_area_header_bar = NULL; + GSettings *settings = g_settings_new(CONFIG_WIN_STATE); + + 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)); + vid_area_header_bar = celluloid_video_area_get_header_bar + (CELLULOID_VIDEO_AREA(priv->vid_area)); + + g_settings_bind( settings, "loop-playlist", + priv->control_box, "loop", + G_SETTINGS_BIND_DEFAULT ); + + g_object_bind_property( wnd, "title", + priv->vid_area, "title", + G_BINDING_DEFAULT ); + + g_object_bind_property( priv->header_bar, "open-button-active", + vid_area_header_bar, "open-button-active", + G_BINDING_DEFAULT ); + g_object_bind_property( priv->header_bar, "menu-button-active", + vid_area_header_bar, "menu-button-active", + 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, "show-fullscreen-button", + vid_area_control_box, "show-fullscreen-button", + 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; + gboolean maximized; + gint handle_pos; + gdouble volume; + + settings = g_settings_new(CONFIG_WIN_STATE); + priv = get_private(wnd); + maximized = gtk_window_is_maximized(GTK_WINDOW(wnd)); + handle_pos = gtk_paned_get_position(GTK_PANED(priv->vid_area_paned)); + + g_object_get(priv->control_box, "volume", &volume, NULL); + gtk_window_get_size(GTK_WINDOW(wnd), &width, &height); + + // Controls visibility does not need to be saved here since + // celluloid_main_window_set_controls_visible() already updates the + // associated GSettings key when it is called. + g_settings_set_boolean(settings, "maximized", maximized); + g_settings_set_double(settings, "volume", volume/100.0); + g_settings_set_boolean(settings, "show-playlist", priv->playlist_visible); + + if(!maximized) + { + g_settings_set_int(settings, "width", width); + g_settings_set_int(settings, "height", height); + } + + 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"); + gboolean maximized = g_settings_get_boolean(settings, "maximized"); + 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); + + g_object_set(priv->control_box, "volume", volume, NULL); + + 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); + + if(maximized) + { + gtk_window_maximize(GTK_WINDOW(wnd)); + } + + 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; + + celluloid_video_area_update_track_list + (CELLULOID_VIDEO_AREA(priv->vid_area), track_list); + + if(celluloid_main_window_get_csd_enabled(wnd)) + { + celluloid_header_bar_update_track_list + (CELLULOID_HEADER_BAR(priv->header_bar), 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 ) +{ + /* As of GNOME 3.36, attempting to resize the window while it is + * maximized will cause the UI to stop rendering. Resizing while + * fullscreen is unaffected, but it doesn't make sense to resize there + * either. + */ + if( !get_private(wnd)->fullscreen && + !gtk_window_is_maximized(GTK_WINDOW(wnd)) ) + { + 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)); +} diff --git a/src/celluloid-main-window.h b/src/celluloid-main-window.h new file mode 100644 index 0000000..18e35d1 --- /dev/null +++ b/src/celluloid-main-window.h @@ -0,0 +1,114 @@ +/* + * 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 diff --git a/src/celluloid-main.c b/src/celluloid-main.c new file mode 100644 index 0000000..04dfd14 --- /dev/null +++ b/src/celluloid-main.c @@ -0,0 +1,41 @@ +/* + * 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; +} diff --git a/src/celluloid-menu.c b/src/celluloid-menu.c new file mode 100644 index 0000000..6791a40 --- /dev/null +++ b/src/celluloid-menu.c @@ -0,0 +1,380 @@ +/* + * Copyright (c) 2015-2020 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", + "win.load-track('video-add')" ); +} + +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, false))"), + CELLULOID_MENU_ITEM(_("Open _Folder…"), "win.show-open-dialog((true, 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_ITEM(_("_Quit"), "win.quit"), + 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, false))"), + CELLULOID_MENU_ITEM(_("Open _Folder…"), "win.show-open-dialog((true, 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); + } + } + } +} diff --git a/src/celluloid-menu.h b/src/celluloid-menu.h new file mode 100644 index 0000000..d0f68f5 --- /dev/null +++ b/src/celluloid-menu.h @@ -0,0 +1,63 @@ +/* + * 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 diff --git a/src/celluloid-metadata-cache.c b/src/celluloid-metadata-cache.c new file mode 100644 index 0000000..d5ce416 --- /dev/null +++ b/src/celluloid-metadata-cache.c @@ -0,0 +1,382 @@ +/* + * Copyright (c) 2017-2021 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); + + if(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; +} diff --git a/src/celluloid-metadata-cache.h b/src/celluloid-metadata-cache.h new file mode 100644 index 0000000..c252efd --- /dev/null +++ b/src/celluloid-metadata-cache.h @@ -0,0 +1,62 @@ +/* + * 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 diff --git a/src/celluloid-model.c b/src/celluloid-model.c new file mode 100644 index 0000000..31a9613 --- /dev/null +++ b/src/celluloid-model.c @@ -0,0 +1,1224 @@ +/* + * Copyright (c) 2017-2021 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" +#include "celluloid-option-parser.h" +#include "celluloid-def.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_SHUFFLE, + PROP_DURATION, + PROP_MEDIA_TITLE, + PROP_PLAYLIST_COUNT, + PROP_PLAYLIST_POS, + PROP_SPEED, + PROP_VOLUME, + PROP_VOLUME_MAX, + PROP_WINDOW_MAXIMIZED, + PROP_WINDOW_SCALE, + PROP_DISPLAY_FPS, + N_PROPERTIES +}; + +struct _CelluloidModel +{ + CelluloidPlayer parent; + gchar *extra_options; + 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; + gboolean shuffle; + gdouble duration; + gchar *media_title; + gint64 playlist_count; + gint64 playlist_pos; + gdouble speed; + gdouble volume; + gdouble volume_max; + gboolean window_maximized; + gdouble window_scale; + gdouble display_fps; +}; + +struct _CelluloidModelClass +{ + GObjectClass parent_class; +}; + +static gboolean +extra_options_contains(CelluloidModel *model, const gchar *option); + +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 gboolean +extra_options_contains(CelluloidModel *model, const gchar *option) +{ + gboolean result = FALSE; + gchar *extra_options = NULL; + const gchar *cur = NULL; + + g_object_get(model, "extra-options", &extra_options, NULL); + + cur = extra_options; + + while(cur && *cur && !result) + { + gchar *key = NULL; + gchar *value = NULL; + + cur = parse_option(cur, &key, &value); + + if(key && *key) + { + result |= g_strcmp0(key, option) == 0; + } + else + { + g_warning("Failed to parse options"); + + cur = NULL; + } + + g_free(key); + g_free(value); + } + + g_free(extra_options); + + return result; +} + +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_SHUFFLE: + { + gboolean ready = FALSE; + + self->shuffle = g_value_get_boolean(value); + g_object_get(self, "ready", &ready, NULL); + + if(ready) + { + if(self->shuffle) + { + celluloid_model_shuffle_playlist(self); + } + else + { + celluloid_model_unshuffle_playlist(self); + } + } + } + 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_VOLUME_MAX: + self->volume_max = g_value_get_double(value); + break; + + case PROP_WINDOW_MAXIMIZED: + self->window_maximized = g_value_get_boolean(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_SHUFFLE: + g_value_set_boolean(value, self->shuffle); + 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_VOLUME_MAX: + g_value_set_double(value, self->volume_max); + break; + + case PROP_WINDOW_MAXIMIZED: + g_value_set_boolean(value, self->window_maximized); + 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_VOLUME_MAX: + celluloid_mpv_set_property( mpv, + "volume-max", + MPV_FORMAT_DOUBLE, + &self->volume_max ); + break; + + case PROP_WINDOW_MAXIMIZED: + celluloid_mpv_set_property( mpv, + "window-maximized", + MPV_FORMAT_FLAG, + &self->window_maximized ); + 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}, + {"volume-max", PROP_VOLUME_MAX, G_TYPE_DOUBLE}, + {"window-maximized", PROP_WINDOW_MAXIMIZED, G_TYPE_BOOLEAN}, + {"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); + } + + pspec = g_param_spec_boolean + ( "shuffle", + "Shuffle", + "Whether or not the playlist is shuffled", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_SHUFFLE, 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->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->shuffle = FALSE; + 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->volume_max = 100.0; + model->window_maximized = FALSE; + 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) +{ + CelluloidMpv *mpv = CELLULOID_MPV(model); + GSettings *win_settings = g_settings_new(CONFIG_WIN_STATE); + + celluloid_mpv_initialize + (mpv); + celluloid_mpv_set_render_update_callback + (mpv, render_update_callback, model); + + if(!extra_options_contains(model, "volume")) + { + gdouble volume = g_settings_get_double(win_settings, "volume")*100; + + g_debug("Setting volume to %f", volume); + g_object_set(model, "volume", volume, NULL); + } + + if(extra_options_contains(model, "shuffle")) + { + // Sync the property to match mpv's + CelluloidMpv *mpv = + CELLULOID_MPV(model); + gboolean shuffle = + celluloid_mpv_get_property_flag(mpv, "shuffle"); + + g_object_set(model, "shuffle", shuffle, NULL); + } + + if(extra_options_contains(model, "loop-playlist")) + { + // Sync the property to match mpv's + CelluloidMpv *mpv = + CELLULOID_MPV(model); + gchar *loop_playlist = + celluloid_mpv_get_property_string(mpv, "loop-playlist"); + + g_object_set(model, "loop-playlist", loop_playlist, NULL); + + mpv_free(loop_playlist); + } + else + { + const gchar *loop_playlist = + g_settings_get_boolean(win_settings, "loop-playlist") ? + "inf" : "no"; + + g_object_set(model, "loop-playlist", loop_playlist, NULL); + } + + g_object_unref(win_settings); +} + +void +celluloid_model_reset(CelluloidModel *model) +{ + model->resetting = TRUE; + + celluloid_mpv_reset(CELLULOID_MPV(model)); +} + +void +celluloid_model_quit(CelluloidModel *model) +{ + 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_unshuffle_playlist(CelluloidModel *model) +{ + const gchar *cmd[] = {"osd-msg", "playlist-unshuffle", 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_video_track(CelluloidModel *model, const gchar *filename) +{ + celluloid_mpv_load_track + (CELLULOID_MPV(model), filename, TRACK_TYPE_VIDEO); +} + +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 ) +{ + GSettings *settings = g_settings_new(CONFIG_ROOT); + + append |= g_settings_get_boolean(settings, "always-append-to-playlist"); + + 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 == 0) + { + celluloid_model_play(model); + } + + g_object_unref(settings); +} + +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; +} diff --git a/src/celluloid-model.h b/src/celluloid-model.h new file mode 100644 index 0000000..b2a0b3c --- /dev/null +++ b/src/celluloid-model.h @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2017-2020 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); + +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_unshuffle_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_video_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 diff --git a/src/celluloid-mpv-private.h b/src/celluloid-mpv-private.h new file mode 100644 index 0000000..49b161d --- /dev/null +++ b/src/celluloid-mpv-private.h @@ -0,0 +1,60 @@ +/* + * 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 diff --git a/src/celluloid-mpv-wrapper.c b/src/celluloid-mpv-wrapper.c new file mode 100644 index 0000000..603f23f --- /dev/null +++ b/src/celluloid-mpv-wrapper.c @@ -0,0 +1,291 @@ +/* + * 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); +} diff --git a/src/celluloid-mpv-wrapper.h b/src/celluloid-mpv-wrapper.h new file mode 100644 index 0000000..dd68aba --- /dev/null +++ b/src/celluloid-mpv-wrapper.h @@ -0,0 +1,96 @@ +/* + * 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 diff --git a/src/celluloid-mpv.c b/src/celluloid-mpv.c new file mode 100644 index 0000000..3c7ecb7 --- /dev/null +++ b/src/celluloid-mpv.c @@ -0,0 +1,780 @@ +/* + * Copyright (c) 2014-2020 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); + + switch(type) + { + case TRACK_TYPE_AUDIO: + cmd[0] = "audio-add"; + break; + + case TRACK_TYPE_VIDEO: + cmd[0] = "video-add"; + break; + + case TRACK_TYPE_SUBTITLE: + cmd[0] = "sub-add"; + break; + + default: + g_assert_not_reached(); + break; + } + + 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); + } +} diff --git a/src/celluloid-mpv.h b/src/celluloid-mpv.h new file mode 100644 index 0000000..d338d7e --- /dev/null +++ b/src/celluloid-mpv.h @@ -0,0 +1,86 @@ +/* + * 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 diff --git a/src/celluloid-open-location-dialog.c b/src/celluloid-open-location-dialog.c new file mode 100644 index 0000000..e9ac94c --- /dev/null +++ b/src/celluloid-open-location-dialog.c @@ -0,0 +1,230 @@ +/* + * Copyright (c) 2014-2020 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; + gboolean use_header_bar = TRUE; + + 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(); + + g_object_get(G_OBJECT(dlg), "use-header-bar", &use_header_bar, NULL); + + 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(use_header_bar) + { + gtk_widget_set_margin_bottom(dlg->content_box, 12); + } + + 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)); +} diff --git a/src/celluloid-open-location-dialog.h b/src/celluloid-open-location-dialog.h new file mode 100644 index 0000000..c1bf23a --- /dev/null +++ b/src/celluloid-open-location-dialog.h @@ -0,0 +1,44 @@ +/* + * 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 diff --git a/src/celluloid-option-parser.c b/src/celluloid-option-parser.c new file mode 100644 index 0000000..0226f35 --- /dev/null +++ b/src/celluloid-option-parser.c @@ -0,0 +1,189 @@ +/* + * 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 . + */ + +#include + +#include "celluloid-option-parser.h" + +static gboolean +eval_match(const GMatchInfo *match_info, GString *result, gpointer data); + +static gchar * +unescape(const gchar *str); + +static const gchar * +parse_key(const gchar *str, gchar **option); + +static const gchar * +parse_value(const gchar *str, gchar **value); + +static gboolean +eval_match(const GMatchInfo *match_info, GString *result, gpointer data) +{ + gchar *match = g_match_info_fetch(match_info, 0); + gchar converted = '\0'; + + g_assert(match && match[0] && match[1] && !match[2]); + + switch(match[1]) + { + case 'a': + converted = '\a'; + break; + + case 'b': + converted = '\b'; + break; + + case 'f': + converted = '\f'; + break; + + case 'n': + converted = '\n'; + break; + + case 'r': + converted = '\r'; + break; + + case 't': + converted = '\t'; + break; + + case 'v': + converted = '\v'; + break; + + case '\\': + case '\'': + case '"': + case '?': + converted = match[1]; + break; + + + default: + g_assert_not_reached(); + break; + } + + g_string_append_c(result, converted); + g_free(match); + + return FALSE; +} + +static gchar * +unescape(const gchar *str) +{ + GRegex *regex = g_regex_new("\\\\.", 0, 0, NULL); + gssize len = (gssize)strlen(str); + gchar *result = g_regex_replace_eval + (regex, str, len, 0, 0, eval_match, NULL, NULL); + + g_regex_unref(regex); + + return result; +} + +static const gchar * +parse_key(const gchar *str, gchar **option) +{ + if(str) + { + const gchar *token_start = str; + + if(strncmp(str, "--", 2) == 0) + { + str += 2; + } + + token_start = str; + + while(g_ascii_isalnum(*str) || *str == '-' || *str == '_') + { + str++; + } + + *option = g_strndup(token_start, (gsize)(str - token_start)); + } + + return str; +} + +static const gchar * +parse_value(const gchar *str, gchar **value) +{ + if(str) + { + gchar *buf = NULL; + gsize buf_len = 0; + const gchar *token_start = str; + gboolean escaping = FALSE; + gchar quote = '\0'; + + if(*str == '"' || *str == '\'') + { + quote = *str++; + } + + token_start = str; + + while( *str && + (escaping || quote != *str) && + (quote != '\0' || !g_ascii_isspace(*str)) ) + { + escaping = (*str == '\\'); + + str++; + } + + if(quote != '\0') + { + str++; + } + + buf_len = (gsize)(str - token_start - (quote != '\0')); + buf = g_strndup(token_start, buf_len); + *value = unescape(buf); + + g_free(buf); + } + + return str; +} + +const gchar * +parse_option(const gchar *str, gchar **option, gchar **value) +{ + while(str && g_ascii_isspace(*str)) + { + str++; + } + + str = parse_key(str, option); + + if(str && *str == '=') + { + str = parse_value(++str, value); + } + + return str; +} diff --git a/src/celluloid-option-parser.h b/src/celluloid-option-parser.h new file mode 100644 index 0000000..3766a01 --- /dev/null +++ b/src/celluloid-option-parser.h @@ -0,0 +1,30 @@ +/* + * 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 OPTION_PARSER_H +#define OPTION_PARSER_H + +G_BEGIN_DECLS + +const gchar * +parse_option(const gchar *str, gchar **option, gchar **value); + +G_END_DECLS + +#endif diff --git a/src/celluloid-player-options.c b/src/celluloid-player-options.c new file mode 100644 index 0000000..8c4ba2f --- /dev/null +++ b/src/celluloid-player-options.c @@ -0,0 +1,481 @@ +/* + * Copyright (c) 2016-2020 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)); + gint scale_factor = gdk_window_get_scale_factor(gdkwindow); + GdkDisplay *display = gdk_window_get_display(gdkwindow); + GdkMonitor *monitor = gdk_display_get_monitor_at_window + (display, gdkwindow); + + gdk_monitor_get_geometry(monitor, &result); + + result.width /= scale_factor; + result.height /= scale_factor; + + 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) +{ + GSettings *settings = g_settings_new(CONFIG_ROOT); + gint64 dim[2] = {0, 0}; + GdkRectangle monitor_geom = get_monitor_geometry(data); + + if( g_settings_get_boolean(settings, "autofit-enable") && + 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]); + } + + g_object_unref(settings); +} + +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 ); +} diff --git a/src/celluloid-player-options.h b/src/celluloid-player-options.h new file mode 100644 index 0000000..68d9c4e --- /dev/null +++ b/src/celluloid-player-options.h @@ -0,0 +1,48 @@ +/* + * 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 diff --git a/src/celluloid-player-private.h b/src/celluloid-player-private.h new file mode 100644 index 0000000..5feac1e --- /dev/null +++ b/src/celluloid-player-private.h @@ -0,0 +1,65 @@ +/* + * 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 + diff --git a/src/celluloid-player.c b/src/celluloid-player.c new file mode 100644 index 0000000..0ccddca --- /dev/null +++ b/src/celluloid-player.c @@ -0,0 +1,1429 @@ +/* + * Copyright (c) 2017-2021 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-option-parser.h" +#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 +dispose(GObject *object); + +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, const 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 +dispose(GObject *object) +{ + CelluloidPlayerPrivate *priv = get_private(object); + + g_clear_object(&priv->cache); + g_clear_object(&priv->monitor); + + G_OBJECT_CLASS(celluloid_player_parent_class)->dispose(object); +} + +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, "volume-max", MPV_FORMAT_DOUBLE); + celluloid_mpv_observe_property(mpv, 0, "window-maximized", MPV_FORMAT_FLAG); + 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); + + 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); +} + +static gint +apply_options_array_string(CelluloidMpv *mpv, const gchar *args) +{ + gint fail_count = 0; + + while(args && *args) + { + gchar *key = NULL; + gchar *value = NULL; + + args = parse_option(args, &key, &value); + + if(key && *key) + { + g_debug("Applying option: --%s=%s", key, value); + + if(celluloid_mpv_set_option_string(mpv, key, value) < 0) + { + fail_count++; + + g_warning( "Failed to apply option: --%s=%s\n", + key, + value ); + } + } + else + { + g_warning("Failed to parse options"); + + args = NULL; + fail_count++; + } + + g_free(key); + g_free(value); + } + + 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->dispose = dispose; + 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); +} diff --git a/src/celluloid-player.h b/src/celluloid-player.h new file mode 100644 index 0000000..1299894 --- /dev/null +++ b/src/celluloid-player.h @@ -0,0 +1,61 @@ +/* + * 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 diff --git a/src/celluloid-playlist-widget.c b/src/celluloid-playlist-widget.c new file mode 100644 index 0000000..c9612bf --- /dev/null +++ b/src/celluloid-playlist-widget.c @@ -0,0 +1,1213 @@ +/* + * Copyright (c) 2014-2020 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, + PROP_SEARCHING, + N_PROPERTIES +}; + +enum PlaylistColumn +{ + PLAYLIST_NAME_COLUMN, + PLAYLIST_URI_COLUMN, + PLAYLIST_WEIGHT_COLUMN, + PLAYLIST_N_COLUMNS +}; + +struct _CelluloidPlaylistWidget +{ + GtkBox parent_instance; + gint64 playlist_count; + gboolean searching; + GtkListStore *store; + GtkWidget *scrolled_window; + GtkWidget *tree_view; + GtkTreeViewColumn *title_column; + GtkCellRenderer *title_renderer; + GtkWidget *search_bar; + GtkWidget *search_entry; + GtkWidget *placeholder; + GtkWidget *overlay; + gint last_x; + gint last_y; + gboolean dnd_delete; +}; + +struct _CelluloidPlaylistWidgetClass +{ + GtkBoxClass parent_class; +}; + +static gboolean +gtk_tree_model_get_iter_last(GtkTreeModel *tree_model, GtkTreeIter *iter); + +static void +find_match( CelluloidPlaylistWidget *wgt, + gboolean match_current, + gboolean reverse ); + +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 gboolean +is_zero(GBinding *binding, const GValue *from, GValue *to, gpointer data); + +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 void +next_match_handler(GtkSearchEntry *entry, gpointer data); + +static void +previous_match_handler(GtkSearchEntry *entry, gpointer data); + +static void +search_changed_handler(GtkSearchEntry *entry, gpointer data); + +static void +stop_search_handler(GtkSearchEntry *entry, 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_BOX) + +static gboolean +gtk_tree_model_get_iter_last(GtkTreeModel *tree_model, GtkTreeIter *iter) +{ + GtkTreeIter prev_iter; + gboolean rc = gtk_tree_model_get_iter_first(tree_model, iter); + + if(rc) + { + // Keep iterating until we reach the end, keeping one extra + // iterator pointing to the row before the current one. + do + { + prev_iter = *iter; + } + while(gtk_tree_model_iter_next(tree_model, iter)); + + // Once we reach the end iter will be invalid so we need to + // restore the last valid value from prev_iter, which will be + // pointing to the last row. + *iter = prev_iter; + } + + return rc; +} + + +static void +find_match( CelluloidPlaylistWidget *wgt, + gboolean match_current, + gboolean reverse ) +{ + GtkTreeView *tree_view = GTK_TREE_VIEW(wgt->tree_view); + GtkTreeModel *tree_model = GTK_TREE_MODEL(wgt->store); + const gchar *term = gtk_entry_get_text(GTK_ENTRY(wgt->search_entry)); + GtkTreeIter iter; + GtkTreePath *initial_path = NULL; + gboolean found = FALSE; + gboolean rc = FALSE; + + gboolean (*advance)(GtkTreeModel *, GtkTreeIter *) = + reverse ? + gtk_tree_model_iter_previous : + gtk_tree_model_iter_next; + gboolean (*reset)(GtkTreeModel *, GtkTreeIter *) = + reverse ? + gtk_tree_model_get_iter_last : + gtk_tree_model_get_iter_first; + + gtk_tree_view_get_cursor(tree_view, &initial_path, NULL); + + rc = initial_path && + gtk_tree_model_get_iter(tree_model, &iter, initial_path); + + while(rc && !found) + { + // Advance the iterator. If no next row exists, reset the + // iterator so that it points to either the first or the last + // row depending on the direction of the search. + if(!match_current && !advance(tree_model, &iter)) + { + rc = reset(tree_model, &iter); + } + + if(rc) + { + gchar *name = NULL; + GtkTreePath *path = NULL; + + gtk_tree_model_get( tree_model, + &iter, + PLAYLIST_NAME_COLUMN, &name, + -1 ); + + // Check if the iterator is pointing at the initial + // position. If it does, that means the search term does + // not match any row. If that's the case, set rc to + // FALSE so that the loop exits. + path = gtk_tree_model_get_path(tree_model, &iter); + rc = match_current || + gtk_tree_path_compare(initial_path, path) != 0; + + found = g_str_match_string(term, name, TRUE); + + gtk_tree_path_free(path); + g_free(name); + } + + match_current = FALSE; + } + + if(found) + { + GtkTreePath *path = gtk_tree_model_get_path(tree_model, &iter); + + gtk_tree_view_set_cursor(tree_view, path, NULL, FALSE); + gtk_tree_path_free(path); + } + + gtk_tree_path_free(initial_path); +} + +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_after( self->placeholder, + "drag-begin", + G_CALLBACK(drag_begin_handler), + self ); + g_signal_connect( self->placeholder, + "drag-data-get", + G_CALLBACK(drag_data_get_handler), + self ); + g_signal_connect( self->placeholder, + "drag-data-received", + G_CALLBACK(drag_data_received_handler), + self ); + g_signal_connect( self->placeholder, + "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 ); + g_signal_connect( self->search_entry, + "next-match", + G_CALLBACK(next_match_handler), + self ); + g_signal_connect( self->search_entry, + "previous-match", + G_CALLBACK(previous_match_handler), + self ); + g_signal_connect( self->search_entry, + "search-changed", + G_CALLBACK(search_changed_handler), + self ); + g_signal_connect( self->search_entry, + "stop-search", + G_CALLBACK(stop_search_handler), + self ); + + g_object_bind_property( self, "searching", + self->search_bar, "search-mode-enabled", + G_BINDING_BIDIRECTIONAL ); + g_object_bind_property_full( self, "playlist-count", + self->placeholder, "visible", + G_BINDING_DEFAULT, + is_zero, + NULL, + NULL, + NULL ); + + 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_drag_dest_set( self->placeholder, + GTK_DEST_DEFAULT_ALL, + 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_set_headers_visible(GTK_TREE_VIEW(self->tree_view), FALSE); + + gtk_tree_view_append_column + (GTK_TREE_VIEW(self->tree_view), self->title_column); + + gtk_overlay_add_overlay(GTK_OVERLAY(self->overlay), self->placeholder); + gtk_overlay_set_overlay_pass_through + (GTK_OVERLAY(self->overlay), self->placeholder, TRUE); + + gtk_container_add(GTK_CONTAINER(self->overlay), self->tree_view); + gtk_container_add(GTK_CONTAINER(self->scrolled_window), self->overlay); + gtk_box_pack_end(GTK_BOX(self), self->scrolled_window, TRUE, TRUE, 0); + + gtk_container_add(GTK_CONTAINER(self->search_bar), self->search_entry); + gtk_box_pack_start(GTK_BOX(self), self->search_bar, FALSE, TRUE, 0); + + 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 if(property_id == PROP_SEARCHING) + { + self->searching = g_value_get_boolean(value); + + if(self->searching) + { + gtk_widget_grab_focus(self->search_entry); + } + } + 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 if(property_id == PROP_SEARCHING) + { + g_value_set_boolean(value, self->searching); + } + else + { + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + } +} + +static gboolean +is_zero(GBinding *binding, const GValue *from, GValue *to, gpointer data) +{ + g_value_set_boolean(to, g_value_get_int64(from) == 0); + + return TRUE; +} + +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 void +next_match_handler(GtkSearchEntry *entry, gpointer data) +{ + find_match(data, FALSE, FALSE); +} + +static void +previous_match_handler(GtkSearchEntry *entry, gpointer data) +{ + find_match(data, FALSE, TRUE); +} + +static void +search_changed_handler(GtkSearchEntry *entry, gpointer data) +{ + find_match(data, TRUE, FALSE); +} + +static void +stop_search_handler(GtkSearchEntry *entry, gpointer data) +{ + g_object_set(data, "searching", FALSE, NULL); +} + +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((false, true))"), + CELLULOID_MENU_ITEM(_("Add _Folder…"), "win.show-open-dialog((true, true))"), + CELLULOID_MENU_ITEM(_("Add _Location…"), "win.show-open-location-dialog(true)"), + CELLULOID_MENU_ITEM(_("_Shuffle"), "win.toggle-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); + + pspec = g_param_spec_boolean + ( "searching", + "Searching", + "Whether or not the user is searching the playlist", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(obj_class, PROP_SEARCHING, 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) +{ + GtkStyleContext *style = NULL; + + wgt->playlist_count = 0; + wgt->searching = FALSE; + 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->scrolled_window = gtk_scrolled_window_new(NULL, NULL); + wgt->search_bar = gtk_search_bar_new(); + wgt->search_entry = gtk_search_entry_new(); + wgt->placeholder = gtk_label_new(_("Playlist is empty")); + wgt->overlay = gtk_overlay_new(); + wgt->dnd_delete = TRUE; + + style = gtk_widget_get_style_context(wgt->placeholder); + gtk_style_context_add_class(style, "dim-label"); + + gtk_orientable_set_orientation + (GTK_ORIENTABLE(wgt), GTK_ORIENTATION_VERTICAL); + 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; +} diff --git a/src/celluloid-playlist-widget.h b/src/celluloid-playlist-widget.h new file mode 100644 index 0000000..7d2d0b2 --- /dev/null +++ b/src/celluloid-playlist-widget.h @@ -0,0 +1,63 @@ +/* + * 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, GtkBox) + +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 diff --git a/src/celluloid-plugins-manager-item.c b/src/celluloid-plugins-manager-item.c new file mode 100644 index 0000000..c6b64cb --- /dev/null +++ b/src/celluloid-plugins-manager-item.c @@ -0,0 +1,268 @@ +/* + * 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)); +} diff --git a/src/celluloid-plugins-manager-item.h b/src/celluloid-plugins-manager-item.h new file mode 100644 index 0000000..0119995 --- /dev/null +++ b/src/celluloid-plugins-manager-item.h @@ -0,0 +1,40 @@ +/* + * 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 diff --git a/src/celluloid-plugins-manager.c b/src/celluloid-plugins-manager.c new file mode 100644 index 0000000..0caeefd --- /dev/null +++ b/src/celluloid-plugins-manager.c @@ -0,0 +1,470 @@ +/* + * 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); +} diff --git a/src/celluloid-plugins-manager.h b/src/celluloid-plugins-manager.h new file mode 100644 index 0000000..28372de --- /dev/null +++ b/src/celluloid-plugins-manager.h @@ -0,0 +1,42 @@ +/* + * 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 diff --git a/src/celluloid-preferences-dialog.c b/src/celluloid-preferences-dialog.c new file mode 100644 index 0000000..0097070 --- /dev/null +++ b/src/celluloid-preferences-dialog.c @@ -0,0 +1,464 @@ +/* + * Copyright (c) 2014-2020 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(); + GSettingsSchema *schema = NULL; + + 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); + + g_object_get(settings, "settings-schema", &schema, NULL); + + for(gint i = 0; items[i].type != ITEM_TYPE_INVALID; i++) + { + const gchar *key = items[i].key; + GSettingsSchemaKey *schema_key = + key ? + g_settings_schema_get_key(schema, key) : + NULL; + const gchar *summary = + schema_key ? + g_settings_schema_key_get_summary(schema_key) : + NULL; + const gchar *label = items[i].label ?: summary; + 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 && !label[0]) + { + width = 2; + xpos = 0; + } + + gtk_grid_attach(GTK_GRID(grid), widget, xpos, i, width, 1); + + if(separate_label && label && label[0]) + { + 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 + * separate 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, 12); + } + + 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; + + gtk_widget_class_set_css_name(wid_class, "celluloid-preferences-dialog"); +} + +static void +celluloid_preferences_dialog_init(CelluloidPreferencesDialog *dlg) +{ + const PreferencesDialogItem interface_items[] + = { {NULL, + "autofit-enable", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "csd-enable", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "dark-theme-enable", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "always-use-floating-controls", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "always-autohide-cursor", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "use-skip-buttons-for-playlist", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "last-folder-enable", + ITEM_TYPE_CHECK_BOX}, + {NULL, NULL, ITEM_TYPE_INVALID} }; + const PreferencesDialogItem config_items[] + = { {NULL, + "mpv-config-enable", + ITEM_TYPE_CHECK_BOX}, + {_("mpv configuration file:"), + "mpv-config-file", + ITEM_TYPE_FILE_CHOOSER}, + {NULL, + "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[] + = { {NULL, + "always-open-new-window", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "always-append-to-playlist", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "ignore-playback-errors", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "prefetch-metadata", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "mpris-enable", + ITEM_TYPE_CHECK_BOX}, + {NULL, + "media-keys-enable", + ITEM_TYPE_CHECK_BOX}, + {_("Extra mpv options:"), + NULL, + ITEM_TYPE_LABEL}, + {"", + "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; +} diff --git a/src/celluloid-preferences-dialog.h b/src/celluloid-preferences-dialog.h new file mode 100644 index 0000000..7fb9ef7 --- /dev/null +++ b/src/celluloid-preferences-dialog.h @@ -0,0 +1,38 @@ +/* + * 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 diff --git a/src/celluloid-seek-bar.c b/src/celluloid-seek-bar.c new file mode 100644 index 0000000..527b57a --- /dev/null +++ b/src/celluloid-seek-bar.c @@ -0,0 +1,272 @@ +/* + * Copyright (c) 2016-2020 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" +#include "celluloid-time-label.h" +#include "celluloid-common.h" + +struct _CelluloidSeekBar +{ + GtkBox parent_instance; + GtkWidget *seek_bar; + GtkWidget *label; + GtkWidget *popover; + GtkWidget *popover_label; + gdouble pos; + gdouble duration; + gboolean popover_visible; + guint popover_timeout_id; +}; + +struct _CelluloidSeekBarClass +{ + GtkBoxClass parent_class; +}; + +static void +dispose(GObject *object); + +static void +change_value_handler( GtkWidget *widget, + GtkScrollType scroll, + gdouble value, + gpointer data ); + +static gboolean +enter_handler(GtkWidget *widget, GdkEventCrossing *event, gpointer data); + +static gboolean +leave_handler(GtkWidget *widget, GdkEventCrossing *event, gpointer data); + +static gboolean +motion_handler(GtkWidget *widget, GdkEventMotion *event, gpointer data); + +static gboolean +update_popover_visibility(CelluloidSeekBar *bar); + +G_DEFINE_TYPE(CelluloidSeekBar, celluloid_seek_bar, GTK_TYPE_BOX) + +static void +dispose(GObject *object) +{ + g_clear_object(&CELLULOID_SEEK_BAR(object)->popover); + + G_OBJECT_CLASS(celluloid_seek_bar_parent_class)->dispose(object); +} + +static void +change_value_handler( GtkWidget *widget, + GtkScrollType scroll, + gdouble value, + gpointer data ) +{ + CelluloidSeekBar *bar = data; + + if(bar->duration > 0) + { + g_object_set( bar->label, + "time", (gint)bar->pos, + "duration", (gint)bar->duration, + NULL ); + g_signal_emit_by_name(data, "seek", value); + } +} + +static gboolean +enter_handler(GtkWidget *widget, GdkEventCrossing *event, gpointer data) +{ + CelluloidSeekBar *bar = data; + + if(bar->popover_timeout_id > 0) + { + g_source_remove(bar->popover_timeout_id); + } + + /* Don't show popover if duration is unknown */ + if(bar->duration > 0) + { + bar->popover_visible = TRUE; + bar->popover_timeout_id = + g_timeout_add( 100, + (GSourceFunc)update_popover_visibility, + bar ); + } + + return FALSE; +} + +static gboolean +leave_handler(GtkWidget *widget, GdkEventCrossing *event, gpointer data) +{ + CelluloidSeekBar *bar = data; + + if(bar->popover_timeout_id > 0) + { + g_source_remove(bar->popover_timeout_id); + } + + bar->popover_visible = FALSE; + bar->popover_timeout_id = + g_timeout_add(100, (GSourceFunc)update_popover_visibility, bar); + + return FALSE; +} + +static gboolean +motion_handler(GtkWidget *widget, GdkEventMotion *event, gpointer data) +{ + CelluloidSeekBar *bar = data; + GdkRectangle rect = { .x = (gint)event->x, + .y = 0, + .width = 0, + .height = 0 }; + GdkRectangle range_rect; + gdouble progress = 0; + gchar *text = NULL; + + gtk_range_get_range_rect(GTK_RANGE(bar->seek_bar), &range_rect); + rect.x = CLAMP(rect.x, range_rect.x, range_rect.x + range_rect.width); + + gtk_popover_set_pointing_to(GTK_POPOVER(bar->popover), &rect); + + progress = rect.x / (gdouble)(range_rect.x + range_rect.width); + text = format_time( (gint)(progress * bar->duration), + bar->duration >= 3600 ); + gtk_label_set_text(GTK_LABEL(bar->popover_label), text); + + g_free(text); + + return FALSE; +} + +static gboolean +update_popover_visibility(CelluloidSeekBar *bar) +{ + if(bar->popover_visible) + { + gtk_popover_popup(GTK_POPOVER(bar->popover)); + } + else + { + gtk_popover_popdown(GTK_POPOVER(bar->popover)); + } + + bar->popover_timeout_id = 0; + + return G_SOURCE_REMOVE; +} + +static void +celluloid_seek_bar_class_init(CelluloidSeekBarClass *klass) +{ + G_OBJECT_CLASS(klass)->dispose = dispose; + + 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 = celluloid_time_label_new(); + bar->popover = g_object_ref_sink(gtk_popover_new(bar->seek_bar)); + bar->popover_label = gtk_label_new(NULL); + bar->duration = 0; + bar->pos = 0; + bar->popover_visible = FALSE; + bar->popover_timeout_id = 0; + + g_object_set( bar->label, + "time", (gint)bar->pos, + "duration", (gint)bar->duration, + NULL ); + gtk_popover_set_modal(GTK_POPOVER(bar->popover), FALSE); + + 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); + gtk_widget_add_events(bar->seek_bar, GDK_POINTER_MOTION_MASK); + + gtk_container_add(GTK_CONTAINER(bar->popover), bar->popover_label); + gtk_container_set_border_width(GTK_CONTAINER(bar->popover), 6); + gtk_widget_show(bar->popover_label); + + g_signal_connect( bar->seek_bar, + "change-value", + G_CALLBACK(change_value_handler), + bar ); + g_signal_connect( bar->seek_bar, + "enter-notify-event", + G_CALLBACK(enter_handler), + bar ); + g_signal_connect( bar->seek_bar, + "leave-notify-event", + G_CALLBACK(leave_handler), + bar ); + g_signal_connect( bar->seek_bar, + "motion-notify-event", + G_CALLBACK(motion_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; + + g_object_set(bar->label, "duration", (gint)duration, NULL); + 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) + { + g_object_set(bar->label, "time", (gint)pos, NULL); + } +} diff --git a/src/celluloid-seek-bar.h b/src/celluloid-seek-bar.h new file mode 100644 index 0000000..ef3461b --- /dev/null +++ b/src/celluloid-seek-bar.h @@ -0,0 +1,44 @@ +/* + * 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 diff --git a/src/celluloid-shortcuts-window.c b/src/celluloid-shortcuts-window.c new file mode 100644 index 0000000..848adaf --- /dev/null +++ b/src/celluloid-shortcuts-window.c @@ -0,0 +1,183 @@ +/* + * Copyright (c) 2016-2020 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 playlist[] + = { {"f", _("Enter search mode")}, + {"g", _("Jump to next match")}, + {"g", _("Jump to previous match")}, + {"Escape", _("Exit search mode")}, + {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")}, + {"j j", _("Cycle through available subtitles")}, + {"z z", _("Adjust subtitle delay by +/- 0.1 seconds")}, + {"u", _("Toggle SSA/ASS subtitles style override")}, + {"r r", _("Move subtitles up/down")}, + {"v", _("Toggle VSFilter aspect compatibility mode")}, + {NULL, NULL} }; + const ShortcutEntry video[] + = { {"underscore", _("Cycle through video tracks")}, + {"w w", _("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}, + {_("Playlist"), playlist}, + {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)); +} diff --git a/src/celluloid-shortcuts-window.h b/src/celluloid-shortcuts-window.h new file mode 100644 index 0000000..885920b --- /dev/null +++ b/src/celluloid-shortcuts-window.h @@ -0,0 +1,38 @@ +/* + * 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 diff --git a/src/celluloid-time-label.c b/src/celluloid-time-label.c new file mode 100644 index 0000000..b2b4f8e --- /dev/null +++ b/src/celluloid-time-label.c @@ -0,0 +1,295 @@ +/* + * Copyright (c) 2020 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-common.h" +#include "celluloid-time-label.h" + +enum +{ + PROP_INVALID, + PROP_DURATION, + PROP_TIME +}; + +struct _CelluloidTimeLabel +{ + GtkLabel parent; + gint duration; + gint time; +}; + +struct _CelluloidTimeLabelClass +{ + GtkLabelClass parent_class; +}; + +G_DEFINE_TYPE(CelluloidTimeLabel, celluloid_time_label, GTK_TYPE_LABEL) + +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 +get_max_pixel_size(GtkLabel *label, gint length, gint *width, gint *height); + +static void +update_size(CelluloidTimeLabel *label); + +static void +update_label(CelluloidTimeLabel *label); + +static void +set_property( GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec ) +{ + CelluloidTimeLabel *self = CELLULOID_TIME_LABEL(object); + + switch(property_id) + { + case PROP_DURATION: + { + gint old_duration = self->duration; + + self->duration = g_value_get_int(value); + + // Only update size if we are transitioning from having + // duration to not having one and vice versa, or if the + // number of digits in the hours part of the duration + // changed. + if( (old_duration <= 0) != + (self->duration <= 0) || + (gint)log10(old_duration / 3600) != + (gint)log10(self->duration / 3600) ) + { + update_size(self); + } + + update_label(self); + } + break; + + case PROP_TIME: + { + gint old_time = self->time; + + self->time = g_value_get_int(value); + + // Only update size if we don't have a duration, and the + // number of digits in the hour part of the time + // changed. We don't need to update the size if we have + // duration since the size would have been already + // updated when the duration was set, and the + // resulting size will have enough space to accomodate + // all possible time values. + if( self->duration <= 0 && + (gint)log10(old_time / 3600) != + (gint)log10(self->time / 3600) ) + { + update_size(self); + } + + update_label(self); + } + 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 ) +{ + CelluloidTimeLabel *self = CELLULOID_TIME_LABEL(object); + + switch(property_id) + { + case PROP_DURATION: + g_value_set_int(value, self->duration); + break; + + case PROP_TIME: + g_value_set_int(value, self->time); + break; + + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); + break; + } +} + +static void +get_max_pixel_size(GtkLabel *label, gint duration, gint *width, gint *height) +{ + PangoLayout *layout = pango_layout_copy(gtk_label_get_layout(label)); + + // Find a number in which all digits are 1s, with the same number of + // digits as the hour part of the duration. This will be used to + // generate other numbers which will then be used to generate test + // strings. + const gint hour_digits = (gint)log10(duration/3600) + 1; + const gint ones = ((gint)pow(10, hour_digits) - 1) / 9; + + for(gint i = 0; i < 10; i++) + { + gint test_width = 0; + gint test_height = 0; + + // Numbers with repeated digits to be used to generate test + // strings. + const gint hour = ones * i; + const gint min_sec = 11 * i; + + gchar *time_str = + duration < 3600 ? + g_strdup_printf("%02d:%02d", min_sec, min_sec) : + g_strdup_printf( "%0*d:%02d:%02d", + hour_digits, + hour, + min_sec, + min_sec ); + gchar *test_str = + duration <= 0 ? + g_strdup(time_str) : + g_strdup_printf("%s/%s", time_str, time_str); + + pango_layout_set_text + (layout, test_str, -1); + pango_layout_get_pixel_size + (layout, &test_width, &test_height); + + // Keep maximum width and height. + if(width) + { + *width = *width < test_width ? test_width : *width; + } + + if(height) + { + *height = *height < test_height ? test_height : *height; + } + + g_free(time_str); + g_free(test_str); + } + + g_object_unref(layout); +} + +static void +update_size(CelluloidTimeLabel *label) +{ + gint width = 0; + + get_max_pixel_size( GTK_LABEL(label), + label->duration, + &width, + NULL ); + gtk_widget_set_size_request + (GTK_WIDGET(label), width, -1); +} + +static void +update_label(CelluloidTimeLabel *label) +{ + gint sec = (gint)label->time; + gint duration = (gint)label->duration; + gchar *text; + + if(duration > 0) + { + gchar *sec_str = format_time(sec, duration >= 3600); + gchar *duration_str = format_time(duration, duration >= 3600); + + text = g_strdup_printf("%s/%s", sec_str, duration_str); + + g_free(sec_str); + g_free(duration_str); + } + else + { + text = g_strdup_printf("%02d:%02d", (sec%3600)/60, sec%60); + } + + gtk_label_set_text(GTK_LABEL(label), text); +} + +static void +celluloid_time_label_init(CelluloidTimeLabel *label) +{ + label->duration = 0; + label->time = 0; + + update_size(label); +} + +static void +celluloid_time_label_class_init(CelluloidTimeLabelClass *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_int + ( "duration", + "Duration", + "The full duration of the media being played", + 0, + G_MAXINT, + 0, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_DURATION, pspec); + + pspec = g_param_spec_int + ( "time", + "Time", + "Timestamp of the current position", + 0, + G_MAXINT, + 0, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_TIME, pspec); +} + +GtkWidget * +celluloid_time_label_new() +{ + GObject *object = g_object_new(celluloid_time_label_get_type(), NULL); + + return GTK_WIDGET(object); +} + diff --git a/src/celluloid-time-label.h b/src/celluloid-time-label.h new file mode 100644 index 0000000..8c18aa0 --- /dev/null +++ b/src/celluloid-time-label.h @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2020 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 TIME_LABEL_H +#define TIME_LABEL_H + +#include + +G_BEGIN_DECLS + +#define CELLULOID_TYPE_TIME_LABEL (celluloid_time_label_get_type()) + +G_DECLARE_FINAL_TYPE(CelluloidTimeLabel, celluloid_time_label, CELLULOID, TIME_LABEL, GtkLabel) + +GtkWidget * +celluloid_time_label_new(void); + +G_END_DECLS + +#endif diff --git a/src/celluloid-video-area.c b/src/celluloid-video-area.c new file mode 100644 index 0000000..f9c9b82 --- /dev/null +++ b/src/celluloid-video-area.c @@ -0,0 +1,580 @@ +/* + * Copyright (c) 2016-2021 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-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); +} + +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); + gboolean open_button_active = FALSE; + gboolean menu_button_active = FALSE; + + g_object_get( header_bar, + "open-button-active", &open_button_active, + "menu-button-active", &menu_button_active, + NULL ); + + if(control_box + && !area->fs_control_hover + && !celluloid_control_box_get_volume_popup_visible(control_box) + && !open_button_active + && !menu_button_active) + { + 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 gint height = gtk_widget_get_allocated_height(widget); + + const gdouble unhide_speed = + g_settings_get_double(settings, "controls-unhide-cursor-speed"); + const gdouble dead_zone = + g_settings_get_double(settings, "controls-dead-zone-size"); + + 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 >= unhide_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 && + ABS((2 * event->y - height) / height) > dead_zone ) + { + 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 +popover_notify_handler(GObject *gobject, GParamSpec *pspec, gpointer data) +{ + gboolean value = FALSE; + + g_object_get(gobject, pspec->name, &value, NULL); + + if(value) + { + set_cursor_visible(CELLULOID_VIDEO_AREA(data), TRUE); + } +} + +static void +reveal_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; + + gtk_widget_class_set_css_name(wgt_class, "celluloid-video-area"); + + 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_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_transition_type + (GTK_REVEALER(area->control_box_revealer), + GTK_REVEALER_TRANSITION_TYPE_SLIDE_UP); + 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->control_box, + "notify::volume-popup-visible", + G_CALLBACK(popover_notify_handler), + area ); + g_signal_connect( area->header_bar, + "notify::open-button-active", + G_CALLBACK(popover_notify_handler), + area ); + g_signal_connect( area->header_bar, + "notify::menu-button-active", + G_CALLBACK(popover_notify_handler), + area ); + g_signal_connect( area->header_bar_revealer, + "notify::reveal-child", + G_CALLBACK(reveal_notify_handler), + area ); + g_signal_connect( area->header_bar_revealer, + "notify::child-revealed", + G_CALLBACK(reveal_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); +} + +CelluloidHeaderBar * +celluloid_video_area_get_header_bar(CelluloidVideoArea *area) +{ + return CELLULOID_HEADER_BAR(area->header_bar); +} + +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; +} diff --git a/src/celluloid-video-area.h b/src/celluloid-video-area.h new file mode 100644 index 0000000..69d9a84 --- /dev/null +++ b/src/celluloid-video-area.h @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2016-2020 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" +#include "celluloid-header-bar.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); + +CelluloidHeaderBar * +celluloid_video_area_get_header_bar(CelluloidVideoArea *area); + +CelluloidControlBox * +celluloid_video_area_get_control_box(CelluloidVideoArea *area); + +gint64 +celluloid_video_area_get_xid(CelluloidVideoArea *area); + +#endif diff --git a/src/celluloid-view.c b/src/celluloid-view.c new file mode 100644 index 0000000..85ab788 --- /dev/null +++ b/src/celluloid-view.c @@ -0,0 +1,1869 @@ +/* + * Copyright (c) 2017-2021 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_VOLUME_MAX, + PROP_DURATION, + PROP_PLAYLIST_POS, + PROP_TRACK_LIST, + PROP_DISC_LIST, + PROP_SKIP_ENABLED, + PROP_LOOP, + PROP_SHUFFLE, + PROP_BORDER, + PROP_FULLSCREEN, + PROP_MAXIMIZED, + PROP_DISPLAY_FPS, + PROP_SEARCHING, + N_PROPERTIES +}; + +struct _CelluloidView +{ + CelluloidMainWindow parent; + gboolean disposed; + gboolean has_dialog; + + /* Properties */ + gint playlist_count; + gboolean pause; + gdouble volume; + gdouble volume_max; + gdouble duration; + gint playlist_pos; + GPtrArray *track_list; + GPtrArray *disc_list; + gboolean skip_enabled; + gboolean control_box_enabled; + gboolean loop; + gboolean shuffle; + gboolean border; + gboolean fullscreen; + gboolean maximized; + gdouble display_fps; + gboolean searching; +}; + +struct _CelluloidViewClass +{ + CelluloidMainWindowClass parent_class; +}; + +G_DEFINE_TYPE(CelluloidView, celluloid_view, CELLULOID_TYPE_MAIN_WINDOW) + +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 +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( CelluloidView *view, + GtkMessageType type, + const gchar *title, + const gchar *prefix, + const gchar *msg ); + +static void +update_display_fps(CelluloidView *view); + +static void +show_open_track_dialog(CelluloidView *view, TrackType type); + +/* Dialog responses */ +static void +message_dialog_response_handler( GtkDialog *dialog, + gint response_id, + gpointer data); + +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_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); + + g_object_bind_property( view, "duration", + control_box, "duration", + G_BINDING_DEFAULT ); + g_object_bind_property( wnd, "is-maximized", + view, "maximized", + 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, "shuffle", + control_box, "shuffle", + G_BINDING_BIDIRECTIONAL ); + g_object_bind_property( view, "volume", + control_box, "volume", + G_BINDING_BIDIRECTIONAL ); + g_object_bind_property( view, "volume-max", + control_box, "volume-max", + G_BINDING_DEFAULT ); + g_object_bind_property( playlist, "playlist-count", + view, "playlist-count", + G_BINDING_DEFAULT ); + g_object_bind_property( playlist, "searching", + view, "searching", + G_BINDING_BIDIRECTIONAL ); + + celluloid_main_window_load_state(wnd); + load_css(view); + load_settings(view); + + 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 +dispose(GObject *object) +{ + CelluloidView *view = CELLULOID_VIEW(object); + + if(!view->disposed) + { + celluloid_main_window_save_state(CELLULOID_MAIN_WINDOW(object)); + view->disposed = TRUE; + } + + G_OBJECT_CLASS(celluloid_view_parent_class)->dispose(object); +} + +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_VOLUME_MAX: + self->volume_max = 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_SHUFFLE: + self->shuffle = g_value_get_boolean(value); + break; + + case PROP_BORDER: + self->border = g_value_get_boolean(value); + { + GtkWidget *titlebar = + gtk_window_get_titlebar(GTK_WINDOW(wnd)); + + if(titlebar) + { + gtk_widget_set_visible(titlebar, self->border); + } + + 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_MAXIMIZED: + self->maximized = g_value_get_boolean(value); + + if(self->maximized) + { + gtk_window_maximize(GTK_WINDOW(wnd)); + } + else + { + gtk_window_unmaximize(GTK_WINDOW(wnd)); + } + break; + + case PROP_DISPLAY_FPS: + self->display_fps = g_value_get_double(value); + break; + + case PROP_SEARCHING: + // We do not display playlist in fullscreen mode so refuse to + // enter search mode here if we're in fullscreen mode. + self->searching = !self->fullscreen && + g_value_get_boolean(value); + + // Show playlist if we're about to enter search mode and it + // isn't already visible. + if(self->searching && !celluloid_view_get_playlist_visible(self)) + { + celluloid_view_set_playlist_visible(self, TRUE); + } + 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_VOLUME_MAX: + g_value_set_double(value, self->volume_max); + 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_SHUFFLE: + g_value_set_boolean(value, self->shuffle); + 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_MAXIMIZED: + g_value_set_boolean(value, self->maximized); + break; + + case PROP_DISPLAY_FPS: + g_value_set_double(value, self->display_fps); + break; + + case PROP_SEARCHING: + g_value_set_boolean(value, self->searching); + 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}" + "celluloid-preferences-dialog .dialog-action-box{margin-right: 12px}"; + 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( CelluloidView *view, + GtkMessageType type, + const gchar *title, + const gchar *prefix, + const gchar *msg ) +{ + GtkWidget *dialog = NULL; + GtkWidget *msg_area = NULL; + GList *children = NULL; + + if(view->has_dialog) + { + g_info("Error dialog suppressed because one is already being shown"); + + if(prefix) + { + g_info("Content: *%s* [%s] %s", title, prefix, msg); + } + else + { + g_info("Content: *%s* %s", title, msg); + } + } + else 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(view), + 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(view), + GTK_DIALOG_DESTROY_WITH_PARENT, + type, + GTK_BUTTONS_OK, + "%s", + msg ); + } + + if(dialog) + { + view->has_dialog = TRUE; + 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(message_dialog_response_handler), + view ); + + 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 +show_open_track_dialog(CelluloidView *view, TrackType type) +{ + const gchar *title = NULL; + + switch(type) + { + case TRACK_TYPE_AUDIO: + title = _("Load Audio Track…"); + break; + + case TRACK_TYPE_VIDEO: + title = _("Load Video Track…"); + break; + + case TRACK_TYPE_SUBTITLE: + title = _("Load Subtitle Track…"); + break; + + default: + g_assert_not_reached(); + break; + } + + CelluloidFileChooser *chooser = celluloid_file_chooser_new + ( title, + GTK_WINDOW(view), + GTK_FILE_CHOOSER_ACTION_OPEN ); + + g_object_set_data( G_OBJECT(chooser), + "track-type", + (gpointer)type ); + + g_signal_connect( chooser, + "response", + G_CALLBACK(open_track_dialog_response_handler), + view ); + + celluloid_file_chooser_set_default_filters + ( chooser, + type == TRACK_TYPE_AUDIO, + type == TRACK_TYPE_VIDEO, + FALSE, + type == TRACK_TYPE_SUBTITLE ); + + celluloid_file_chooser_show(chooser); +} + +static void +message_dialog_response_handler( GtkDialog *dialog, + gint response_id, + gpointer data) +{ + CELLULOID_VIEW(data)->has_dialog = FALSE; + + gtk_widget_destroy(GTK_WIDGET(dialog)); +} + +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_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); + const gchar *name = NULL; + + TrackType type = + (TrackType) + g_object_get_data(G_OBJECT(dialog), "track-type"); + + switch(type) + { + case TRACK_TYPE_AUDIO: + name = "audio-track-load"; + break; + + case TRACK_TYPE_VIDEO: + name = "video-track-load"; + break; + + case TRACK_TYPE_SUBTITLE: + name = "subtitle-track-load"; + break; + + default: + g_assert_not_reached(); + break; + } + + for(GSList *iter = uri_list; iter; iter = g_slist_next(iter)) + { + g_signal_emit_by_name(data, name, *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( CELLULOID_VIEW(data), + 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); + GdkDragAction action = gdk_drag_context_get_selected_action(context); + + // When shift is held, action will be set to GDK_ACTION_MOVE + gboolean append = CELLULOID_IS_PLAYLIST_WIDGET(widget) || + action == GDK_ACTION_MOVE; + + 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->dispose = dispose; + 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 + ( "volume-max", + "Volume Max", + "The maximum amplification level", + 0.0, + G_MAXDOUBLE, + 100.0, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_VOLUME_MAX, 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", + -1, + G_MAXINT, + -1, + 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 + ( "shuffle", + "Shuffle", + "Whether or not the the shuffle button is active", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_SHUFFLE, 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_boolean + ( "maximized", + "Maximized", + "Whether or not the main window is maximized", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_MAXIMIZED, 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); + + pspec = g_param_spec_boolean + ( "searching", + "Searching", + "Whether or not the user is searching the playlist", + FALSE, + G_PARAM_READWRITE ); + g_object_class_install_property(object_class, PROP_SEARCHING, 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( "video-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->disposed = FALSE; + view->has_dialog = FALSE; + view->playlist_count = 0; + view->pause = FALSE; + view->volume = 0.0; + view->volume_max = 100.0; + view->duration = 0.0; + view->playlist_pos = 0; + view->disc_list = NULL; + view->skip_enabled = FALSE; + view->loop = FALSE; + view->shuffle = FALSE; + view->border = FALSE; + view->fullscreen = FALSE; + view->maximized = FALSE; + view->display_fps = 0; + view->searching = FALSE; + + 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 folder, + gboolean append ) +{ + CelluloidFileChooser *chooser; + GPtrArray *args; + const gchar *title; + GtkFileChooserAction action; + gboolean *append_buf; + + if(folder) + { + title = append ? _("Add Folder to Playlist") : _("Open Folder"); + action = GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER; + } + else + { + title = append ? _("Add File to Playlist") : _("Open File"); + action = GTK_FILE_CHOOSER_ACTION_OPEN; + } + + chooser = celluloid_file_chooser_new(title, GTK_WINDOW(view), action); + 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 ); + + if(!folder) + { + 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) +{ + show_open_track_dialog(view, TRACK_TYPE_AUDIO); +} + +void +celluloid_view_show_open_video_track_dialog(CelluloidView *view) +{ + show_open_track_dialog(view, TRACK_TYPE_VIDEO); +} + +void +celluloid_view_show_open_subtitle_track_dialog(CelluloidView *view) +{ + show_open_track_dialog(view, TRACK_TYPE_SUBTITLE); +} + +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( 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-2020 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(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) +{ + 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)); +} + +void +celluloid_view_set_main_menu_visible(CelluloidView *view, gboolean visible) +{ + gboolean csd = + celluloid_main_window_get_csd_enabled + (CELLULOID_MAIN_WINDOW(view)); + + if(csd) + { + GtkWidget *header_bar = gtk_window_get_titlebar(GTK_WINDOW(view)); + + celluloid_header_bar_set_menu_button_popup_visible + (CELLULOID_HEADER_BAR(header_bar), visible); + } + else + { + gtk_application_window_set_show_menubar + (GTK_APPLICATION_WINDOW(view), visible); + } +} + +gboolean +celluloid_view_get_main_menu_visible(CelluloidView *view) +{ + gboolean csd = + celluloid_main_window_get_csd_enabled + (CELLULOID_MAIN_WINDOW(view)); + + gboolean result = FALSE; + + if(csd) + { + GtkWidget *header_bar = gtk_window_get_titlebar(GTK_WINDOW(view)); + + result = + celluloid_header_bar_get_menu_button_popup_visible + (CELLULOID_HEADER_BAR(header_bar)); + } + else + { + result = + gtk_application_window_get_show_menubar + (GTK_APPLICATION_WINDOW(view)); + } + + return result; +} diff --git a/src/celluloid-view.h b/src/celluloid-view.h new file mode 100644 index 0000000..963e432 --- /dev/null +++ b/src/celluloid-view.h @@ -0,0 +1,143 @@ +/* + * Copyright (c) 2017-2020 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 folder, + 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_video_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); + +void +celluloid_view_set_main_menu_visible(CelluloidView *view, gboolean visible); + +gboolean +celluloid_view_get_main_menu_visible(CelluloidView *view); + +G_END_DECLS + +#endif diff --git a/src/generate-authors.py b/src/generate-authors.py new file mode 100755 index 0000000..fb3f1f6 --- /dev/null +++ b/src/generate-authors.py @@ -0,0 +1,17 @@ +#!/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') + diff --git a/src/media-keys/celluloid-media-keys.c b/src/media-keys/celluloid-media-keys.c new file mode 100644 index 0000000..76b561b --- /dev/null +++ b/src/media-keys/celluloid-media-keys.c @@ -0,0 +1,329 @@ +/* + * 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 )); +} diff --git a/src/media-keys/celluloid-media-keys.h b/src/media-keys/celluloid-media-keys.h new file mode 100644 index 0000000..0878dd4 --- /dev/null +++ b/src/media-keys/celluloid-media-keys.h @@ -0,0 +1,36 @@ +/* + * 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 diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000..8c62266 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,138 @@ +gnome = 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-option-parser.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-time-label.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()), + '-DG_LOG_DOMAIN="@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.107'), + dependency('epoxy') + ], + link_with: extra_libs, + include_directories: includes, + c_args: cflags, + install: true +) diff --git a/src/mpris/celluloid-mpris-base.c b/src/mpris/celluloid-mpris-base.c new file mode 100644 index 0000000..223f571 --- /dev/null +++ b/src/mpris/celluloid-mpris-base.c @@ -0,0 +1,382 @@ +/* + * 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 )); +} + diff --git a/src/mpris/celluloid-mpris-base.h b/src/mpris/celluloid-mpris-base.h new file mode 100644 index 0000000..ef817b1 --- /dev/null +++ b/src/mpris/celluloid-mpris-base.h @@ -0,0 +1,38 @@ +/* + * 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 diff --git a/src/mpris/celluloid-mpris-module.c b/src/mpris/celluloid-mpris-module.c new file mode 100644 index 0000000..677c8a0 --- /dev/null +++ b/src/mpris/celluloid-mpris-module.c @@ -0,0 +1,344 @@ +/* + * 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); + } +} diff --git a/src/mpris/celluloid-mpris-module.h b/src/mpris/celluloid-mpris-module.h new file mode 100644 index 0000000..144ec1f --- /dev/null +++ b/src/mpris/celluloid-mpris-module.h @@ -0,0 +1,63 @@ +/* + * 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 diff --git a/src/mpris/celluloid-mpris-player.c b/src/mpris/celluloid-mpris-player.c new file mode 100644 index 0000000..cd276d0 --- /dev/null +++ b/src/mpris/celluloid-mpris-player.c @@ -0,0 +1,862 @@ +/* + * 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 )); +} diff --git a/src/mpris/celluloid-mpris-player.h b/src/mpris/celluloid-mpris-player.h new file mode 100644 index 0000000..7f7863a --- /dev/null +++ b/src/mpris/celluloid-mpris-player.h @@ -0,0 +1,38 @@ +/* + * 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 diff --git a/src/mpris/celluloid-mpris-track-list.c b/src/mpris/celluloid-mpris-track-list.c new file mode 100644 index 0000000..7b5d8c5 --- /dev/null +++ b/src/mpris/celluloid-mpris-track-list.c @@ -0,0 +1,599 @@ +/* + * 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); +} + diff --git a/src/mpris/celluloid-mpris-track-list.h b/src/mpris/celluloid-mpris-track-list.h new file mode 100644 index 0000000..f285033 --- /dev/null +++ b/src/mpris/celluloid-mpris-track-list.h @@ -0,0 +1,40 @@ +/* + * 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 diff --git a/src/mpris/celluloid-mpris.c b/src/mpris/celluloid-mpris.c new file mode 100644 index 0000000..053aa4c --- /dev/null +++ b/src/mpris/celluloid-mpris.c @@ -0,0 +1,288 @@ +/* + * 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 )); +} diff --git a/src/mpris/celluloid-mpris.h b/src/mpris/celluloid-mpris.h new file mode 100644 index 0000000..3ac9d57 --- /dev/null +++ b/src/mpris/celluloid-mpris.h @@ -0,0 +1,42 @@ +/* + * 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 diff --git a/test/meson.build b/test/meson.build new file mode 100644 index 0000000..f2e340b --- /dev/null +++ b/test/meson.build @@ -0,0 +1,8 @@ +exe = executable( + 'test-option-parser', + ['..' / 'src' / 'celluloid-option-parser.c', 'test-option-parser.c'], + include_directories: include_directories('..' / 'src'), + dependencies: libgtk +) + +test('test-option-parser', exe) diff --git a/test/test-option-parser.c b/test/test-option-parser.c new file mode 100644 index 0000000..a128566 --- /dev/null +++ b/test/test-option-parser.c @@ -0,0 +1,170 @@ +#include + +#include "celluloid-option-parser.h" + +static void +test_option_with_no_value(void) +{ + const gchar *str = "--foo"; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "foo") == 0); + g_assert_true(!val); + g_free(key); + g_free(val); +} + +static void +test_option_with_value(void) +{ + const gchar *str = "--foo=bar"; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "foo") == 0); + g_assert_true(g_strcmp0(val, "bar") == 0); + g_free(key); + g_free(val); +} + +static void +test_option_with_hyphen(void) +{ + const gchar *str = "--foo-bar=baz"; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "foo-bar") == 0); + g_assert_true(g_strcmp0(val, "baz") == 0); + g_free(key); + g_free(val); +} + +static void +test_option_with_underscore(void) +{ + const gchar *str = "--foo_bar=baz"; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "foo_bar") == 0); + g_assert_true(g_strcmp0(val, "baz") == 0); + g_free(key); + g_free(val); +} + +static void +test_multiple_options(void) +{ + const gchar *str = "--foo --foo-bar=baz --bar --baz=foo"; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str); + g_assert_true(g_strcmp0(key, "foo") == 0); + g_assert_true(!val); + g_clear_pointer(&key, g_free); + g_clear_pointer(&val, g_free); + + str = parse_option(str, &key, &val); + g_assert_true(str); + g_assert_true(g_strcmp0(key, "foo-bar") == 0); + g_assert_true(g_strcmp0(val, "baz") == 0); + g_clear_pointer(&key, g_free); + g_clear_pointer(&val, g_free); + + str = parse_option(str, &key, &val); + g_assert_true(str); + g_assert_true(g_strcmp0(key, "bar") == 0); + g_assert_true(!val); + g_clear_pointer(&key, g_free); + g_clear_pointer(&val, g_free); + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "baz") == 0); + g_assert_true(g_strcmp0(val, "foo") == 0); + g_clear_pointer(&key, g_free); + g_clear_pointer(&val, g_free); +} + +static void +test_option_with_no_prefix(void) +{ + const gchar *str = "foo=bar"; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "foo") == 0); + g_assert_true(g_strcmp0(val, "bar") == 0); + g_free(key); + g_free(val); +} + +static void +test_quoted_value(void) +{ + const gchar *str = "--foo='bar baz'"; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "foo") == 0); + g_assert_true(g_strcmp0(val, "bar baz") == 0); + g_free(key); + g_free(val); +} + +static void +test_double_quoted_value(void) +{ + const gchar *str = "--foo=\"bar baz\""; + gchar *key = NULL; + gchar *val = NULL; + + str = parse_option(str, &key, &val); + g_assert_true(str && !*str); + g_assert_true(g_strcmp0(key, "foo") == 0); + g_assert_true(g_strcmp0(val, "bar baz") == 0); + g_free(key); + g_free(val); +} + +int +main(gint argc, gchar **argv) +{ + g_test_init(&argc, &argv, NULL); + g_test_set_nonfatal_assertions(); + + g_test_add_func("/test-option-with-no-value", + test_option_with_no_value ); + g_test_add_func("/test-option-with-value", + test_option_with_value ); + g_test_add_func("/test-option-with-hyphen", + test_option_with_hyphen ); + g_test_add_func("/test-option-with-underscore", + test_option_with_underscore ); + g_test_add_func("/test-multiple-options", + test_multiple_options ); + g_test_add_func("/test-option-with-no-prefix", + test_option_with_no_prefix ); + g_test_add_func("/test-quoted-value", + test_quoted_value ); + g_test_add_func("/test-double-quoted-value", + test_double_quoted_value ); + + return g_test_run(); +} diff --git a/zanata.xml b/zanata.xml new file mode 100644 index 0000000..0553cb4 --- /dev/null +++ b/zanata.xml @@ -0,0 +1,9 @@ + + + https://translate.zanata.org/ + celluloid + master + gettext + po + po +