Compare commits

...

16 Commits

Author SHA1 Message Date
stax76
f7c8c16344 v7.1.1.4 Beta 2025-10-05 01:12:04 +02:00
stax76
b1fccbf175 misc 2025-10-04 15:07:56 +02:00
stax76
cc1e4bc9f8 misc 2025-09-12 05:11:55 +02:00
stax76
3812f3031c Improved support for select.lua 2025-05-05 17:42:50 +02:00
stax76
837f97d491 Merge branch 'main' of https://github.com/mpvnet-player/mpv.net 2025-05-05 14:38:20 +02:00
stax76
2dab825af4 Update changelog 2025-05-05 14:37:58 +02:00
stax76
a78c1ba50d Merge pull request #725 from benomine/main
feat: dotnet 9, CPM, etc
2025-05-05 14:30:44 +02:00
stax76
50aea3b5ba Update changelog 2025-05-05 14:28:45 +02:00
stax76
6a971595f7 attempted actions/workflow fix 2025-05-04 05:03:17 +02:00
stax76
a1d944a9a0 translation update 2025-05-04 04:51:40 +02:00
stax76
8b49312bad Turkish translation update 2025-05-04 04:26:25 +02:00
stax76
95b279b0e9 Merge pull request #718 from DogancanYr/patch-3
Update tr.po
2025-05-04 04:10:30 +02:00
Benjamin Nomine
01477d8b25 feat: dotnet 9, CPM, etc 2025-01-11 14:05:54 -05:00
DogancanYr
4e5182eb73 Update tr.po 2024-11-28 19:43:56 +02:00
stax76
8d0b70a5dc manual improvements and fixes 2024-11-06 01:50:07 +01:00
stax76
37a241f136 Use MPV_CONFIG_DIR env var for command palette installer script 2024-11-03 11:30:19 +01:00
31 changed files with 1332 additions and 1020 deletions

View File

@@ -54,7 +54,7 @@ jobs:
- name: Download libmpv # In principle, only update this binary file when significant feature changes occur in mpv/mpv.net
shell: msys2 {0}
run: |
wget -nv -O libmpv.7z https://github.com/zhongfly/mpv-winbuild/releases/download/2024-10-09-e09278c/mpv-dev-x86_64-20241009-git-e09278c.7z
wget -nv -O libmpv.7z https://github.com/zhongfly/mpv-winbuild/releases/download/2025-05-03-e663cbc/mpv-dev-x86_64-20250503-git-e663cbc.7z
7z x -y libmpv.7z -olibmpv
cp -f libmpv/libmpv-2.dll src/MpvNet.Windows/bin/Debug/ || true
- name: Download MediaInfo
@@ -69,7 +69,7 @@ jobs:
wget -nv -O mpvnet.com https://github.com/mpvnet-player/file-host/releases/download/tag/mpvnet.com.txt
cp -f mpvnet.com src/MpvNet.Windows/bin/Debug/ || true
- name: Upload
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: "mpv.net-win64"
path: src/MpvNet.Windows/bin/Debug/

View File

@@ -1,4 +1,23 @@
# v7.1.1.4 Beta (2025-10-05)
- Support for select.lua has been added. It's a new Lua script built
directly into mpv like the osc console script. It's similar to command_palete.lua.
- Fix --script-opt not working.
- The mpv.net manual was updated.
- The Turkish translation was updated. A Bulgarian translation was added.
Thanks to the translators!
- The required Dotnet version changed from 6.0 to 9.0. This drops Win 7 support
unfortunately. It was done to use new C# language features and make
the mpv.net project more attractive for new developers to contribute.
Also most users prefer having the newest runtime.
- auto build has been disabled because it requires updating libmpv and
mediainfo all the time which is too much manual work.
- The script src/Tools/update-mpv.ps1 has been improved. It's the easiest way
update mpv and libmpv (x64 and ARM64). Shinshiro has a update script too,
but it's a lot longer and more complex.
- mediainfo and libmpv have been updated.
# v7.1.1.3 Beta (2024-10-20)
- Support for autocreate-playlist, video-exts, audio-exts, image-exts.

View File

@@ -11,7 +11,7 @@ Table of contents
* [Download](#download)
* [Installation](#installation)
* [Support](#support)
* [Settings](#settings)
* [Config Folder](#config-folder)
* [Input and context menu](#input-and-context-menu)
* [Command Line Interface](#command-line-interface)
* [Terminal](#terminal)
@@ -42,9 +42,7 @@ differences are documented in this manual under [Differences compared to mpv](#d
Download
--------
1. [Stable and beta portable and setup via GitHub download](../../../releases)
2. Stable via command line with winget: `winget install mpv.net`
3. [Automated nightly portable builds](https://github.com/mpvnet-player/mpv.net/actions)
[Stable and beta portable and setup via GitHub download](../../../releases)
[Changelog](changelog.md)
@@ -52,6 +50,8 @@ Download
Installation
------------
#### Requirements
1. Windows 10 or higher.
2. [.NET Desktop Runtime 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0)
@@ -59,30 +59,34 @@ Internet streaming requires:
- Downloading [yt-dlp](https://github.com/yt-dlp/yt-dlp) and adding its folder
to the [user environment variable PATH](https://www.google.com/search?q=user+environment+variable+PATH).
Alternativly the yt-dlp executable can be saved in the mpv.net executable folder.
- In case of proxy server usage, [manual configuration](https://github.com/mpvnet-player/mpv.net/issues/401).
#### File Associations
File Associations can be registered using the context menu under 'Settings > Setup'.
File Associations can be registered using the context menu under `Config > Setup`.
After the file associations were registered, it might still be necessary to change the
default app in the Windows settings.
Another way to register file associations is using Windows File Explorer,
select a media file and select 'Open with > Choose another app' in the context menu.
select a media file and select `Open with > Choose another app` in the context menu.
[Open with++](#open-with) can be used to extend the File Explorer context menu
to get menu items for [Play with mpv.net](https://github.com/stax76/OpenWithPlusPlus#play-with-mpvnet) and
[Add to mpv.net playlist](https://github.com/stax76/OpenWithPlusPlus#add-to-mpvnet-playlist).
When multiple files are selected in File Explorer and enter is pressed then
the files are opened in mpv.net in random order, this works with maximum 15 files.
Alternativly the `Send To` feature of Windows File Explorer can be used.
#### Path environment variable
In order to use mpv.net in a terminal for advanced use cases,
mpv.net must be added to the Path environment variable,
this can be achieved with the context menu (Settings/Setup).
mpv.net can be added to the Path environment variable, it allows
to run mpv.net in a terminal by typing `mpvnet`. The easiest way
to add mpv.net to path is:
`Context Menu > Config > Setup > Add mpv.net to Path environment variable`
For more information see the [terminal section](#terminal).
Support
-------
@@ -103,9 +107,11 @@ Advanced mpv questions:
https://github.com/mpv-player/mpv/issues
https://github.com/mpv-player/mpv/discussions
Settings
--------
Config Folder
-------------
mpv.net searches the config folder at:
@@ -113,9 +119,17 @@ mpv.net searches the config folder at:
2. startup\portable_config (startup means the directory containing mpvnet.exe)
3. `%APPDATA%\mpv.net` (`C:\Users\Username\AppData\Roaming\mpv.net`)
mpv options are stored in the file mpv.conf,
mpv.net options are stored in the file mpvnet.conf,
mpv.net options are documented [here](#mpvnet-specific-options).
The config folder can be easily opened with:
`Context Menu > Config > Open Config Folder`
The most important files and folders in the config folder are:
- `mpv.conf` file containing the mpv configuration.
- `mpvnet.conf` file containing the mpv.net configuration.
- `input.conf` file containing mpv key and mouse input bindings.
- `scripts` folder containing mpv user scripts.
- `script-opts` folder containing user scripts configuration files.
Input and context menu
@@ -123,13 +137,13 @@ Input and context menu
Global keyboard shortcuts are supported via `global-input.conf` file.
The config folder can be opened from the context menu: `Settings > Open Config Folder`
The config folder can be opened from the context menu: `Config > Open Config Folder`
A input and config editor can be found in the context menu under 'Settings'.
A input and config editor can be found in the context menu under `Config`.
The input test mode can be started via command line: --input-test
The input test mode can be started via command line: `--input-test`
The input key list can be printed with --input-keylist
The input key list can be printed with `--input-keylist`.
mpv input.conf defaults:
https://github.com/mpv-player/mpv/blob/master/etc/input.conf
@@ -201,14 +215,11 @@ Terminal
When mpv.net is started from a terminal it will output status,
error and debug messages to the terminal and accept input keys from the terminal.
mpv.net specific commands
-------------------------
`script-message-to mpvnet <command> <arguments>`
mpv.net commands are used when mpv commands don't exist or lack a feature.
### add-to-path
Adds mpv.net to the Path environment variable.
@@ -221,9 +232,19 @@ Opens mpv.conf or input.conf in a text editor.
### load-audio
Shows a file browser dialog to open external audio files.
For automatic detection of external audio files based on the file name,
use the mpv option `audio-file-auto`, it can be found it the config dialog:
`Context Menu > Config > Show Config Editor > Audio > audio-file-auto`
### load-sub
Shows a file browser dialog to open external subtitle files.
For automatic detection of external subtitle files based on the file name,
use the mpv option `sub-auto`, it can be found it the config dialog:
`Context Menu > Config > Show Config Editor > Subtitles > sub-auto`
### move-window [left|top|right|bottom|center]
Moves the Window to the screen edge (Alt+Arrow) or center (Alt+BS).
@@ -236,7 +257,9 @@ Appends files to the playlist.
Opens a file browser dialog in order to select files to be opened.
The file browser dialog supports multiselect to load multiple files
at once. Pressing CTRL appends the files to the playlist.
at once.
Supported are media files and Blu-ray and DVD ISO image files.
### open-optical-media
Shows a folder browser dialog to open a DVD or BD folder.
@@ -244,8 +267,8 @@ ISO images don't have to be mounted, but instead can be
opened directly with the open-files command.
### open-clipboard [\<flags\>]
Opens a single URL or filepath from the clipboard,
or multiple files in the file clipboard format.
Opens URLs or filepaths from the clipboard,
or files in the file clipboard format.
**append**
Appends files/URLs to the playlist.
@@ -514,14 +537,15 @@ Alternatively the Chrome/Firefox extension [Open With](../../../issues/119) can
[Open with++](https://github.com/stax76/OpenWithPlusPlus) can be used to extend the File Explorer context menu to get menu items for [Play with mpv.net](https://github.com/stax76/OpenWithPlusPlus#play-with-mpvnet) and [Add to mpv.net playlist](https://github.com/stax76/OpenWithPlusPlus#add-to-mpvnet-playlist).
### External Application Button
### External Application Launcher
Videos can be streamed or downloaded easily with the Chrome extension
External Application Button, for download (recommended):
[External Application Launcher](https://chromewebstore.google.com/detail/external-application-laun/bifmfjgpgndemajpeeoiopbeilbaifdo),
for download (recommended):
path: `wt`
args: `-- pwsh -NoLogo -Command "yt-dlp --ignore-errors --download-archive 'C:\External Application Button.txt' --output 'C:\YouTube\%(channel)s - %(title)s.%(ext)s' ('[HREF]' -replace '&list=.+','')"`
args: `-- powershell -NoLogo -Command "yt-dlp --ignore-errors --download-archive 'C:\External Application Button.txt' --output 'C:\YouTube\%(channel)s - %(title)s.%(ext)s' ('[HREF]' -replace '&list=.+','')"`
Scripting
@@ -562,9 +586,9 @@ Custom themes can be saved at:
`<conf folder>\theme.conf`
The theme.conf file may contain an unlimited amount of themes.
The theme.conf file may contain multiple themes.
In the config editor under UI there are the settings dark-theme and
In the config editor under UI there are the options dark-theme and
light-theme to define the themes used in dark and in light mode.
@@ -589,7 +613,7 @@ Differences compared to mpv
mpv.net is designed to work exactly like mpv, there are a few
differences and limitations:
The settings folder is named `mpv.net` instead of `mpv`:
The configuration folder is named `mpv.net` instead of `mpv`:
`C:\Users\username\AppData\Roaming\mpv.net`
@@ -707,7 +731,7 @@ Environment Variables
### MPVNET_HOME
Directory where mpv.net looks for user settings.
Directory where mpv.net looks for the user configuration.
user-data
@@ -729,700 +753,6 @@ Work on the translation is done with transifex, translators have to create a tra
https://app.transifex.com/stax76/teams/
For questions visit:
For translation questions visit:
https://github.com/mpvnet-player/mpv.net/issues/576
Context Menu Commands
---------------------
### Open > Open Files
The Open Files menu entry is one way to open files in mpv.net, it supports multi selection.
Another way to open files is the command line which is used by
File Explorer for existing associations.
A third way is to drag and drop files on the main window.
Blu-ray and DVD ISO image files are supported.
### Open > Open URL or file path from clipboard
Opens files and URLs from the clipboard. Shift key appends to the playlist.
How to open URLs directly from the browser from sites like YouTube is described in the
[External Tools section](#external-tools).
### Open > Open DVD/Blu-ray Drive/Folder
Opens a DVD/Blu-ray Drive/Folder.
### Open > Load external audio files
Allows to load an external audio file. It's also possible to auto detect
external audio files based on the file name, the option for this can be
found in the settings under 'Settings > Show Config Editor > Audio > audio-file-auto'.
### Open > Load external subtitle files
Allows to load an external subtitle file. It's also possible to auto detect
external subtitle files based on the file name, the option for this can be
found in the settings under 'Settings > Show Config Editor > Subtitles > sub-auto'.
### Play/Pause
Play/Pause using the command:
`cycle pause`
[cycle command](https://mpv.io/manual/master/#command-interface-cycle-%3Cname%3E-[%3Cvalue%3E])
[pause property](https://mpv.io/manual/master/#options-pause)
### Stop
Stops the player and unloads the playlist using the command:
`stop`
[stop command](https://mpv.io/manual/master/#command-interface-stop)
### Toggle Fullscreen
Toggles fullscreen using the command:
`cycle fullscreen`
[cycle command](https://mpv.io/manual/master/#command-interface-cycle-%3Cname%3E-[%3Cvalue%3E])
[fullscreen property](https://mpv.io/manual/master/#options-fs)
### Navigate > Previous File
Navigates to the previous file in the playlist using the command:
`playlist-prev`
[playlist-prev command](https://mpv.io/manual/master/#command-interface-playlist-prev)
### Navigate > Next File
Navigates to the next file in the playlist using the command:
`playlist-next`
[playlist-next command](https://mpv.io/manual/master/#command-interface-playlist-next)
### Navigate > Next Chapter
Navigates to the next chapter using the command:
`add chapter 1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[chapter property](https://mpv.io/manual/master/#command-interface-chapter)
### Navigate > Previous Chapter
Navigates to the previous chapter using the command:
`add chapter -1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[chapter property](https://mpv.io/manual/master/#command-interface-chapter)
### Navigate > Jump Next Frame
Jumps to the next frame using the command:
`frame-step`
[frame-step command](https://mpv.io/manual/master/#command-interface-frame-step)
### Navigate > Jump Previous Frame
Jumps to the previous frame using the command:
`frame-back-step`
[frame-back-step command](https://mpv.io/manual/master/#command-interface-frame-back-step)
### Navigate > Jump
Seeking using the command:
`no-osd seek sec`
sec is the relative amount of seconds to jump, the no-osd prefix
is used because mpv.net includes a script that shows the position
when a seek operation is performed, the script uses a more simple
time format.
[no-osd command prefix](https://mpv.io/manual/master/#command-interface-no-osd)
[seek command](https://mpv.io/manual/master/#command-interface-seek-%3Ctarget%3E-[%3Cflags%3E])
### Pan & Scan > Increase Size
Adds video zoom using the command:
`add video-zoom 0.1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[video-zoom property](https://mpv.io/manual/master/#options-video-zoom)
### Pan & Scan > Decrease Size
Adds negative video zoom using the command:
`add video-zoom -0.1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[video-zoom property](https://mpv.io/manual/master/#options-video-zoom)
### Pan & Scan > Move Left
`add video-pan-x -0.01`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[video-pan-x, video-pan-y property](https://mpv.io/manual/master/#options-video-pan-y)
### Pan & Scan > Move Right
`add video-pan-x 0.01`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[video-pan-x, video-pan-y property](https://mpv.io/manual/master/#options-video-pan-y)
### Pan & Scan > Move Up
`add video-pan-y -0.01`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[video-pan-x, video-pan-y property](https://mpv.io/manual/master/#options-video-pan-y)
### Pan & Scan > Move Down
`add video-pan-y 0.01`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[video-pan-x, video-pan-y property](https://mpv.io/manual/master/#options-video-pan-y)
### Pan & Scan > Decrease Height
`add panscan -0.1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[panscan property](https://mpv.io/manual/master/#options-panscan)
### Pan & Scan > Increase Height
`add panscan 0.1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[panscan property](https://mpv.io/manual/master/#options-panscan)
### Pan & Scan > Reset
Resets Pan & Scan, multiple commands in the same line are separated with semicolon.
`set video-zoom 0; set video-pan-x 0; set video-pan-y 0`
[video-zoom property](https://mpv.io/manual/master/#options-video-zoom)
[video-pan-x, video-pan-y property](https://mpv.io/manual/master/#options-video-pan-y)
### Video > Decrease Contrast
Decreases contrast with the following command:
`add contrast -1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[contrast property](https://mpv.io/manual/master/#options-contrast)
### Video > Increase Contrast
Increases contrast with the following command:
`add contrast 1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[contrast property](https://mpv.io/manual/master/#options-contrast)
### Video > Decrease Brightness
Decreases brightness using the following command:
`add brightness -1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[brightness property](https://mpv.io/manual/master/#options-brightness)
### Video > Increase Brightness
Increases brightness using the following command:
`add brightness 1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[brightness property](https://mpv.io/manual/master/#options-brightness)
### Video > Decrease Gamma
Decreases gamma using the following command:
`add gamma -1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[gamma property](https://mpv.io/manual/master/#options-gamma)
### Video > Increase Gamma
Increases gamma using the following command:
`add gamma 1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[gamma property](https://mpv.io/manual/master/#options-gamma)
### Video > Decrease Saturation
Decreases saturation using the following command:
`add saturation -1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[saturation property](https://mpv.io/manual/master/#options-saturation)
### Video > Increase Saturation
Increases saturation using the following command:
`add saturation 1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[saturation property](https://mpv.io/manual/master/#options-saturation)
### Video > Take Screenshot
`async screenshot`
[async command prefix](https://mpv.io/manual/master/#command-interface-async)
[screenshot command](https://mpv.io/manual/master/#command-interface-screenshot-%3Cflags%3E)
### Video > Toggle Deinterlace
Cycles the deinterlace property using the following command:
`cycle deinterlace`
[cycle command](https://mpv.io/manual/master/#command-interface-cycle-%3Cname%3E-[%3Cvalue%3E])
[deinterlace property](https://mpv.io/manual/master/#options-deinterlace)
### Video > Cycle Aspect Ratio
Cycles the aspect ratio using the following command:
`cycle-values video-aspect-override 16:9 4:3 2.35:1 0 -1`
[cycle-values command](https://mpv.io/manual/master/#command-interface-cycle-values)
[video-aspect property](https://mpv.io/manual/master/#options-video-aspect-override)
### Audio > Next
This uses a mpv.net command that shows better info then the mpv preset
and also has the advantage of not showing no audio.
### Audio > Delay +0.1
Adds a audio delay using the following command:
`add audio-delay 0.1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[audio-delay property](https://mpv.io/manual/master/#options-audio-delay)
### Audio > Delay -0.1
Adds a negative audio delay using the following command:
`add audio-delay -0.1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[audio-delay property](https://mpv.io/manual/master/#options-audio-delay)
### Subtitle > Toggle Visibility
Cycles the subtitle visibility using the following command:
`cycle sub-visibility`
[cycle command](https://mpv.io/manual/master/#command-interface-cycle-%3Cname%3E-[%3Cvalue%3E])
[sub-visibility property](https://mpv.io/manual/master/#options-no-sub-visibility)
### Subtitle > Delay -0.1
Adds a negative subtitle delay using the following command:
`add sub-delay -0.1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[sub-delay property](https://mpv.io/manual/master/#options-sub-delay)
### Subtitle > Delay 0.1
Adds a positive subtitle delay using the following command:
`add sub-delay 0.1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[sub-delay property](https://mpv.io/manual/master/#options-sub-delay)
### Subtitle > Move Up
Moves the subtitle up using the following command:
`add sub-pos -1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[sub-pos property](https://mpv.io/manual/master/#options-sub-pos)
### Subtitle > Move Down
Moves the subtitle down using the following command:
`add sub-pos 1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[sub-pos property](https://mpv.io/manual/master/#options-sub-pos)
### Subtitle > Decrease Subtitle Font Size
Decreases the subtitle font size using the following command:
`add sub-scale -0.1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[sub-scale property](https://mpv.io/manual/master/#options-sub-scale)
### Subtitle > Increase Subtitle Font Size
Increases the subtitle font size using the following command:
`add sub-scale 0.1`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[sub-scale property](https://mpv.io/manual/master/#options-sub-scale)
### Volume > Up
Increases the volume using the following command:
`add volume 2`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[volume property](https://mpv.io/manual/master/#options-volume)
### Volume > Down
Decreases the volume using the following command:
`add volume -2`
[add command](https://mpv.io/manual/master/#command-interface-add-%3Cname%3E-[%3Cvalue%3E])
[volume property](https://mpv.io/manual/master/#options-volume)
### Volume > Mute
Cycles the mute property using the following command:
`cycle mute`
[cycle command](https://mpv.io/manual/master/#command-interface-cycle-%3Cname%3E-[%3Cvalue%3E])
[mute property](https://mpv.io/manual/master/#options-mute)
### Speed > -10%
Decreases the speed by 10% using the following command:
`multiply speed 1/1.1`
[multiply command](https://mpv.io/manual/master/#command-interface-multiply-%3Cname%3E-%3Cvalue%3E)
[speed property](https://mpv.io/manual/master/#options-speed)
### Speed > 10%
Increases the speed by 10% using the following command:
`multiply speed 1.1`
[multiply command](https://mpv.io/manual/master/#command-interface-multiply-%3Cname%3E-%3Cvalue%3E)
[speed property](https://mpv.io/manual/master/#options-speed)
### Speed > Half
Halfs the speed using the following command:
`multiply speed 0.5`
[multiply command](https://mpv.io/manual/master/#command-interface-multiply-%3Cname%3E-%3Cvalue%3E)
[speed property](https://mpv.io/manual/master/#options-speed)
### Speed > Double
Doubles the speed using the following command:
`multiply speed 2`
[multiply command](https://mpv.io/manual/master/#command-interface-multiply-%3Cname%3E-%3Cvalue%3E)
[speed property](https://mpv.io/manual/master/#options-speed)
### Speed > Reset
Resets the speed using the following command:
`set speed 1`
[set command](https://mpv.io/manual/master/#command-interface-set-%3Cname%3E-%3Cvalue%3E)
[speed property](https://mpv.io/manual/master/#options-speed)
### View > On Top > Enable
Forces the player to stay on top of other windows using the following command:
`set ontop yes`
[set command](https://mpv.io/manual/master/#command-interface-set-%3Cname%3E-%3Cvalue%3E)
[ontop property](https://mpv.io/manual/master/#options-ontop)
### View > On Top > Disable
Disables the player to stay on top of other windows using the following command:
`set ontop no`
[set command](https://mpv.io/manual/master/#command-interface-set-%3Cname%3E-%3Cvalue%3E)
[ontop property](https://mpv.io/manual/master/#options-ontop)
### View > File Info
Shows info using a mpv.net command about the current file, shows length, position, formats, size and filename.
### View > Show Statistics
Show statistics using the following command:
`script-binding stats/display-stats`
[script-binding command](https://mpv.io/manual/master/#command-interface-script-binding)
### View > Toggle Statistics
Toggles statistics using the following command:
`script-binding stats/display-stats-toggle`
[script-binding command](https://mpv.io/manual/master/#command-interface-script-binding)
### View > Toggle OSC Visibility
Toggles OSC Visibility using the following command:
`script-binding osc/visibility`
[script-binding command](https://mpv.io/manual/master/#command-interface-script-binding)
### Settings > Show Config Editor
Shows mpv.net's config editor.
### Settings > Show Input Editor
Shows mpv.net's key binding editor.
### Settings > Open Config Folder
Opens the config folder which contains:
mpv.conf file containing mpv settings
mpvnet.conf file containing mpv.net settings
input.conf containing mpv key and mouse bindings
User scripts and user extensions
### Tools > Set/clear A-B loop points
Enables to set loop start and end points using the following command:
`ab-loop`
[ab-loop command](https://mpv.io/manual/master/#command-interface-ab-loop)
### Tools > Toggle infinite file looping
Loops the current file infinitely using the following command:
`cycle-values loop-file "inf" "no"`
[cycle-values command](https://mpv.io/manual/master/#command-interface-cycle-values)
[loop-file command](https://mpv.io/manual/master/#options-loop)
### Tools > Toggle Hardware Decoding
Cycles the hwdec property to enable/disable hardware decoding using the following command:
`cycle-values hwdec "auto" "no"`
[cycle-values command](https://mpv.io/manual/master/#command-interface-cycle-values)
[hwdec property](https://mpv.io/manual/master/#options-hwdec)
### Tools > Setup
Allows to manage file associations.
### Help > Show mpv manual
Shows the [mpv manual](https://mpv.io/manual/stable/).
### Help > Show mpv.net web site
Shows the [mpv.net web site](https://github.com/mpvnet-player/mpv.net).
### Help > Show mpv.net manual
Shows the [mpv.net manual](https://github.com/mpvnet-player/mpv.net/blob/main/docs/manual.md).
### Help > About mpv.net
Shows the mpv.net about dialog which shows a copyright notice, the versions of mpv.net and libmpv and a license notice (GPL v2).
### Exit
Exits mpv.net using the following command:
`quit`
[quit command](https://mpv.io/manual/master/#command-interface-quit-[%3Ccode%3E])
### Exit Watch Later
Exits mpv.net and remembers the position in the file using the following command:
`quit-watch-later`
[quit-watch-later command](https://mpv.io/manual/master/#command-interface-quit-watch-later)

937
lang/po/bg.po Normal file
View File

@@ -0,0 +1,937 @@
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-25 10:31+0200\n"
"PO-Revision-Date: 2024-12-02 16:36+0200\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n"
"X-Generator: Poedit 3.4.4\n"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:12
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:13
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:14
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:15
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:16
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:17
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:18
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:19
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:20
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:21
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:22
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:23
msgid "File"
msgstr "Файл"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:12
msgid "Open Files..."
msgstr "Отвори файлове..."
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:13
msgid "Open URL or file from clipboard"
msgstr "Отвори URL или файл от клипборда"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:14
msgid "Open DVD/Blu-ray Drive/Folder..."
msgstr "Отвори DVD/Blu-ray устройство/папка..."
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:16
msgid "Add external audio files..."
msgstr "Добави външни аудиофайлове..."
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:17
msgid "Add external subtitle files..."
msgstr "Добави външни файлове със субтитри..."
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:19
msgid "Add files to playlist..."
msgstr "Добави файлове към плейлиста..."
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:20
msgid "Add files/URLs to playlist from clipboard"
msgstr "Добави файлове/URL адреси към плейлист от клипборда"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:22
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:370
msgid "Recent Files"
msgstr "Последни файлове"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:23
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:228
msgid "Exit"
msgstr "Изход"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:25
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26
msgid "Playback"
msgstr "Възпроизвеждане"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:25
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:200
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:201
msgid "Play/Pause"
msgstr "Възпроизведи/Пауза"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:202
msgid "Stop"
msgstr "Спри"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:28
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:29
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:30
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:31
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:32
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:34
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:35
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:36
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:37
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:38
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:39
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:40
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:41
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:42
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:43
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:44
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:45
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:46
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:47
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:48
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:49
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:50
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:51
msgid "Navigate"
msgstr "Навигиране"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:28
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:209
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:211
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:213
msgid "Previous File"
msgstr "Предишен файл"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:29
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:210
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:212
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:214
msgid "Next File"
msgstr "Следващ файл"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:31
msgid "First File"
msgstr "Първи файл"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:32
msgid "Last File"
msgstr "Последен файл"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:35
msgid "Next Chapter"
msgstr "Следваща глава"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:36
msgid "Previous Chapter"
msgstr "Предишна глава"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:38
msgid "Jump To Next Frame"
msgstr "Премини към следващия кадър"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:39
msgid "Jump To Previous Frame"
msgstr "Премини към предишния кадър"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:41
msgid "Jump 5 sec forward"
msgstr "Скок 5 секунди напред"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:42
msgid "Jump 5 sec backward"
msgstr "Скок 5 секунди назад"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:44
msgid "Jump 30 sec forward"
msgstr "Скок 30 секунди напред"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:45
msgid "Jump 30 sec backward"
msgstr "Скок 30 секунди назад"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:47
msgid "Jump 5 min forward"
msgstr "Скок 5 минути напред"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:48
msgid "Jump 5 min backward"
msgstr "Скок 5 минути назад"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:50
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:391
msgid "Title"
msgstr "Заглавие"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:51
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:349
msgid "Chapter"
msgstr "Глава"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:53
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:54
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:55
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:56
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:57
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:58
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:59
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:60
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:61
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:62
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:63
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:64
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:65
msgid "Pan & Scan"
msgstr "Панорама & Мащаб"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:53
msgid "Decrease Size"
msgstr "Намали размера"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:54
msgid "Increase Size"
msgstr "Увеличи размера"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:56
msgid "Move Left"
msgstr "Премести наляво"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:57
msgid "Move Right"
msgstr "Премести надясно"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:59
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:97
msgid "Move Up"
msgstr "Премести нагоре"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:60
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:98
msgid "Move Down"
msgstr "Премести надолу"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:62
msgid "Decrease Height"
msgstr "Намали височината"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:63
msgid "Increase Height"
msgstr "Увеличи височината"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:65
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:118
msgid "Reset"
msgstr "Нулиране"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:67
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:68
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:69
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:70
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:71
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:72
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:73
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:74
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:75
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:76
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:77
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:78
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:79
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:80
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:81
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:82
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:83
msgid "Video"
msgstr "Видео"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:67
msgid "Decrease Contrast"
msgstr "Намали контраст"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:68
msgid "Increase Contrast"
msgstr "Увеличи контраста"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:70
msgid "Decrease Brightness"
msgstr "Намали яркостта"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:71
msgid "Increase Brightness"
msgstr "Увеличи яркостта"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:73
msgid "Decrease Gamma"
msgstr "Намали гамата"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:74
msgid "Increase Gamma"
msgstr "Увеличи гамата"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:76
msgid "Decrease Saturation"
msgstr "Намали наситеността"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:77
msgid "Increase Saturation"
msgstr "Увеличи наситеността"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:79
msgid "Take Screenshot"
msgstr "Направи екранна снимка"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:80
msgid "Take Screenshot without subtitles"
msgstr "Направи екранна снимка без субтитри"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:81
msgid "Toggle Deinterlace"
msgstr "Превключи Deinterlace"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:82
msgid "Change Aspect Ratio"
msgstr "Промяна на пропорциите"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:83
msgid "Rotate Video"
msgstr "Завъртане на видео"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:85
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:86
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:87
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:88
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:89
msgid "Audio"
msgstr "Аудио"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:85
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:451
msgid "Audio Device"
msgstr "Аудио устройство"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:86
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:91
msgid "Next Track"
msgstr "Следващо заглавие"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:88
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:95
msgid "Delay +0.1"
msgstr "Закъснение +0,1"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:89
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:94
msgid "Delay -0.1"
msgstr "Закъснение -0.1"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:91
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:92
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:93
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:94
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:95
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:96
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:97
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:98
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:99
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:100
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:101
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:102
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103
msgid "Subtitle"
msgstr "Подзаглавие"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:92
msgid "Toggle Visibility"
msgstr "Превключи на видимост"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:100
msgid "Decrease Font Size"
msgstr "Намали размера на шрифта"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:101
msgid "Increase Font Size"
msgstr "Увеличи размера на шрифта"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "More"
msgstr "Още"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103
msgid "Toggle overriding SSA/ASS styles with normal styles"
msgstr "Превключи замяна на SSA/ASS стилове с нормални стилове"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:105
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:287
msgid "Track"
msgstr "Заглавие"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:107
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:108
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:109
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:110
msgid "Volume"
msgstr "Звук"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:107
msgctxt "Volume"
msgid "Up"
msgstr "Увеличи"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:108
msgctxt "Volume"
msgid "Down"
msgstr "Намали"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:110
msgid "Mute"
msgstr "Без звук"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:112
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:113
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:114
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:115
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:116
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:117
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:118
msgid "Speed"
msgstr "Скорост"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:112
msgid "-10%"
msgstr "-10%"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:113
msgid "+10%"
msgstr "+10%"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:115
msgid "Half"
msgstr "Наполовина"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:116
msgid "Double"
msgstr "Двойна"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:122
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:123
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:124
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:126
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "View"
msgstr "Преглед"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120
msgid "Toggle Statistics"
msgstr "Превключи на статистиката"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121
msgid "Toggle OSC Visibility"
msgstr "Превключи видимостта на OSC"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:122
msgid "Show Media Info On-Screen"
msgstr "Покажи медийна информация на екрана"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:123
msgid "Show Media Info Message Box"
msgstr "Покажи поле за съобщения с медийна информация"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:124
msgid "Show Progress"
msgstr "Покажи напредъка"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:126
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
msgid "On Screen Menu"
msgstr "Меню на екрана"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:126
msgid "Playlist"
msgstr "Плейлист"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
msgid "Bindings"
msgstr "Обвързвания"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
msgid "Properties"
msgstr "Свойства"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
msgid "Chapters"
msgstr "Глава"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
msgid "Tracks"
msgstr "Заглавие"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
msgid "Audio Tracks"
msgstr "Аудио заглавия"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
msgid "Subtitle Tracks"
msgstr "Субтитри заглавия"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
msgid "Secondary Subtitle"
msgstr "Втори субтитри"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
msgid "Video Tracks"
msgstr "Видео заглавия"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
msgid "Subtitle Lines"
msgstr "Редове на субтитри"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
msgid "Audio Devices"
msgstr "Аудио устройства"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
msgid "Show Console"
msgstr "Покажи конзола"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
msgid "Show Commands"
msgstr "Покажи команди"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
msgid "Show Bindings"
msgstr "Покажи обвързвания"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
msgid "Show Keys"
msgstr "Покажи ключове"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
msgid "Show Protocols"
msgstr "Покажи протоколи"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
msgid "Show Decoders"
msgstr "Покажи декодери"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "Show Demuxers"
msgstr "Покажи Demuxers"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:150
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:154
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
msgid "Window"
msgstr "Прозорец"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:216
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:217
msgid "Fullscreen"
msgstr "Цял екран"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:150
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
msgid "Zoom"
msgstr "Увеличение"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
msgid "Enlarge"
msgstr "Увеличи"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
msgid "Shrink"
msgstr "Свиване"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:150
msgid "50 %"
msgstr "50%"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
msgid "100 %"
msgstr "100%"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
msgid "200 %"
msgstr "200%"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
msgid "300 %"
msgstr "300%"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:154
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgid "Move"
msgstr "Премести"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:154
msgctxt "Move"
msgid "Left"
msgstr "Наляво"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
msgctxt "Move"
msgid "Right"
msgstr "Надясно"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
msgctxt "Move"
msgid "Up"
msgstr "Нагоре"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
msgctxt "Move"
msgid "Down"
msgstr "Надолу"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgctxt "Move"
msgid "Center"
msgstr "Център"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
msgid "Toggle Border"
msgstr "Превключи рамката"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
msgid "Toggle On Top"
msgstr "Превключи отгоре"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:424
msgid "Profile"
msgstr "Профил"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:166
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:168
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:169
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:175
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Settings"
msgstr "Настройки"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
msgid "Show Config Editor"
msgstr "Покажи редактор на конфигурация"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
msgid "Show Input Editor"
msgstr "Покажи редактора за въвеждане"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
msgid "Edit mpv.conf"
msgstr "Редактирай mpv.conf"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:168
msgid "Edit input.conf"
msgstr "Редактирай input.conf"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
msgid "Open Config Folder"
msgstr "Отвори папката Config"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:175
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Setup"
msgstr "Настройка"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:171
msgid "Register video file associations"
msgstr "Регистрирай асоциации на видео файлове"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
msgid "Register audio file associations"
msgstr "Регистрирай асоциации на аудио файлове"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
msgid "Register image file associations"
msgstr "Регистрирай асоциации на файлове с изображения"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:174
msgid "Unregister file associations"
msgstr "Отмени регистрацията на файловите асоциации"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
msgid "Add mpv.net to Path environment variable"
msgstr "Добави mpv.net към променливата на средата Path"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Remove mpv.net from Path environment variable"
msgstr "Премахни mpv.net от променливата на средата Path"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:180
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:183
msgid "Tools"
msgstr "Инструменти"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
msgid "Set/clear A-B loop points"
msgstr "Задай/изчисти AB точки на цикъл"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:180
msgid "Toggle infinite file looping"
msgstr "Превключи за безкраен цикъл на файла"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
msgid "Shuffle Playlist"
msgstr "Разбъркай плейлиста"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
msgid "Toggle Hardware Decoding"
msgstr "Превключи на хардуерно декодиране"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:183
msgid "Exit Watch Later"
msgstr "Изход Гледай по-късно"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:475
msgid "Custom"
msgstr "Потребителско"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:189
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:191
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:194
msgid "Help"
msgstr "Помощ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
msgid "Website mpv"
msgstr "Уеб сайт mpv"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Website mpv.net"
msgstr "Уебсайт mpv.net"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190
msgid "Manual mpv"
msgstr "Ръчно mpv"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:191
msgid "Manual mpv.net"
msgstr "Ръководство mpv.net"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
msgid "awesome-mpv"
msgstr "страхотен-mpv"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:194
msgid "About mpv.net"
msgstr "Относно mpv.net"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:197
msgid "Show Menu"
msgstr "Покажи меню"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:203
msgid "Forward"
msgstr "Напред"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:204
msgid "Backward"
msgstr "Назад"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:205
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:207
msgid "Volume Up"
msgstr "Увеличи звука"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:206
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:208
msgid "Volume Down"
msgstr "Намали звука"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:215
msgid "Ignore left mouse butten"
msgstr "Игнорирай левия бутон на мишката"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:218
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:220
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:226
msgid "Seek Forward"
msgstr "Търсене напред"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:219
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:221
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:227
msgid "Seek Backward"
msgstr "Търсене назад"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:222
msgid "Undo previous (or marked) seek"
msgstr "Отмени предишно (или маркирано) търсене"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:223
msgid "Mark position for revert-seek"
msgstr "Маркирай позиция за търсене назад"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:224
msgid "Seek to previous subtitle"
msgstr "Премини към предишния субтитър"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:225
msgid "Seek to next subtitle"
msgstr "Премини към следващия субтитър"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:193
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:213
msgid "Files/URLs were added to the playlist"
msgstr "Файловете/URL адресите бяха добавени към плейлиста"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:206
msgid "The clipboard does not contain a valid URL or file."
msgstr "Клипбордът не съдържа валиден URL или файл."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:257
msgid "File Explorer icons will refresh after process restart."
msgstr "Иконите на File Explorer ще се обновят след рестартиране на процеса."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:260
msgid "File associations were successfully removed."
msgstr "Файловите асоциации са премахнати успешно."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:262
msgid "File associations were successfully created."
msgstr "Файловите асоциации бяха създадени успешно."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:265
msgid "Error creating file associations."
msgstr "Грешка при създаване на файлови асоциации."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:362
msgid "mpv.net is already in the Path environment variable."
msgstr "mpv.net вече е в променливата на средата Path."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:370
msgid "mpv.net was successfully added to the Path environment variable."
msgstr "mpv.net бе успешно премахнат от променлива на средата Path."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:379
msgid "mpv.net was not found in the Path environment variable."
msgstr "mpv.net не бе намерен в променливата на средата Path."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:388
msgid "mpv.net was successfully removed from the Path environment variable."
msgstr "mpv.net бе успешно премахнат от променливата на средата Path."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:393
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:398
msgid "This feature was removed, but there are user scripts:"
msgstr "Тази функция беше премахната, но има потребителски скриптове:"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:402
msgid "This feature was removed."
msgstr "Тази функция бе премахната."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\Properties\Resources.Designer.cs:79
msgid "editor_conf"
msgstr "editor_conf"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\Properties\Resources.Designer.cs:114
msgid "theme"
msgstr "тема"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:386
msgid "Clear List"
msgstr "Изчисти списъка"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:446
msgid "Show Profiles"
msgstr "Покажи профили"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:1414
msgid "Shutdown thread failed to complete within 10 seconds."
msgstr "Изключването не успя да завърши в рамките на 10 секунди."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\InputWindow.xaml.cs:116
msgid "Changes will be available on next startup."
msgstr "Промените ще бъдат налични при следващото стартиране."

View File

@@ -6,15 +6,16 @@
# Translators:
# Frank Skare, 2024
# ERCAN KOÇAK, 2024
# Dogancan YILMAZER, 2024
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-07-25 10:31+0200\n"
"POT-Creation-Date: 2024-11-28 12:31+0200\n"
"PO-Revision-Date: 2023-12-08 00:34+0000\n"
"Last-Translator: ERCAN KOÇAK, 2024\n"
"Last-Translator: Dogancan YILMAZER, 2024\n"
"Language-Team: Turkish (https://app.transifex.com/stax76/teams/179964/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -79,7 +80,7 @@ msgstr "Çıkış"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:25
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26
msgid "Playback"
msgstr "Kayıttan yürütme"
msgstr "Kayıttan yürüt"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:25
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
@@ -164,7 +165,7 @@ msgstr "5 saniye ileri"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:42
msgid "Jump 5 sec backward"
msgstr "5 saniye geriye"
msgstr "5 saniye geri"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:44
msgid "Jump 30 sec forward"
@@ -214,25 +215,25 @@ msgstr "Boyutu Küçült"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:54
msgid "Increase Size"
msgstr "Boyutunu Büyüt"
msgstr "Boyutu Büyüt"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:56
msgid "Move Left"
msgstr "Sola Taşı"
msgstr "Sola Kaydır"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:57
msgid "Move Right"
msgstr "Sağa Taşı"
msgstr "Sağa Kaydır"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:59
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:97
msgid "Move Up"
msgstr "Yukarı Taşı"
msgstr "Yukarı Kaydır"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:60
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:98
msgid "Move Down"
msgstr "Aşağı Taşı"
msgstr "Aşağı Kaydır"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:62
msgid "Decrease Height"
@@ -281,7 +282,7 @@ msgstr "Parlaklığı Azalt"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:71
msgid "Increase Brightness"
msgstr "Parlaklığını Artır"
msgstr "Parlaklığı Artır"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:73
msgid "Decrease Gamma"
@@ -309,7 +310,7 @@ msgstr "Ekran görüntüsünü altyazısız al"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:81
msgid "Toggle Deinterlace"
msgstr "Taramasızlaştırmayı göster"
msgstr "Taramasızlaştırmayı Göster"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:82
msgid "Change Aspect Ratio"
@@ -365,7 +366,7 @@ msgstr "Altyazı"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:92
msgid "Toggle Visibility"
msgstr "Görünürlüğü Göster"
msgstr "Göster/Gizle"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:100
msgid "Decrease Font Size"
@@ -400,17 +401,17 @@ msgstr "Ses Parçası"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:109
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:110
msgid "Volume"
msgstr "Sayı"
msgstr "Ses"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:107
msgctxt "Volume"
msgid "Up"
msgstr "Yukarı"
msgstr "Arttır"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:108
msgctxt "Volume"
msgid "Down"
msgstr "Aşağı"
msgstr "Azalt"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:110
msgid "Mute"
@@ -436,11 +437,11 @@ msgstr "+10%"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:115
msgid "Half"
msgstr "Yarım"
msgstr "0.5x"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:116
msgid "Double"
msgstr "İkile"
msgstr "2x"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121
@@ -508,7 +509,7 @@ msgstr "Çalma listesi"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
msgid "Bindings"
msgstr "Bağlamalar"
msgstr "Atamalar"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
msgid "Properties"
@@ -556,7 +557,7 @@ msgstr "Komutları Göster"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
msgid "Show Bindings"
msgstr "Bağlamaları Göster"
msgstr "Atamaları Göster"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:141
msgid "Show Keys"
@@ -568,11 +569,11 @@ msgstr "Protokolleri Göster"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
msgid "Show Decoders"
msgstr "Kod Çözücüleri Göster"
msgstr "Decoderi Göster"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "Show Demuxers"
msgstr "Kod Çözücüleri Göster"
msgstr "Demuxeri Göster"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
@@ -663,7 +664,7 @@ msgstr "Aşağı"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgctxt "Move"
msgid "Center"
msgstr "Merkez"
msgstr "Ortala"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
msgid "Toggle Border"
@@ -697,11 +698,11 @@ msgstr "Ayarlar"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
msgid "Show Config Editor"
msgstr "Yapılandırma Düzenleyiciyi Göster"
msgstr "Yapılandırma Düzenleyicisini Göster"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
msgid "Show Input Editor"
msgstr "Giriş Düzenleyicisini Göster"
msgstr "Tuş Düzenleyicisini Göster"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
msgid "Edit mpv.conf"
@@ -795,23 +796,23 @@ msgstr "Yardım"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
msgid "Website mpv"
msgstr "İnternet sayfası mpv"
msgstr "Mpv internet sayfası"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Website mpv.net"
msgstr "İnternet sayfası mpv.net"
msgstr "Mpv.net internet sayfası"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190
msgid "Manual mpv"
msgstr "Manuel mpv"
msgstr "Mpv kullanım kılavuzu"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:191
msgid "Manual mpv.net"
msgstr "Manuel mpv.net"
msgstr "Mpv.net kullanım kılavuzu"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
msgid "awesome-mpv"
msgstr "müthiş-mpv"
msgstr "Mpv ek kaynakları"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:194
msgid "About mpv.net"
@@ -882,8 +883,7 @@ msgstr "Pano geçerli bir URL veya dosya içermiyor."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:257
msgid "File Explorer icons will refresh after process restart."
msgstr ""
"İşlem yeniden başlatıldıktan sonra Dosya Gezgini simgeleri yenilenecektir."
msgstr "Dosya Gezgini simgeleri, işlem yeniden başlatıldıktan sonra yenilenecektir."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:260
msgid "File associations were successfully removed."
@@ -899,11 +899,11 @@ msgstr "Dosya ilişkilendirmeleri oluşturulurken hata oluştu."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:362
msgid "mpv.net is already in the Path environment variable."
msgstr "mpv.net zaten Path ortam değişkeninde."
msgstr "Mpv.net zaten Path ortam değişkeninde."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:370
msgid "mpv.net was successfully added to the Path environment variable."
msgstr "mpv.net Path ortam değişkenine başarıyla eklendi."
msgstr "Mpv.net Path ortam değişkenine başarıyla eklendi."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:379
msgid "mpv.net was not found in the Path environment variable."
@@ -911,7 +911,7 @@ msgstr "Path ortam değişkeninde mpv.net bulunamadı."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:388
msgid "mpv.net was successfully removed from the Path environment variable."
msgstr "mpv.net Path ortam değişkeninden başarıyla kaldırıldı."
msgstr "Mpv.net Path ortam değişkeninden başarıyla kaldırıldı."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:393
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:398

View File

@@ -5,3 +5,6 @@ csharp_style_implicit_object_creation_when_type_is_apparent = true
# IDE0090: Use 'new(...)'
dotnet_diagnostic.IDE0090.severity = silent
# WFO1000: A property should determine its property content serialization with the DesignerSerializationVisibilityAttribute, DefaultValueAttribute or the ShouldSerializeProperty method
dotnet_diagnostic.WFO1000.severity = silent

View File

@@ -0,0 +1,6 @@
<Project>
<PropertyGroup>
<Product>mpv.net</Product>
<Nullable>enable</Nullable>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,10 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
</PropertyGroup>
<ItemGroup>
<PackageVersion Include="CommunityToolkit.Mvvm" Version="8.4.0" />
<PackageVersion Include="NGettext" Version="0.6.7" />
<PackageVersion Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.135" />
</ItemGroup>
</Project>

View File

@@ -101,8 +101,8 @@ public class ConfParser
}
else if (line.Contains('='))
{
string name = line[..line.IndexOf("=")].Trim();
string value = line[(line.IndexOf("=") + 1)..].Trim();
string name = line[..line.IndexOf('=')].Trim();
string value = line[(line.IndexOf('=') + 1)..].Trim();
currentGroup?.Items.Add(new StringPair(name, value));
}

View File

@@ -13,7 +13,7 @@ public static class FileAssociation
string exeFilename = Path.GetFileName(exePath);
string exeFilenameNoExt = Path.GetFileNameWithoutExtension(exePath);
string[] protocols = { "ytdl", "rtsp", "srt", "srtp" };
string[] protocols = ["ytdl", "rtsp", "srt", "srtp"];
if (perceivedType != "unreg")
{

View File

@@ -32,7 +32,6 @@ public class GuiCommand
{
["add-to-path"] = args => AddToPath(),
["edit-conf-file"] = EditCongFile,
["install-command-palette"] = args => InstallCommandPalette(),
["load-audio"] = LoadAudio,
["load-sub"] = LoadSubtitle,
["move-window"] = args => MoveWindow?.Invoke(args[0]),
@@ -56,8 +55,6 @@ public class GuiCommand
["show-profiles"] = args => Msg.ShowInfo(Player.GetProfiles()),
["show-properties"] = args => Player.Command("script-binding select/show-properties"),
["show-protocols"] = args => ShowProtocols(),
["show-recent-in-command-palette"] = args => ShowRecentFilesInCommandPalette(),
["stream-quality"] = args => StreamQuality(),
["window-scale"] = args => WindowScaleNet?.Invoke(float.Parse(args[0], CultureInfo.InvariantCulture)),
@@ -165,8 +162,7 @@ public class GuiCommand
}
string header = BR +
"https://mpv.io/manual/master/#list-of-input-commands" + BR2 +
"https://github.com/stax76/mpv-scripts#command_palette" + BR;
"https://mpv.io/manual/master/#list-of-input-commands" + BR;
ShowTextWithEditor("Input Commands", header + sb.ToString());
}
@@ -198,11 +194,13 @@ public class GuiCommand
else
{
string clipboard = System.Windows.Forms.Clipboard.GetText();
List<string> files = new List<string>();
List<string> files = [];
foreach (string i in clipboard.Split(BR.ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
{
if (i.Contains("://") || File.Exists(i))
files.Add(i);
}
if (files.Count == 0)
{
@@ -227,9 +225,13 @@ public class GuiCommand
dialog.Multiselect = true;
if (dialog.ShowDialog() == DialogResult.OK)
foreach (string i in dialog.FileNames)
Player.CommandV("audio-add", i);
if (dialog.ShowDialog() != DialogResult.OK)
return;
foreach (string i in dialog.FileNames)
{
Player.CommandV("audio-add", i);
}
}
void RegisterFileAssociations(IList<string> args)
@@ -270,68 +272,16 @@ public class GuiCommand
catch { }
}
void InstallCommandPalette()
{
if (Msg.ShowQuestion("Install command palette?") != MessageBoxResult.OK)
return;
try
{
Environment.SetEnvironmentVariable("MPVNET_HOME", Player.ConfigFolder);
using Process proc = new Process();
proc.StartInfo.FileName = "powershell";
proc.StartInfo.Arguments = "-executionpolicy bypass -nologo -noexit -noprofile -command \"irm https://raw.githubusercontent.com/stax76/mpv-scripts/refs/heads/main/powershell/command_palette_installer.ps1 | iex\"";
proc.Start();
}
catch
{
}
}
void StreamQuality()
{
int version = Player.GetPropertyInt("user-data/command-palette/version");
if (version >= 2)
Player.Command("script-message-to command_palette show-command-palette \"Stream Quality\"");
else
{
var r = Msg.ShowQuestion("The Stream Quality feature requires the command palette to be installed." + BR2 +
"Would you like to install the command palette now?");
if (r == MessageBoxResult.OK)
Player.Command("script-message-to mpvnet install-command-palette");
}
}
void ShowRecentFilesInCommandPalette()
{
Obj o = new();
o.title = "Recent Files";
o.selected_index = 0;
var items = new List<Item>();
foreach (string file in App.Settings.RecentFiles)
items.Add(new Item() { title = Path.GetFileName(file),
value = new string []{ "loadfile", file },
hint = file});
o.items = items.ToArray();
string json = JsonSerializer.Serialize(o);
Player.CommandV("script-message", "show-command-palette-json", json);
}
class Obj
{
public string title { get; set; } = "";
public int selected_index { get; set; } = 0;
public Item[] items { get; set; } = Array.Empty<Item>();
public Item[] items { get; set; } = [];
}
class Item
{
public string[] value { get; set; } = Array.Empty<string>();
public string[] value { get; set; } = [];
public string title { get; set; } = "";
public string hint { get; set; } = "";
}
@@ -393,15 +343,21 @@ public class GuiCommand
}
if (App.MediaInfo && !osd && File.Exists(path) && !path.Contains(@"\\.\pipe\"))
using (MediaInfo mediaInfo = new MediaInfo(path))
text = Regex.Replace(mediaInfo.GetSummary(full, raw), "Unique ID.+", "");
{
using MediaInfo mediaInfo = new MediaInfo(path);
text = Regex.Replace(mediaInfo.GetSummary(full, raw), "Unique ID.+", "");
}
else
{
Player.UpdateExternalTracks();
text = "N: " + Player.GetPropertyString("filename") + BR;
lock (Player.MediaTracksLock)
{
foreach (MediaTrack track in Player.MediaTracks)
{
text += track.Text + BR;
}
}
}
text = text.TrimEx();
@@ -426,7 +382,7 @@ public class GuiCommand
{
string path = Environment.GetEnvironmentVariable("Path", EnvironmentVariableTarget.User)!;
if (path.ToLower().Contains(Folder.Startup.TrimEnd(Path.DirectorySeparatorChar).ToLower()))
if (path.Contains(Folder.Startup.TrimEnd(Path.DirectorySeparatorChar), StringComparison.CurrentCultureIgnoreCase))
{
Msg.ShowWarning(_("mpv.net is already in the Path environment variable."));
return;

View File

@@ -1,49 +1,47 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<RootNamespace>MpvNet.Windows</RootNamespace>
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net9.0-windows</TargetFramework>
<RootNamespace>MpvNet.Windows</RootNamespace>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<PublishSingleFile>true</PublishSingleFile>
<AssemblyName>mpvnet</AssemblyName>
<UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms>
<ApplicationIcon>mpv-icon.ico</ApplicationIcon>
<Product>mpv.net</Product>
<FileVersion>7.1.1.3</FileVersion>
<AssemblyVersion>7.1.1.3</AssemblyVersion>
<InformationalVersion>7.1.1.3</InformationalVersion>
<Nullable>enable</Nullable>
</PropertyGroup>
<AssemblyName>mpvnet</AssemblyName>
<UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms>
<ApplicationIcon>mpv-icon.ico</ApplicationIcon>
<FileVersion>7.1.1.4</FileVersion>
<AssemblyVersion>7.1.1.4</AssemblyVersion>
<InformationalVersion>7.1.1.4</InformationalVersion>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Misc\**" />
<EmbeddedResource Remove="Misc\**" />
<None Remove="Misc\**" />
<Page Remove="Misc\**" />
</ItemGroup>
<ItemGroup>
<Compile Remove="Misc\**" />
<EmbeddedResource Remove="Misc\**" />
<None Remove="Misc\**" />
<Page Remove="Misc\**" />
</ItemGroup>
<ItemGroup>
<Content Include="mpv-icon.ico" />
</ItemGroup>
<ItemGroup>
<Content Include="mpv-icon.ico" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MpvNet\MpvNet.csproj" />
<ProjectReference Include="..\NGettext.Wpf\NGettext.Wpf.csproj" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\MpvNet\MpvNet.csproj" />
<ProjectReference Include="..\NGettext.Wpf\NGettext.Wpf.csproj" />
</ItemGroup>
<ItemGroup>
<Page Update="WPF\Views\AboutWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<XamlRuntime>Wpf</XamlRuntime>
<SubType>Designer</SubType>
</Page>
</ItemGroup>
<ItemGroup>
<Page Update="WPF\Views\AboutWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<XamlRuntime>Wpf</XamlRuntime>
<SubType>Designer</SubType>
</Page>
</ItemGroup>
<ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.77" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" />
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" />
</ItemGroup>
</Project>

View File

@@ -1117,7 +1117,7 @@ option = no
name = reset-on-next-file
file = mpv
directory = Program Behavior
help = Normally, mpv will try to keep all settings when playing the next file on the playlist, even if they were changed by the user during playback. This can be changed with this option. It accepts a list of options, and mpv will reset the value of these options on playback start to the initial value.
help = Normally, mpv will try to keep all options when playing the next file on the playlist, even if they were changed by the user during playback. This can be changed with this option. It accepts a list of options, and mpv will reset the value of these options on playback start to the initial value.
width = 400
name = input-ar-delay
@@ -1142,8 +1142,9 @@ directory = Appearance
help = User interface display language.\nmpv.net must be restarted after a change.
default = system
option = system
option = english
option = bulgarian
option = chinese-china
option = english
option = french
option = german
option = japanese

View File

@@ -10,8 +10,9 @@ public class WpfTranslator : ITranslator
string _localizerLangauge = "";
static Language[] Languages { get; } = new Language[] {
new("english", "en", "en"),
new("bulgarian", "bg", "bg"),
new("chinese-china", "zh-CN", "zh"), // Chinese (Simplified)
new("english", "en", "en"),
new("french", "fr", "fr"),
new("german", "de", "de"),
new("japanese", "ja", "ja"),

View File

@@ -13,6 +13,7 @@ EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{2F97C77E-32E3-46FA-8D7C-3940FD9AA384}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
Directory.Build.props = Directory.Build.props
EndProjectSection
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NGettext.Wpf", "NGettext.Wpf\NGettext.Wpf.csproj", "{0B7958FD-2138-482A-A21B-481AE7A0F851}"

View File

@@ -19,7 +19,7 @@ public class Chapter
_timeDisplay = TimeSpan.FromSeconds(Time).ToString();
if (_timeDisplay.ContainsEx("."))
_timeDisplay = _timeDisplay[.._timeDisplay.LastIndexOf(".")];
_timeDisplay = _timeDisplay[.._timeDisplay.LastIndexOf('.')];
}
return _timeDisplay;

View File

@@ -42,7 +42,7 @@ public class Command
{
if (i.Contains("://") || File.Exists(i))
{
Player.LoadFiles(new[] { i }, true, false);
Player.LoadFiles([i], true, false);
break;
}
}

View File

@@ -6,9 +6,9 @@ public class CommandLine
static List<StringPair>? _arguments;
static string[] _preInitProperties { get; } = {
"input-terminal", "terminal", "input-file", "config", "o",
"config-dir", "input-conf", "load-scripts", "scripts", "player-operation-mode",
"idle", "log-file", "msg-color", "dump-stats", "msg-level", "really-quiet" };
"input-terminal", "terminal", "input-file", "config", "o", "config-dir", "input-conf",
"load-scripts", "scripts", "script-opts", "player-operation-mode", "idle", "log-file",
"msg-color", "dump-stats", "msg-level", "really-quiet" };
public static List<StringPair> Arguments
{
@@ -17,7 +17,7 @@ public class CommandLine
if (_arguments != null)
return _arguments;
_arguments = new();
_arguments = [];
foreach (string i in Environment.GetCommandLineArgs().Skip(1))
{
@@ -37,7 +37,7 @@ public class CommandLine
arg += "=yes";
}
string left = arg[2..arg.IndexOf("=")];
string left = arg[2..arg.IndexOf('=')];
string right = arg[(left.Length + 3)..];
if (string.IsNullOrEmpty(left))
@@ -46,6 +46,7 @@ public class CommandLine
switch (left)
{
case "script": left = "scripts"; break;
case "script-opt": left = "script-opts"; break;
case "audio-file": left = "audio-files"; break;
case "sub-file": left = "sub-files"; break;
case "external-file": left = "external-files"; break;
@@ -113,16 +114,19 @@ public class CommandLine
public static void ProcessCommandLineFiles()
{
List<string> files = new List<string>();
List<string> files = [];
foreach (string arg in Environment.GetCommandLineArgs().Skip(1))
{
if (!arg.StartsWith("--") && (arg == "-" || arg.Contains("://") ||
arg.Contains(":\\") || arg.StartsWith("\\\\") || arg.StartsWith(".") ||
arg.Contains(":\\") || arg.StartsWith("\\\\") || arg.StartsWith('.') ||
File.Exists(arg)))
{
files.Add(arg);
}
}
Player.LoadFiles(files.ToArray(), !App.Queue, App.Queue);
Player.LoadFiles([.. files], !App.Queue, App.Queue);
if (App.CommandLine.Contains("--shuffle"))
{
@@ -134,8 +138,10 @@ public class CommandLine
public static bool Contains(string name)
{
foreach (StringPair pair in Arguments)
{
if (pair.Name == name)
return true;
}
return false;
}
@@ -143,8 +149,10 @@ public class CommandLine
public static string GetValue(string name)
{
foreach (StringPair pair in Arguments)
{
if (pair.Name == name)
return pair.Value;
}
return "";
}

View File

@@ -9,7 +9,7 @@ public class ExtensionLoader
{
public event Action<Exception>? UnhandledException;
readonly List<object?> _refs = new();
readonly List<object?> _refs = [];
void LoadDll(string path)
{
@@ -31,8 +31,12 @@ public class ExtensionLoader
public void LoadFolder(string path)
{
if (Directory.Exists(path))
{
foreach (string dir in Directory.GetDirectories(path))
{
LoadDll(dir.AddSep() + Path.GetFileName(dir) + ".dll");
}
}
}
}

View File

@@ -32,12 +32,12 @@ public static class PathStringExtension
int index = instance.LastIndexOf('\\');
if (index > -1)
return instance.Substring(index + 1);
return instance[(index + 1)..];
index = instance.LastIndexOf('/');
if (index > -1)
return instance.Substring(index + 1);
return instance[(index + 1)..];
return instance;
}

View File

@@ -5,7 +5,7 @@ namespace MpvNet;
public static class FileTypes
{
public static string[] Subtitle { get; } = { "srt", "ass", "idx", "sub", "sup", "ttxt", "txt", "ssa", "smi", "mks" };
public static string[] Subtitle { get; } = ["srt", "ass", "idx", "sub", "sup", "ttxt", "txt", "ssa", "smi", "mks"];
public static bool IsVideo(string[] exts, string ext) => exts?.Contains(ext) ?? false;
public static bool IsAudio(string[] exts, string ext) => exts?.Contains(ext) ?? false;
@@ -20,7 +20,7 @@ public static class FileTypes
string exts = Player.GetPropertyString("video-exts");
if (string.IsNullOrEmpty(exts))
return "mkv mp4 avi mov flv mpg webm wmv ts vob 264 265 asf avc avs dav h264 h265 hevc m2t m2ts m2v m4v mpeg mpv mts vpy y4m".Split(' ');
return ["mkv", "mp4", "avi", "mov", "flv", "mpg", "webm", "wmv", "ts", "vob", "264", "265", "asf", "avc", "avs", "dav", "h264", "h265", "hevc", "m2t", "m2ts", "m2v", "m4v", "mpeg", "mpv", "mts", "vpy", "y4m"];
return exts.Split(" ,;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
}
@@ -30,7 +30,7 @@ public static class FileTypes
string exts = Player.GetPropertyString("audio-exts");
if (string.IsNullOrEmpty(exts))
return "mp3 flac m4a mka mp2 ogg opus aac ac3 dts dtshd dtshr dtsma eac3 mpa mpc thd w64 wav".Split(' ');
return ["mp3", "flac", "m4a", "mka", "mp2", "ogg", "opus", "aac", "ac3", "dts", "dtshd", "dtshr", "dtsma", "eac3", "mpa", "mpc", "thd", "w64", "wav"];
return exts.Split(" ,;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
}
@@ -40,7 +40,7 @@ public static class FileTypes
string exts = Player.GetPropertyString("image-exts");
if (string.IsNullOrEmpty(exts))
return new string[]{ "jpg", "bmp", "png", "gif", "webp" };
return ["jpg", "bmp", "png", "gif", "webp"];
return exts.Split(" ,;".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
}

View File

@@ -8,9 +8,7 @@ public static class StringHelp
{
public static string GetMD5Hash(string txt)
{
using MD5 md5 = MD5.Create();
byte[] inputBuffer = Encoding.UTF8.GetBytes(txt);
byte[] hashBuffer = md5.ComputeHash(inputBuffer);
return BitConverter.ToString(md5.ComputeHash(inputBuffer)).Replace("-", "");
return Convert.ToHexString(MD5.HashData(inputBuffer));
}
}

View File

@@ -34,17 +34,25 @@ public class InputConf
var defaultBindings = InputHelp.GetDefaults();
foreach (Binding defaultBinding in defaultBindings)
{
foreach (Binding confBinding in confbindings)
{
if (defaultBinding.Input == confBinding.Input &&
defaultBinding.Command != confBinding.Command)
{
defaultBinding.Input = "";
}
}
}
foreach (Binding defaultBinding in defaultBindings)
{
foreach (Binding confBinding in confbindings)
{
if (defaultBinding.Command == confBinding.Command)
defaultBinding.Input = confBinding.Input;
}
}
return (defaultBindings, confbindings);
}
@@ -82,16 +90,22 @@ public class InputConf
var conf = InputHelp.Parse(Content);
foreach (Binding defaultBinding in defaults)
{
foreach (Binding confBinding in conf)
{
if (defaultBinding.Command == confBinding.Command &&
defaultBinding.Comment == confBinding.Comment)
{
defaultBinding.Input = confBinding.Input;
removed.Add(confBinding);
}
}
}
foreach (Binding binding in removed)
{
conf.Remove(binding);
}
defaults.AddRange(conf);
return InputHelp.ConvertToString(defaults);

View File

@@ -9,12 +9,30 @@ public static class InputHelp
{
List<Binding> b = new();
Add(b, new("", "", "script-binding select/select-playlist", "g-p", _("Playlist")));
Add(b, new("", "", "script-binding select/select-sid", "g-s", _("Subtitles")));
Add(b, new("", "", "script-binding select/select-secondary-sid", "g-S", _("Secondary Subtitles")));
Add(b, new("", "", "script-binding select/select-aid", "g-a", _("Audio Tracks")));
Add(b, new("", "", "script-binding select/select-vid", "g-v", _("Video Tracks")));
Add(b, new("", "", "script-binding select/select-track", "g-t", _("Tracks")));
Add(b, new("", "", "script-binding select/select-chapter", "g-c", _("Chapters")));
Add(b, new("", "", "script-binding select/select-edition", "g-e", _("Editions")));
Add(b, new("", "", "script-binding select/select-subtitle-line", "g-l", _("Subtitle Lines")));
Add(b, new("", "", "script-binding select/select-audio-device", "g-d", _("Audio Devices")));
Add(b, new("", "", "script-binding select/select-watch-history", "g-h", _("Watch History")));
Add(b, new("", "", "script-binding select/select-watch-later", "g-w", _("Watch Later")));
Add(b, new("", "", "script-binding select/select-binding", "g-b", _("Bindings")));
Add(b, new("", "", "script-binding select/show-properties", "g-r", _("Properties")));
Add(b, new("", "", "script-binding select/menu", "g-m", _("Select Menu")));
Add(b, new("", "", "script-binding select/menu", "MENU", _("Select Menu")));
Add(b, new("", "", "script-binding select/menu", "Ctrl+p", _("Select Menu")));
Add(b, new (_("File"), _("Open Files..."), "script-message-to mpvnet open-files", "o"));
Add(b, new (_("File"), _("Open URL or file from clipboard"), "script-message-to mpvnet open-clipboard", "Ctrl+v"));
Add(b, new (_("File"), _("Open DVD/Blu-ray Drive/Folder..."), "script-message-to mpvnet open-optical-media"));
Add(b, new (_("File"), "-"));
Add(b, new (_("File"), _("Add external audio files..."), "script-message-to mpvnet load-audio", "Alt+a"));
Add(b, new (_("File"), _("Add external subtitle files..."), "script-message-to mpvnet load-sub", "Alt+s"));
Add(b, new (_("File"), _("Add external audio files..."), "script-message-to mpvnet load-audio"));
Add(b, new (_("File"), _("Add external subtitle files..."), "script-message-to mpvnet load-sub"));
Add(b, new (_("File"), "-"));
Add(b, new (_("File"), _("Add files to playlist..."), "script-message-to mpvnet open-files append"));
Add(b, new (_("File"), _("Add files/URLs to playlist from clipboard"), "script-message-to mpvnet open-clipboard append", "Ctrl+Shift+v"));
@@ -81,7 +99,7 @@ public static class InputHelp
Add(b, new (_("Video"), _("Toggle Deinterlace"), "cycle deinterlace", "d"));
Add(b, new (_("Video"), _("Change Aspect Ratio"), "cycle-values video-aspect-override 16:9 4:3 2.35:1 0 -1", "a"));
Add(b, new (_("Video"), _("Rotate Video"), "cycle-values video-rotate 90 180 270 0", "Ctrl+r"));
Add(b, new (_("Video"), _("Stream Quality"), "script-message-to mpvnet stream-quality", "Alt+q"));
Add(b, new (_("Video"), _("Stream Quality"), "script-message-to mpvnet stream-quality"));
Add(b, new (_("Audio"), _("Audio Device")));
Add(b, new (_("Audio"), _("Next Track"), "script-message-to mpvnet cycle-audio", "KP7"));
@@ -118,49 +136,30 @@ public static class InputHelp
Add(b, new (_("Speed"), "-"));
Add(b, new (_("Speed"), _("Reset"), "set speed 1", "BS"));
Add(b, new (_("View"), _("Playlist"), "script-binding select/select-playlist", "F8"));
Add(b, new (_("View"), _("Toggle Statistics"), "script-binding stats/display-stats-toggle", "t"));
Add(b, new (_("View"), _("Toggle OSC Visibility"), "script-binding osc/visibility", "Del"));
Add(b, new (_("View"), _("Show Media Info On-Screen"), "script-message-to mpvnet show-media-info osd", "i"));
Add(b, new (_("View"), _("Show Media Info Message Box"), "script-message-to mpvnet show-media-info msgbox", "Ctrl+m"));
Add(b, new (_("View"), _("Show Progress"), "show-progress", "p"));
Add(b, new (_("View") + " > " + _("On Screen Menu"), _("Playlist"), "script-binding select/select-playlist", "F8"));
Add(b, new (_("View") + " > " + _("On Screen Menu"), _("Bindings"), "script-binding select/select-binding", "F1"));
Add(b, new (_("View") + " > " + _("On Screen Menu"), _("Properties"), "script-binding select/show-properties", "F3"));
Add(b, new (_("View") + " > " + _("On Screen Menu"), _("Chapters"), "script-binding select/select-chapter", "Alt+c"));
Add(b, new (_("View") + " > " + _("On Screen Menu"), _("Tracks"), "script-binding select/select-track", "F9"));
Add(b, new (_("View") + " > " + _("On Screen Menu"), _("Audio Tracks"), "script-binding select/select-aid"));
Add(b, new (_("View") + " > " + _("On Screen Menu"), _("Subtitle Tracks"), "script-binding select/select-sid"));
Add(b, new (_("View") + " > " + _("On Screen Menu"), _("Secondary Subtitle"), "script-binding select/select-secondary-sid", "Alt+b"));
Add(b, new (_("View") + " > " + _("On Screen Menu"), _("Video Tracks"), "script-binding select/select-vid", "Alt+v"));
Add(b, new (_("View") + " > " + _("On Screen Menu"), _("Subtitle Lines"), "script-binding select/select-subtitle-line", "Alt+l"));
Add(b, new (_("View") + " > " + _("On Screen Menu"), _("Audio Devices"), "script-binding select/select-audio-device", "Alt+d"));
if (File.Exists(Player.ConfigFolder + "/scripts/command_palette.lua"))
{
Add(b, new(_("View") + " > " + _("Command Palette"), _("Command Palette"), "script-message-to command_palette show-command-palette \"Command Palette\"", "Ctrl+p"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Bindings"), "script-message-to command_palette show-command-palette \"Bindings\"", "F1"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Properties"), "script-message-to command_palette show-command-palette \"Properties\"", "F2"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Commands"), "script-message-to command_palette show-command-palette \"Commands\"", "F3"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Options"), "script-message-to command_palette show-command-palette \"Options\"", "F4"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Playlist"), "script-message-to command_palette show-command-palette \"Playlist\"", "F8"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Tracks"), "script-message-to command_palette show-command-palette \"Tracks\"", "F9"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Audio Tracks"), "script-message-to command_palette show-command-palette \"Audio Tracks\"", "Alt+a"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Subtitle Tracks"), "script-message-to command_palette show-command-palette \"Subtitle Tracks\"", "Alt+s"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Secondary Subtitle"), "script-message-to command_palette show-command-palette \"Secondary Subtitle\"", "Alt+b"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Video Tracks"), "script-message-to command_palette show-command-palette \"Video Tracks\"", "Alt+v"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Chapters"), "script-message-to command_palette show-command-palette \"Chapters\"", "Alt+c"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Profiles"), "script-message-to command_palette show-command-palette \"Profiles\"", "Alt+p"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Audio Devices"), "script-message-to command_palette show-command-palette \"Audio Devices\"", "Alt+d"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Subtitle Line"), "script-message-to command_palette show-command-palette \"Subtitle Line\"", "Alt+l"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Blu-ray Titles"), "script-message-to command_palette show-command-palette \"Blu-ray Titles\"", "Alt+t"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Stream Quality"), "script-message-to command_palette show-command-palette \"Stream Quality\"", "Alt+q"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Aspect Ratio"), "script-message-to command_palette show-command-palette \"Aspect Ratio\"", "Alt+r"));
Add(b, new(_("View") + " > " + _("Command Palette"), _("Recent Files"), "script-message-to mpvnet show-recent-in-command-palette", "Alt+f"));
}
Add(b, new (_("View"), _("Media Info On-Screen"), "script-message-to mpvnet show-media-info osd", "i"));
Add(b, new (_("View"), _("Media Info Message Box"), "script-message-to mpvnet show-media-info msgbox", "Ctrl+m"));
Add(b, new (_("View"), _("Progress"), "show-progress", "p"));
Add(b, new (_("View") + " > " + _("Select Menu"), _("Playlist"), "script-binding select/select-playlist", "F8"));
Add(b, new (_("View") + " > " + _("Select Menu"), _("Bindings"), "script-binding select/select-binding", "F1"));
Add(b, new (_("View") + " > " + _("Select Menu"), _("Properties"), "script-binding select/show-properties", "F2"));
Add(b, new (_("View") + " > " + _("Select Menu"), _("Chapters"), "script-binding select/select-chapter", "Alt+c"));
Add(b, new (_("View") + " > " + _("Select Menu"), _("Tracks"), "script-binding select/select-track", "F9"));
Add(b, new (_("View") + " > " + _("Select Menu"), _("Audio Tracks"), "script-binding select/select-aid", "Alt+a"));
Add(b, new (_("View") + " > " + _("Select Menu"), _("Subtitle Tracks"), "script-binding select/select-sid", "Alt+s"));
Add(b, new (_("View") + " > " + _("Select Menu"), _("Secondary Subtitle"), "script-binding select/select-secondary-sid", "Alt+b"));
Add(b, new (_("View") + " > " + _("Select Menu"), _("Video Tracks"), "script-binding select/select-vid", "Alt+v"));
Add(b, new (_("View") + " > " + _("Select Menu"), _("Editions"), "script-binding select/select-edition", "Alt+e"));
Add(b, new (_("View") + " > " + _("Select Menu"), _("Subtitle Lines"), "script-binding select/select-subtitle-line", "Alt+l"));
Add(b, new (_("View") + " > " + _("Select Menu"), _("Audio Devices"), "script-binding select/select-audio-device", "Alt+d"));
Add(b, new (_("View") + " > " + _("Select Menu"), _("Watch History"), "script-binding select/select-watch-history", "Alt+h"));
Add(b, new (_("View") + " > " + _("Select Menu"), _("Watch Later"), "script-binding select/select-watch-later"));
Add(b, new (_("View"), "-"));
Add(b, new (_("View") + " > " + _("More"), _("Show Console"), "script-binding console/enable", "`"));
Add(b, new (_("View") + " > " + _("More"), _("Show Commands"), "script-message-to mpvnet show-commands", "F2"));
Add(b, new (_("View") + " > " + _("More"), _("Show Commands"), "script-message-to mpvnet show-commands", "F3"));
Add(b, new (_("View") + " > " + _("More"), _("Show Bindings"), "script-message-to mpvnet show-bindings"));
Add(b, new (_("View") + " > " + _("More"), _("Show Keys"), "script-message-to mpvnet show-keys", "Alt+k"));
Add(b, new (_("View") + " > " + _("More"), _("Show Protocols"), "script-message-to mpvnet show-protocols", "Alt+p"));
@@ -185,22 +184,20 @@ public static class InputHelp
Add(b, new ("", _("Profile")));
Add(b, new (_("Settings"), _("Show Config Editor"), "script-message-to mpvnet show-conf-editor", "Ctrl+,"));
Add(b, new (_("Settings"), _("Show Input Editor"), "script-message-to mpvnet show-input-editor", "Ctrl+i"));
Add(b, new (_("Settings"), "-"));
Add(b, new (_("Settings"), _("Edit mpv.conf"), "script-message-to mpvnet edit-conf-file mpv.conf", "c"));
Add(b, new (_("Settings"), _("Edit input.conf"), "script-message-to mpvnet edit-conf-file input.conf", "k"));
Add(b, new (_("Settings"), "-"));
Add(b, new (_("Settings"), _("Open Config Folder"), "script-message-to mpvnet open-conf-folder", "Ctrl+f"));
Add(b, new (_("Settings") + " > " + _("Setup"), _("Register video file associations"), "script-message-to mpvnet reg-file-assoc video"));
Add(b, new (_("Settings") + " > " + _("Setup"), _("Register audio file associations"), "script-message-to mpvnet reg-file-assoc audio"));
Add(b, new (_("Settings") + " > " + _("Setup"), _("Register image file associations"), "script-message-to mpvnet reg-file-assoc image"));
Add(b, new (_("Settings") + " > " + _("Setup"), _("Unregister file associations"), "script-message-to mpvnet reg-file-assoc unreg"));
Add(b, new (_("Settings") + " > " + _("Setup"), "-"));
Add(b, new (_("Settings") + " > " + _("Setup"), _("Add mpv.net to Path environment variable"), "script-message-to mpvnet add-to-path"));
Add(b, new (_("Settings") + " > " + _("Setup"), _("Remove mpv.net from Path environment variable"), "script-message-to mpvnet remove-from-path"));
Add(b, new (_("Settings") + " > " + _("Setup"), "-"));
Add(b, new (_("Settings") + " > " + _("Setup"), _("Install Command Palette"), "script-message-to mpvnet install-command-palette"));
Add(b, new (_("Config"), _("Show Config Editor"), "script-message-to mpvnet show-conf-editor", "Ctrl+,"));
Add(b, new (_("Config"), _("Show Input Editor"), "script-message-to mpvnet show-input-editor", "Ctrl+i"));
Add(b, new (_("Config"), "-"));
Add(b, new (_("Config"), _("Edit mpv.conf"), "script-message-to mpvnet edit-conf-file mpv.conf", "c"));
Add(b, new (_("Config"), _("Edit input.conf"), "script-message-to mpvnet edit-conf-file input.conf", "k"));
Add(b, new (_("Config"), "-"));
Add(b, new (_("Config"), _("Open Config Folder"), "script-message-to mpvnet open-conf-folder", "Ctrl+f"));
Add(b, new (_("Config") + " > " + _("Setup"), _("Register video file associations"), "script-message-to mpvnet reg-file-assoc video"));
Add(b, new (_("Config") + " > " + _("Setup"), _("Register audio file associations"), "script-message-to mpvnet reg-file-assoc audio"));
Add(b, new (_("Config") + " > " + _("Setup"), _("Register image file associations"), "script-message-to mpvnet reg-file-assoc image"));
Add(b, new (_("Config") + " > " + _("Setup"), _("Unregister file associations"), "script-message-to mpvnet reg-file-assoc unreg"));
Add(b, new (_("Config") + " > " + _("Setup"), "-"));
Add(b, new (_("Config") + " > " + _("Setup"), _("Add mpv.net to Path environment variable"), "script-message-to mpvnet add-to-path"));
Add(b, new (_("Config") + " > " + _("Setup"), _("Remove mpv.net from Path environment variable"), "script-message-to mpvnet remove-from-path"));
Add(b, new (_("Tools"), _("Set/clear A-B loop points"), "ab-loop", "l"));
Add(b, new (_("Tools"), _("Toggle infinite file looping"), "cycle-values loop-file inf no", "L"));

View File

@@ -1,13 +1,4 @@

using CommunityToolkit.Mvvm.Messaging.Messages;
namespace MpvNet.MVVM;
public class MainWindowIsLoadedMessage { }
//public class ScaleWindowMessage : ValueChangedMessage<float>
//{
// public ScaleWindowMessage(float value) : base(value)
// {
// }
//}

View File

@@ -21,11 +21,11 @@ public class MpvClient
public event Action? Seek; // seek MPV_EVENT_SEEK
public event Action? PlaybackRestart; // playback-restart MPV_EVENT_PLAYBACK_RESTART
public Dictionary<string, List<Action>> PropChangeActions { get; set; } = new Dictionary<string, List<Action>>();
public Dictionary<string, List<Action<int>>> IntPropChangeActions { get; set; } = new Dictionary<string, List<Action<int>>>();
public Dictionary<string, List<Action<bool>>> BoolPropChangeActions { get; set; } = new Dictionary<string, List<Action<bool>>>();
public Dictionary<string, List<Action<double>>> DoublePropChangeActions { get; set; } = new Dictionary<string, List<Action<double>>>();
public Dictionary<string, List<Action<string>>> StringPropChangeActions { get; set; } = new Dictionary<string, List<Action<string>>>();
public Dictionary<string, List<Action>> PropChangeActions { get; set; } = [];
public Dictionary<string, List<Action<int>>> IntPropChangeActions { get; set; } = [];
public Dictionary<string, List<Action<bool>>> BoolPropChangeActions { get; set; } = [];
public Dictionary<string, List<Action<double>>> DoublePropChangeActions { get; set; } = [];
public Dictionary<string, List<Action<string>>> StringPropChangeActions { get; set; } = [];
public nint Handle { get; set; }
@@ -132,46 +132,72 @@ public class MpvClient
else if (data.format == mpv_format.MPV_FORMAT_STRING)
{
lock (StringPropChangeActions)
{
foreach (var pair in StringPropChangeActions)
{
if (pair.Key == data.name)
{
string value = ConvertFromUtf8(Marshal.PtrToStructure<IntPtr>(data.data));
foreach (var action in pair.Value)
{
action.Invoke(value);
}
}
}
}
}
else if (data.format == mpv_format.MPV_FORMAT_INT64)
{
lock (IntPropChangeActions)
{
foreach (var pair in IntPropChangeActions)
{
if (pair.Key == data.name)
{
int value = Marshal.PtrToStructure<int>(data.data);
foreach (var action in pair.Value)
{
action.Invoke(value);
}
}
}
}
}
else if (data.format == mpv_format.MPV_FORMAT_NONE)
{
lock (PropChangeActions)
{
foreach (var pair in PropChangeActions)
{
if (pair.Key == data.name)
{
foreach (var action in pair.Value)
{
action.Invoke();
}
}
}
}
}
else if (data.format == mpv_format.MPV_FORMAT_DOUBLE)
{
lock (DoublePropChangeActions)
{
foreach (var pair in DoublePropChangeActions)
{
if (pair.Key == data.name)
{
double value = Marshal.PtrToStructure<double>(data.data);
foreach (var action in pair.Value)
{
action.Invoke(value);
}
}
}
}
}
}
@@ -247,7 +273,9 @@ public class MpvClient
mpv_error err = mpv_command_ret(Handle, rootPtr, resultNodePtr);
foreach (IntPtr ptr in pointers)
{
Marshal.FreeHGlobal(ptr);
}
Marshal.FreeHGlobal(rootPtr);
@@ -409,7 +437,7 @@ public class MpvClient
if (err < 0)
HandleError(err, "error observing property: " + name);
else
IntPropChangeActions[name] = new List<Action<int>>();
IntPropChangeActions[name] = [];
}
if (IntPropChangeActions.ContainsKey(name))
@@ -428,7 +456,7 @@ public class MpvClient
if (err < 0)
HandleError(err, "error observing property: " + name);
else
DoublePropChangeActions[name] = new List<Action<double>>();
DoublePropChangeActions[name] = [];
}
if (DoublePropChangeActions.ContainsKey(name))
@@ -447,7 +475,7 @@ public class MpvClient
if (err < 0)
HandleError(err, "error observing property: " + name);
else
BoolPropChangeActions[name] = new List<Action<bool>>();
BoolPropChangeActions[name] = [];
}
if (BoolPropChangeActions.ContainsKey(name))
@@ -466,7 +494,7 @@ public class MpvClient
if (err < 0)
HandleError(err, "error observing property: " + name);
else
StringPropChangeActions[name] = new List<Action<string>>();
StringPropChangeActions[name] = [];
}
if (StringPropChangeActions.ContainsKey(name))
@@ -485,7 +513,7 @@ public class MpvClient
if (err < 0)
HandleError(err, "error observing property: " + name);
else
PropChangeActions[name] = new List<Action>();
PropChangeActions[name] = [];
}
if (PropChangeActions.ContainsKey(name))

View File

@@ -1,27 +1,25 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<AssemblyName>libmpvnet</AssemblyName>
<Product>mpv.net</Product>
<Nullable>enable</Nullable>
<RootNamespace>MpvNet</RootNamespace>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
</PropertyGroup>
</PropertyGroup>
<ItemGroup>
<None Include="..\..\docs\changelog.md" Link="Docs\changelog.md" />
<None Include="..\..\docs\manual.md" Link="Docs\manual.md" />
<None Include="..\..\README.md" Link="Docs\README.md" />
</ItemGroup>
<ItemGroup>
<None Include="..\..\docs\changelog.md" Link="Docs\changelog.md" />
<None Include="..\..\docs\manual.md" Link="Docs\manual.md" />
<None Include="..\..\README.md" Link="Docs\README.md" />
</ItemGroup>
<ItemGroup>
<Folder Include="Docs\" />
</ItemGroup>
<ItemGroup>
<Folder Include="Docs\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
<PackageReference Include="NGettext" Version="0.6.7" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" />
<PackageReference Include="NGettext" />
</ItemGroup>
</Project>

View File

@@ -73,10 +73,12 @@ public class MainPlayer : MpvClient
MainHandle = mpv_create();
Handle = MainHandle;
var events = Enum.GetValues(typeof(mpv_event_id)).Cast<mpv_event_id>();
var events = Enum.GetValues<mpv_event_id>().Cast<mpv_event_id>();
foreach (mpv_event_id i in events)
{
mpv_request_event(MainHandle, i, 0);
}
mpv_request_log_messages(MainHandle, "no");
@@ -194,7 +196,9 @@ public class MainPlayer : MpvClient
mpv_destroy(Handle);
foreach (var client in Clients)
{
mpv_destroy(client.Handle);
}
}
public void ProcessProperty(string? name, string? value)
@@ -263,6 +267,8 @@ public class MainPlayer : MpvClient
}
}
private readonly Regex ConfRegex = new Regex("^[\\w-]+$", RegexOptions.Compiled);
Dictionary<string, string>? _Conf;
public Dictionary<string, string> Conf {
@@ -273,7 +279,7 @@ public class MainPlayer : MpvClient
App.ApplyInputDefaultBindingsFix();
_Conf = new Dictionary<string, string>();
_Conf = [];
if (File.Exists(ConfPath))
{
@@ -281,12 +287,12 @@ public class MainPlayer : MpvClient
{
string line = it.TrimStart(' ', '-').TrimEnd();
if (line.StartsWith("#"))
if (line.StartsWith('#'))
continue;
if (!line.Contains('='))
{
if (Regex.Match(line, "^[\\w-]+$").Success)
if (ConfRegex.Match(line).Success)
line += "=yes";
else
continue;
@@ -305,7 +311,9 @@ public class MainPlayer : MpvClient
}
foreach (var i in _Conf)
{
ProcessProperty(i.Key, i.Value);
}
return _Conf;
}
@@ -331,7 +339,9 @@ public class MainPlayer : MpvClient
public void MainEventLoop()
{
while (true)
{
mpv_wait_event(MainHandle, -1);
}
}
protected override void OnShutdown()
@@ -479,14 +489,14 @@ public class MainPlayer : MpvClient
Command("stop");
Thread.Sleep(500);
SetPropertyString("dvd-device", path);
LoadFiles(new[] { @"dvd://" }, false, false);
LoadFiles([@"dvd://"], false, false);
}
else
{
Command("stop");
Thread.Sleep(500);
SetPropertyString("bluray-device", path);
LoadFiles(new[] { @"bd://" }, false, false);
LoadFiles([@"bd://"], false, false);
}
}
@@ -498,12 +508,12 @@ public class MainPlayer : MpvClient
if (Directory.Exists(path + "\\BDMV"))
{
SetPropertyString("bluray-device", path);
LoadFiles(new[] { @"bd://" }, false, false);
LoadFiles([@"bd://"], false, false);
}
else
{
SetPropertyString("dvd-device", path);
LoadFiles(new[] { @"dvd://" }, false, false);
LoadFiles([@"dvd://"], false, false);
}
}
@@ -601,8 +611,10 @@ public class MainPlayer : MpvClient
static string GetNativeLanguage(string name)
{
foreach (CultureInfo ci in CultureInfo.GetCultures(CultureTypes.NeutralCultures))
{
if (ci.EnglishName == name)
return ci.NativeName;
}
return name;
}
@@ -629,7 +641,7 @@ public class MainPlayer : MpvClient
if (_audioDevices != null)
return _audioDevices;
_audioDevices = new();
_audioDevices = [];
string json = GetPropertyString("audio-device-list");
var enumerator = JsonDocument.Parse(json).RootElement.EnumerateArray();
@@ -680,6 +692,8 @@ public class MainPlayer : MpvClient
}
}
private readonly Regex TitleRegex = new Regex(@"^[\._\-]", RegexOptions.Compiled);
public List<MediaTrack> GetTracks(bool includeInternal = true, bool includeExternal = true)
{
List<MediaTrack> tracks = new List<MediaTrack>();
@@ -697,7 +711,7 @@ public class MainPlayer : MpvClient
string filename = GetPropertyString($"filename/no-ext");
string title = GetPropertyString($"track-list/{i}/title").Replace(filename, "");
title = Regex.Replace(title, @"^[\._\-]", "");
title = TitleRegex.Replace(title, "");
if (type == "video")
{
@@ -1043,7 +1057,7 @@ public class MainPlayer : MpvClient
if (_profileNames != null)
return _profileNames;
string[] ignore = { "builtin-pseudo-gui", "encoding", "libmpv", "pseudo-gui", "default" };
string[] ignore = ["builtin-pseudo-gui", "encoding", "libmpv", "pseudo-gui", "default"];
string json = GetPropertyString("profile-list");
return _profileNames = JsonDocument.Parse(json).RootElement.EnumerateArray()
.Select(it => it.GetProperty("name").GetString())

View File

@@ -1,16 +1,15 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>net9.0-windows</TargetFramework>
<UseWPF>true</UseWPF>
<ImplicitUsings>enable</ImplicitUsings>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" Version="1.1.77" />
<PackageReference Include="NGettext" Version="0.6.7" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Xaml.Behaviors.Wpf" />
<PackageReference Include="NGettext" />
</ItemGroup>
</Project>

View File

@@ -40,7 +40,7 @@ Test (Join-Path $SourceDir 'MpvNet.sln')
$7zFile = Test 'C:\Program Files\7-Zip\7z.exe'
$InnoSetupCompiler = Test 'C:\Program Files (x86)\Inno Setup 6\ISCC.exe'
$ReleaseNotes = "- [.NET Desktop Runtime 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0)`n- [Changelog](https://github.com/mpvnet-player/mpv.net/blob/main/docs/changelog.md)"
$ReleaseNotes = "- [.NET Desktop Runtime 9.0](https://dotnet.microsoft.com/en-us/download/dotnet/9.0)`n- [Changelog](https://github.com/mpvnet-player/mpv.net/blob/main/docs/changelog.md)"
$Repo = 'github.com/mpvnet-player/mpv.net'
# Dotnet Publish

View File

@@ -4,8 +4,7 @@
Updates mpv (x64) and libmpv (x64 , ARM64).
Files are downloaded from:
x64: github.com/zhongfly/mpv-winbuild
ARM64: github.com/Andarwinux/mpv-winbuild
https://github.com/shinchiro/mpv-winbuild-cmake/releases
Requires 7zip being installed at 'C:\Program Files\7-Zip\7z.exe'.
@@ -54,8 +53,8 @@ function Unpack($archieveFile, $outputRootDir) {
# Update mpv x64
if (Test-Path (Join-Path $MpvDirX64 'mpv.exe')) {
$apiURL = "https://api.github.com/repos/zhongfly/mpv-winbuild/releases/latest"
$archiveFile = Get-Item (Download $apiURL "mpv-x86_64-[0-9]{8}")
$apiURL = "https://api.github.com/repos/shinchiro/mpv-winbuild-cmake/releases/latest"
$archiveFile = Get-Item (Download $apiURL "mpv-x86_64-[0-9]{8}-git-[0-9a-z]+\.7z")
$archiveDir = Unpack $archiveFile $env:TEMP
Remove-Item "$MpvDirX64\*" -Force -Recurse
Copy-Item "$archiveDir\*" $MpvDirX64 -Force -Recurse
@@ -68,8 +67,8 @@ if (Test-Path (Join-Path $MpvDirX64 'mpv.exe')) {
# Update libmpv x64
if (Test-Path (Join-Path $LibmpvDirX64 'libmpv-2.dll')) {
$apiURL = "https://api.github.com/repos/zhongfly/mpv-winbuild/releases/latest"
$archiveFile = Get-Item (Download $apiURL "mpv-dev-x86_64-[0-9]{8}")
$apiURL = "https://api.github.com/repos/shinchiro/mpv-winbuild-cmake/releases/latest"
$archiveFile = Get-Item (Download $apiURL "mpv-dev-x86_64-[0-9]{8}-git-[0-9a-z]+\.7z")
$archiveDir = Unpack $archiveFile $env:TEMP
Copy-Item $archiveDir\libmpv-2.dll $LibmpvDirX64 -Force
Remove-Item $archiveFile.FullName
@@ -81,8 +80,8 @@ if (Test-Path (Join-Path $LibmpvDirX64 'libmpv-2.dll')) {
# Update libmpv ARM64
if (Test-Path (Join-Path $LibmpvDirARM64 'libmpv-2.dll')) {
$apiURL = "https://api.github.com/repos/Andarwinux/mpv-winbuild/releases/latest"
$archiveFile = Get-Item (Download $apiURL "mpv-dev-aarch64-[0-9]{8}")
$apiURL = "https://api.github.com/repos/shinchiro/mpv-winbuild-cmake/releases/latest"
$archiveFile = Get-Item (Download $apiURL "mpv-dev-aarch64-[0-9]{8}-git-[0-9a-z]+\.7z")
$archiveDir = Unpack $archiveFile $env:TEMP
Copy-Item $archiveDir\libmpv-2.dll $LibmpvDirARM64 -Force
Remove-Item $archiveFile.FullName