Compare commits

...

1115 Commits
2.5 ... main

Author SHA1 Message Date
stax76
ef45baecbd Japanese translation was updated 2026-02-09 14:11:50 +01:00
stax76
30e75b2100 Merge pull request #759 from tsubasanouta/patch-2
Update ja.po
2026-02-09 14:07:32 +01:00
tsubasanouta
563472b489 Update ja.po 2026-02-07 22:25:46 +09:00
stax76
724a9adab8 Refactoring 2026-01-09 09:14:02 +01:00
stax76
9686c28f6a Support back and forward slashes as path seperator 2026-01-09 07:35:09 +01:00
stax76
03d0aeb879 Convert extension method to extension property 2026-01-09 07:29:19 +01:00
stax76
96afc62165 v7.1.2.0 2026-01-09 06:16:51 +01:00
stax76
fd3ea9afe9 Misc 2026-01-09 06:03:08 +01:00
stax76
853d38a427 PS script documentation 2026-01-09 05:21:30 +01:00
stax76
76a2f64fa6 adjust to mpv v.0.41 2026-01-08 17:14:31 +01:00
stax76
6c0e116918 Update readme 2025-11-26 13:51:47 +01:00
stax76
c1abf90559 Update outdated requirements in manual 2025-11-25 06:07:35 +01:00
stax76
eb085a6534 Changelog and version updated 2025-11-23 21:26:51 +01:00
stax76
78b85d59aa Merge pull request #751 from DogancanYr/patch-5
Revise Turkish translations.
2025-11-23 21:21:16 +01:00
stax76
0f900e01fa Merge pull request #752 from tsubasanouta/patch-1
Update ja.po
2025-11-23 21:20:54 +01:00
tsubasanouta
f754d4d865 Update ja.po 2025-11-24 04:47:20 +09:00
DogancanYr
474c4e888d Revise Turkish translations. 2025-11-23 16:10:49 +03:00
stax76
8f8ca453da Fix #748 2025-11-20 01:51:23 +01:00
stax76
8bd00fd2f1 Changelog update 2025-11-20 01:23:09 +01:00
stax76
61958aba2c v7.1.1.5 Beta 2025-11-20 01:11:02 +01:00
stax76
3fa6f44828 Changelog update 2025-11-20 01:07:16 +01:00
stax76
31be72efb2 Update Changelog 2025-11-20 01:00:27 +01:00
stax76
405c20f056 Merge pull request #749 from DogancanYr/patch-4
Update Turkish translations in tr.po file
2025-11-20 00:56:45 +01:00
stax76
5f0fb4ebc3 Update to .NET 10 LTS 2025-11-20 00:56:03 +01:00
DogancanYr
c6a2b06fdf Update Turkish translations in tr.po file 2025-10-29 19:58:56 +03:00
stax76
8f38eba23e Chinese and Japanese translations update 2025-10-14 02:41:25 +02:00
stax76
79164aae72 The German translation was updated 2025-10-06 00:43:18 +02:00
stax76
e5d3ac0d92 Changed default keys and menu items 2025-10-05 16:53:55 +02:00
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
stax76
ace7566c2a v7.1.1.3 Beta 2024-10-20 09:15:34 +02:00
stax76
0b646cedb5 New command Video > Stream Quality (Alt+q) 2024-10-14 15:18:11 +02:00
stax76
a0d2fb6a4e command palette support 2024-10-13 14:18:04 +02:00
stax76
59a556794f support for autocreate-playlist, video-exts, audio-exts, image-exts 2024-10-12 21:50:46 +02:00
stax76
cca474a5a5 Merge pull request #710 from emmanuel-ferdman/main
update manual guide reference
2024-10-10 19:25:14 +02:00
Emmanuel Ferdman
ae05b997c7 update manual guide reference
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2024-10-10 06:52:50 -07:00
stax76
88a6e18e78 v7.1.1.2 2024-10-10 14:08:21 +02:00
stax76
3de72df806 use autocreate-playlist instead of auto-load-folder 2024-10-10 13:32:19 +02:00
stax76
da176085cd Action fix 2024-10-10 06:27:24 +02:00
stax76
2b0ac7c087 cursor-autohide support #702 2024-10-10 05:44:02 +02:00
stax76
94ecf4a069 try fixing #662 2024-09-05 23:33:13 +02:00
stax76
9355e2f50c Set media-controls=yes 2024-09-05 05:15:00 +02:00
stax76
058ae3d185 auto build fix 2024-08-19 11:37:50 +02:00
stax76
3c1e6395a4 changelog update 2024-08-19 09:59:08 +02:00
stax76
236d10c14a changelog update 2024-08-19 09:56:02 +02:00
stax76
53f350da9a Polish translation fixed 2024-08-19 09:45:56 +02:00
stax76
bb6819f240 translation update 2024-08-19 09:27:18 +02:00
stax76
8f53254dbc Merge branch 'main' of https://github.com/mpvnet-player/mpv.net 2024-08-19 08:58:10 +02:00
stax76
8ed73f6ae0 changelog update 2024-08-19 08:57:54 +02:00
stax76
d59ccd7beb Merge pull request #704 from Ilithy/main
French translation
2024-08-19 08:55:19 +02:00
stax76
aeb11c9be1 changelog update 2024-08-19 08:53:06 +02:00
Ilithy
a1c8e93034 Update fr.po 2024-08-18 12:10:25 +02:00
Ilithy
00a11ea076 Update fr.po 2024-08-18 12:08:43 +02:00
Ilithy
9115f707dc Update fr.po 2024-08-18 12:02:59 +02:00
Ilithy
a2ec8de976 Update fr.po 2024-08-18 11:59:08 +02:00
Ilithy
be7e5aa7d2 Update fr.po 2024-08-18 11:52:03 +02:00
Ilithy
27124c9cdd Update fr.po 2024-08-18 01:57:02 +02:00
Ilithy
44079ed69c first commit for french translation 2024-08-16 01:36:00 +02:00
stax76
07749cb2cc title-bar fix 2024-08-10 11:19:23 +02:00
stax76
9d30acaba6 Japanese translation updated 2024-07-26 00:36:07 +02:00
stax76
f3fdef780d Support relative folders from command line 2024-07-26 00:14:44 +02:00
stax76
1243d1381b Updated changelog 2024-07-25 11:42:01 +02:00
stax76
3602f627e8 manual 2024-07-25 11:06:09 +02:00
stax76
97fab64d32 manual 2024-07-25 11:01:37 +02:00
stax76
e7b7f33b1b translation 2024-07-25 10:53:30 +02:00
stax76
01c2171a62 translation update 2024-07-25 10:34:09 +02:00
stax76
321dc13531 Merge pull request #699 from DogancanYr/patch-2
Update tr.po
2024-07-25 10:13:32 +02:00
DogancanYr
4032e8be7b Update tr.po 2024-07-20 21:21:24 +03:00
stax76
e52de1d1a7 v7.1.1.1 2024-07-20 03:03:42 +02:00
stax76
7c38e823c1 fix #676 2024-07-17 02:44:48 +02:00
stax76
e6defd3e55 #696 2024-07-16 00:04:15 +02:00
stax76
3caf4f2cb3 Bindings and menu item fix 2024-07-15 08:01:21 +02:00
stax76
3f897b12cf Yet another try to fix actions/workflow/auto build 2024-07-15 07:41:47 +02:00
stax76
12d0126dd5 Again try to fix actions/workflow/auto build 2024-07-15 07:32:30 +02:00
stax76
b218619b2b Try fixing auto/action/workflow build 2024-07-15 06:39:02 +02:00
stax76
ae80076f36 Full support for select.lua
select.lua is a new simple command palette script
embedded into mpv/libmpv.

In the context menu select.lua features can be found under 'View > On Screen Menu'.

https://github.com/mpv-player/mpv/blob/master/player/lua/select.lua
2024-07-15 02:10:30 +02:00
stax76
ae9c69e469 Turkish translation added 2024-05-21 13:58:35 +02:00
stax76
cfd2919e88 Merge pull request #683 from DogancanYr/patch-1
Turkish translation.
2024-05-21 13:04:56 +02:00
DogancanYr
985460d98e Update tr.po 2024-05-07 23:56:36 +03:00
DogancanYr
7596d988b9 Update tr.po 2024-05-07 16:51:21 +03:00
DogancanYr
50cad04b47 Update tr.po 2024-05-07 00:16:42 +03:00
DogancanYr
457d93b5c4 Update tr.po 2024-05-06 19:59:09 +03:00
DogancanYr
bb2af95344 Turkish translation. 2024-05-06 19:50:53 +03:00
stax76
34e76946f3 Russian translation added 2024-04-23 06:57:08 +02:00
stax76
3f52c1255e Korean translation added and auto build update 2024-04-03 13:10:19 +02:00
stax76
924e32f027 typo 2024-02-03 06:11:28 +01:00
stax76
2f735215e0 v7.1.1.0 2024-02-03 06:03:54 +01:00
stax76
23ed1457d5 Japanese translation updated 2024-01-20 22:06:15 +01:00
stax76
52214c1e15 new screenshots 2024-01-20 01:10:18 +01:00
stax76
09de4a5e05 Chinese translation updated 2024-01-19 09:05:32 +01:00
stax76
69a6754483 Merge branch 'main' of https://github.com/mpvnet-player/mpv.net 2024-01-13 14:05:59 +01:00
stax76
078756600e misc 2024-01-13 14:05:55 +01:00
stax76
5e2c7055d4 Merge pull request #648 from andywowws/patch-1
Update changelog.md
2024-01-13 14:05:37 +01:00
Andywoww
eb265be0a4 Update changelog.md
Wrong date
2024-01-13 19:33:38 +08:00
stax76
ad74acae0f v7.1.0.0 2024-01-12 11:29:47 +01:00
stax76
d325cf1165 Japanese translation added 2024-01-08 05:42:24 +01:00
stax76
39bace76d3 removal of hidden mouse exit feature 2024-01-07 11:20:10 +01:00
stax76
44e8ef7cd8 fix #639 2024-01-06 23:13:33 +01:00
stax76
85e4e3f9df fix geometry 2024-01-06 12:03:28 +01:00
stax76
ad94042a2c Chinese translation updated 2024-01-06 10:45:14 +01:00
stax76
304fe58f27 misc 2024-01-04 03:53:24 +01:00
stax76
edcd8be662 improved audio device support 2024-01-03 06:39:25 +01:00
stax76
3970d5c0c2 v7.0.0.6 Beta 2024-01-02 09:09:16 +01:00
stax76
4451eafe71 Merge branch 'main' of https://github.com/mpvnet-player/mpv.net 2023-12-28 06:18:10 +01:00
stax76
1c799fd474 hwdec description 2023-12-28 06:17:57 +01:00
stax76
17e25619da Merge pull request #626 from nkh0472/patch-3
change screenshot-tag-colorspace default value to `yes`
2023-12-28 06:16:06 +01:00
stax76
a4376b1492 Merge pull request #627 from nkh0472/patch-4
Detailed description for hwdec
2023-12-28 06:13:37 +01:00
stax76
d41faad9d9 v7.0.0.5 Beta 2023-12-28 06:11:42 +01:00
nkh0472
0e6116b478 Detailed description for hwdec 2023-12-27 22:29:31 +08:00
nkh0472
789127e8ff change screenshot-tag-colorspace default value to yes 2023-12-27 22:17:45 +08:00
stax76
6ef9f32d4f misc 2023-12-26 16:58:12 +01:00
stax76
1048dbed40 New menu item and binding: File > Add files to playlist from clipboard (Ctrl+Shift+v) 2023-12-26 09:22:27 +01:00
stax76
86c823bfde misc 2023-12-24 07:34:12 +01:00
stax76
764f00ed3a misc 2023-12-23 10:20:57 +01:00
stax76
3e4ea03437 Support of the mpv option title-bar 2023-12-22 18:35:07 +01:00
stax76
0ef679e00d argh 2023-12-21 10:01:59 +01:00
stax76
7f2bf2e905 misc 2023-12-20 05:19:50 +01:00
stax76
ab8a8d5a35 Command line parser fix using list options with -add suffix 2023-12-19 12:12:34 +01:00
stax76
a3b9c653fa v7.0.0.4 Beta 2023-12-19 09:37:46 +01:00
stax76
ed48f5c559 Command line parser supports list options with -add suffix. Fixex #619. 2023-12-19 03:18:55 +01:00
stax76
d328f6b7ec Main window: Limited geometry support 2023-12-17 19:08:55 +01:00
stax76
16ba94d67d updated manual and new libplacebo GUI options 2023-12-16 13:48:27 +01:00
stax76
7978170133 Merge pull request #617 from FantasqueX/fix-typo-1
fix typo in changelog
2023-12-16 08:44:03 +01:00
stax76
ab313eb442 new libplacebo options 2023-12-16 08:43:22 +01:00
Letu Ren
f40008d94a fix typo in changelog 2023-12-16 15:31:50 +08:00
stax76
75e19d8d18 newly developed combo box control 2023-12-16 04:57:49 +01:00
stax76
9bb978f612 new combo box control 2023-12-16 04:52:16 +01:00
stax76
7ea3fbc917 v7.0.0.3 2023-12-15 15:21:35 +01:00
stax76
3af5b458ba misc 2023-12-15 14:58:32 +01:00
stax76
b23542d681 Conf editor crash fixed 2023-12-15 08:35:01 +01:00
stax76
e0616dee76 misc 2023-12-15 01:24:43 +01:00
stax76
cd54e67b87 new menu items and bindings to open mpv.conf and input.conf with a text editor 2023-12-14 13:48:23 +01:00
stax76
9d4779fd96 Conf editor support for: reset-on-next-file, input-ipc-server, background, title 2023-12-14 11:08:36 +01:00
stax76
d4d147e5fc Improved conf file reader/writer. 2023-12-14 07:31:39 +01:00
stax76
35b17bc620 New menu item added to add mpv.net to the path environment variable. 2023-12-13 09:46:17 +01:00
stax76
3eb4af5e75 v7.0.0.2 2023-12-13 08:45:20 +01:00
stax76
49f22a1f81 misc 2023-12-13 03:38:23 +01:00
stax76
7cd5686488 Trying getting decent menu input display 2023-12-13 00:57:59 +01:00
stax76
0d63feec57 Remove MS Store package from solution 2023-12-12 18:29:35 +01:00
stax76
0ee8318ca4 some bug fixes 2023-12-12 18:15:20 +01:00
stax76
8e45cdb47d release v7.0.0.1 Beta 2023-12-11 11:38:36 +01:00
stax76
a61a0506fd Merge branch 'main' of https://github.com/mpvnet-player/mpv.net 2023-12-10 16:57:01 +01:00
stax76
b3877492dd Support for encoding mode and thumbfast and some other new features and improvements 2023-12-10 16:56:51 +01:00
stax76
090f15fc47 Merge pull request #605 from dyphire/workflows
auto build: create .mo files & update binary files
2023-12-09 08:18:09 +01:00
dyphire
d57692c5d1 auto build: create .mo files & update binary files 2023-12-09 14:44:40 +08:00
stax76
60dfbee16d auto build fix 2023-12-09 05:16:10 +01:00
stax76
74f586744f auto build: try installing gettext tools 2023-12-09 05:07:27 +01:00
stax76
9b93eaa9e9 auto build: next try running create-mo-files.ps1 2023-12-09 04:46:05 +01:00
stax76
a4eed2d939 auto build fix 2023-12-09 04:20:17 +01:00
stax76
34a3855941 build workflow: fix bug using Resolve-Path 2023-12-09 04:08:18 +01:00
stax76
dfd9abeba4 github-actions: fix missing mpvnet.com and .mo files 2023-12-09 03:41:28 +01:00
stax76
f937273fe3 Support Chinese language 2023-12-08 21:33:10 +01:00
stax76
8d601525b5 problems with git... 2023-12-08 06:31:29 +01:00
stax76
5dd3716012 translation using NGettext.Wpf 2023-12-08 06:23:17 +01:00
stax76
a4709de918 Merge pull request #582 from mpvnet-player/translations_9c125c506e307f2b98fdac75d949d462_en
Updates for file lang/po/pt.po in en
2023-12-03 12:41:39 +01:00
stax76
c24b9b2c83 Merge pull request #583 from mpvnet-player/translations_cb0bed8dab91634f794f5a23524fa876_en
Updates for file lang/po/ja.po in en
2023-12-03 12:40:59 +01:00
stax76
3686231cf2 Merge pull request #584 from mpvnet-player/translations_f354967270a86e8ac05644d3af39dff2_en
Updates for file lang/po/pt_BR.po in en
2023-12-03 12:40:43 +01:00
stax76
4c12097063 Merge pull request #585 from mpvnet-player/translations_7374abb4a065a5f2250a4345bf850955_en
Updates for file lang/po/es.po in en
2023-12-03 12:40:28 +01:00
stax76
da7f877f2a Merge pull request #586 from mpvnet-player/translations_47f53a5158a97e34f7699cb9c92005db_en
Updates for file lang/po/pl.po in en
2023-12-03 12:40:14 +01:00
stax76
1dbb1e4af9 Merge pull request #587 from mpvnet-player/translations_de116bdefbd68024f939486579a0bf34_en
Updates for file lang/po/fr.po in en
2023-12-03 12:39:49 +01:00
stax76
abea225b54 Merge pull request #588 from mpvnet-player/translations_23b6678292a30949b0d8a8d599868d5d_en
Updates for file lang/po/tr.po in en
2023-12-03 12:39:33 +01:00
stax76
2053042e19 Merge pull request #589 from mpvnet-player/translations_e92bfa4d6572333c19dbcab4a4ab4bbe_en
Updates for file lang/po/sr_RS.po in en
2023-12-03 12:39:17 +01:00
stax76
a3046258d4 Merge pull request #590 from mpvnet-player/translations_f83e45ef994d055f2b090d977216a5fb_en
Updates for file lang/po/zh_CN.po in en
2023-12-03 12:39:02 +01:00
stax76
207da8d0a6 Merge pull request #591 from mpvnet-player/translations_41f08823f5f6c2445144e0aae8b06b81_en
Updates for file lang/po/sr_RS@latin.po in en
2023-12-03 12:38:46 +01:00
stax76
f7ed3bf01f Merge pull request #593 from mpvnet-player/translations_9f67269b1373c2b3292aeda6ac2b1019_en
Updates for file lang/po/ca.po in en
2023-12-03 12:38:17 +01:00
stax76
3c8cd407e1 Merge pull request #594 from mpvnet-player/translations_765a3e6f67b71925d1e3478e1228f11d_en
Updates for file lang/po/ro.po in en
2023-12-03 12:38:02 +01:00
stax76
ea56b6d06c Merge pull request #595 from mpvnet-player/translations_59e6e0afcffac2572403a1017f5482bd_en
Updates for file lang/po/zh_SG.po in en
2023-12-03 12:37:39 +01:00
stax76
d4c4296196 Merge pull request #596 from mpvnet-player/translations_8dbfcaf9173f9f0d65c02542c00f9fdb_en
Updates for file lang/po/nl.po in en
2023-12-03 12:37:23 +01:00
stax76
1b4be52ce6 Merge pull request #597 from mpvnet-player/translations_0ebcb9906ede175c218105251b276144_en
Updates for file lang/po/sv.po in en
2023-12-03 12:37:10 +01:00
stax76
286686f8c4 Merge pull request #598 from mpvnet-player/translations_0f9f4cd43bc9918bd5133f6b515de91b_en
Updates for file lang/po/lt.po in en
2023-12-03 12:36:57 +01:00
stax76
146852ca19 Merge pull request #599 from mpvnet-player/translations_38a6dd3b6bc9b159b9af29f1f01155ac_en
Updates for file lang/po/cs.po in en
2023-12-03 12:36:39 +01:00
stax76
3f6181f77b Merge pull request #600 from mpvnet-player/translations_89409671ec1a0a5131a4284c6ebea30c_en
Updates for file lang/po/bg.po in en
2023-12-03 12:36:20 +01:00
stax76
8997a2eacb Merge pull request #592 from mpvnet-player/translations_555b7665d32e34263edee646f45402cc_en
Updates for file lang/po/de.po in en
2023-11-29 13:27:50 +01:00
transifex-integration[bot]
a6642a4db8 translation-update Updating lang/po/bg.po
source file: 'lang/po/bg.po' updated.
2023-11-29 11:12:04 +00:00
transifex-integration[bot]
8a8ac75b29 translation-update Updating lang/po/sv.po
source file: 'lang/po/sv.po' updated.
2023-11-29 11:12:03 +00:00
transifex-integration[bot]
1cc2422117 translation-update Updating lang/po/lt.po
source file: 'lang/po/lt.po' updated.
2023-11-29 11:12:03 +00:00
transifex-integration[bot]
0fa3feef1f translation-update Updating lang/po/cs.po
source file: 'lang/po/cs.po' updated.
2023-11-29 11:12:03 +00:00
transifex-integration[bot]
3ae923ba0e translation-update Updating lang/po/sr_RS.po
source file: 'lang/po/sr_RS.po' updated.
2023-11-29 11:12:02 +00:00
transifex-integration[bot]
11e150b0f9 translation-update Updating lang/po/ca.po
source file: 'lang/po/ca.po' updated.
2023-11-29 11:12:02 +00:00
transifex-integration[bot]
1ed8c234a3 translation-update Updating lang/po/ro.po
source file: 'lang/po/ro.po' updated.
2023-11-29 11:12:02 +00:00
transifex-integration[bot]
948e600f96 translation-update Updating lang/po/zh_SG.po
source file: 'lang/po/zh_SG.po' updated.
2023-11-29 11:12:02 +00:00
transifex-integration[bot]
1050e7d25f translation-update Updating lang/po/nl.po
source file: 'lang/po/nl.po' updated.
2023-11-29 11:12:02 +00:00
transifex-integration[bot]
2ff1b07449 translation-update Updating lang/po/fr.po
source file: 'lang/po/fr.po' updated.
2023-11-29 11:12:01 +00:00
transifex-integration[bot]
4466217063 translation-update Updating lang/po/zh_CN.po
source file: 'lang/po/zh_CN.po' updated.
2023-11-29 11:12:01 +00:00
transifex-integration[bot]
01adf213bc translation-update Updating lang/po/sr_RS@latin.po
source file: 'lang/po/sr_RS@latin.po' updated.
2023-11-29 11:12:01 +00:00
transifex-integration[bot]
c1308434b1 translation-update Updating lang/po/de.po
source file: 'lang/po/de.po' updated.
2023-11-29 11:12:01 +00:00
transifex-integration[bot]
e854598cd2 translation-update Updating lang/po/es.po
source file: 'lang/po/es.po' updated.
2023-11-29 11:12:00 +00:00
transifex-integration[bot]
f6ca5a3b96 translation-update Updating lang/po/tr.po
source file: 'lang/po/tr.po' updated.
2023-11-29 11:12:00 +00:00
transifex-integration[bot]
8fe196bf8a translation-update Updating lang/po/pt_BR.po
source file: 'lang/po/pt_BR.po' updated.
2023-11-29 11:11:59 +00:00
transifex-integration[bot]
3abb3c32f0 translation-update Updating lang/po/pl.po
source file: 'lang/po/pl.po' updated.
2023-11-29 11:11:59 +00:00
transifex-integration[bot]
867c9c2989 translation-update Updating lang/po/pt.po
source file: 'lang/po/pt.po' updated.
2023-11-29 11:11:57 +00:00
transifex-integration[bot]
c1c8e08c9d translation-update Updating lang/po/ja.po
source file: 'lang/po/ja.po' updated.
2023-11-29 11:11:57 +00:00
stax76
bdcfa4e722 translation files 2023-11-29 10:38:02 +01:00
stax76
7879bda5c1 manual update 2023-11-19 10:39:27 +01:00
stax76
ef062d1b10 file casing 2023-11-19 09:56:11 +01:00
stax76
8b6204ed2b Merge branch 'main' of https://github.com/mpvnet-player/mpv.net 2023-11-06 09:19:23 +01:00
stax76
f14d1a98f9 Merge pull request #577 from sakhezech/main
fix readme typos
2023-11-06 09:19:12 +01:00
stax76
9ec518a952 uosc menu syntax fix 2023-11-06 09:17:53 +01:00
sakhezech
8ee67f832c fix reamde typos 2023-11-05 19:53:25 +03:00
stax76
684e103e12 fix dark mode window title bar color and support uosc exclamation mark menu syntax 2023-11-05 11:15:35 +01:00
stax76
1d3fe0a924 work on menu and bindings 2023-11-04 20:24:10 +01:00
stax76
b41ca3cd89 misc 2023-11-03 17:04:26 +01:00
stax76
aa0e88129b input learn window fix 2023-11-01 08:16:37 +01:00
stax76
4baa26d7a0 Fix Ctrl+Alt and right mouse button usage in input learn window 2023-10-31 12:30:28 +01:00
stax76
4c4088b28a environment variables and more 2023-10-31 09:44:20 +01:00
stax76
ea8944c1cc change build.yml and support window-dragging=no 2023-10-26 17:23:38 +02:00
stax76
d7e1e32654 Merge pull request #570 from dyphire/workflows
add build workflow
2023-10-26 07:40:27 +02:00
dyphire
9878e6da46 add build workflow 2023-10-25 20:10:51 +08:00
stax76
37320fb975 conf editor bug fix 2023-10-25 09:35:36 +02:00
stax76
0148a71281 fix dead links and dead manual topics 2023-10-24 11:50:09 +02:00
stax76
9f4baa9d99 change solution name 2023-10-24 11:31:45 +02:00
stax76
5706d7b66d replace v6 with experimental v7 code 2023-10-24 11:17:45 +02:00
stax76
fb27bb8727 move FileAssociation class to FileAssociation.cs 2023-10-24 10:00:40 +02:00
stax76
80c827974a v6.0.4.0 Stable 2023-08-17 02:50:45 +02:00
stax76
d2e7d4551f v6.0.4.0 Stable 2023-08-17 02:38:41 +02:00
stax76
308e3ed044 Merge pull request #541 from soredake/sub-override-keybind
input.conf.txt: add binding for overriding sub styles
2023-08-17 02:31:42 +02:00
soredake
f563342eb5 input.conf.txt: add binding for overriding sub styles 2023-05-07 19:56:30 +03:00
stax76
16d6e4d471 Merge pull request #517 from Torben2000/feature/playlist-titles
Use item title in playlist command palette if set
2023-01-21 08:12:56 +01:00
stax76
030aa930a1 Merge pull request #529 from hooke007/dll
relink to libmpv-2
2023-01-21 08:12:01 +01:00
hooke007
3a6df857da relink to libmpv-2 2023-01-20 15:35:59 +00:00
Torben2000
7d9340d9d5 Use item title in playlist command palette if set
Fixes https://github.com/mpvnet-player/mpv.net/issues/509
2022-12-03 19:30:37 +01:00
stax76
9dca27c941 Merge pull request #510 from soredake/screenshot-without-subtitles
input.conf.txt: add binding for screenshot without subtitles
2022-11-27 07:41:31 +01:00
soredake
6f2b30f762 input.conf.txt: add binding for screenshot without subtitles 2022-11-15 11:57:49 +02:00
stax76
89be723132 Merge pull request #505 from nkh0472/patch-2
fix typo
2022-10-20 17:29:37 +02:00
nkh0472
ec1dde650f fix typo 2022-10-20 23:12:35 +08:00
stax76
dbf1a32580 v6.0.3.2 2022-10-14 12:18:12 +02:00
stax76
a81ed58983 finish repo transfer 2022-10-12 12:40:40 +02:00
stax76
33df960d04 Merge branch 'master' of https://github.com/stax76/mpv.net 2022-10-02 15:40:55 +02:00
stax76
337bee9f28 fix severe termination bug 2022-10-02 15:40:53 +02:00
stax76
e57c41a254 Merge pull request #495 from nkh0472/patch-1
Update Manual_chs.md
2022-10-01 10:19:41 +02:00
nkh0472
62d06c65ab Update Manual_chs.md
Co-authored-by: hooke007 <hooke007@qq.com>
2022-09-25 19:21:22 +08:00
nkh0472
e70a935d7a Update Manual_chs.md
Add more info about translations update this time
2022-09-19 21:14:48 +08:00
nkh0472
c8e6ce678a Update Manual_chs.md
Translations for b73d2e7107 and 1f6025a10f
2022-09-18 23:03:37 +08:00
stax76
22960af78b mouse cursor auto-hide behavior 2022-08-19 07:13:07 +02:00
stax76
95e31a1d3f Improved mouse cursor hide behavior 2022-08-19 06:53:49 +02:00
stax76
06ff83b75c shorter OSD media info 2022-08-18 09:44:52 +02:00
stax76
1f6025a10f New command to move the Window to the screen edge 2022-08-18 09:31:23 +02:00
stax76
00bfa20fac improved OSD media info 2022-08-08 03:19:11 +02:00
stax76
1475d5ee66 conf editor option definition simplyfication 2022-08-07 14:21:11 +02:00
stax76
b73d2e7107 new history-filter option added 2022-08-07 13:50:29 +02:00
stax76
a7fa76d63a relative path fix 2022-08-05 07:11:50 +02:00
stax76
e2c720346a fix #480 2022-08-05 06:29:49 +02:00
stax76
01a853e865 Merge pull request #475 from hooke007/doc
bump Manual_chs v6.0.3.1
2022-07-31 06:47:19 +02:00
hooke007
6510de2bd8 bump Manual_chs v6.0.3.1 2022-07-31 01:01:58 +01:00
stax76
7fc1de2ce3 update process-instance description 2022-07-30 13:35:17 +02:00
stax76
b0d399e9ee update changelog 2022-07-30 13:20:39 +02:00
stax76
7f680829ef update changelog 2022-07-30 13:05:30 +02:00
stax76
603f956261 update changelog 2022-07-30 12:55:32 +02:00
stax76
6d06df9004 6.0.3.1 2022-07-30 12:52:19 +02:00
stax76
5ea086d05b Support --audio-file and --sub-file aliases 2022-07-30 11:45:07 +02:00
stax76
1ad819fa9d Fix external audio tracks not shown correctly in tracks context menu 2022-07-30 11:26:45 +02:00
stax76
f2dd6205b5 Merge branch 'master' of https://github.com/stax76/mpv.net 2022-07-27 09:42:02 +02:00
stax76
b2a3c231ff command line syntax is supported in mpv.conf 2022-07-27 09:42:00 +02:00
stax76
f6c223a411 Update issue templates 2022-07-25 09:51:28 +02:00
stax76
e7a2ba6805 Update issue templates 2022-07-25 09:43:58 +02:00
stax76
5a08d9ccd6 Shift key enables process-instance=multi 2022-07-23 08:50:07 +02:00
stax76
5714a5e62a Merge branch 'master' of https://github.com/stax76/mpv.net 2022-07-17 08:04:43 +02:00
stax76
def7e5ac5a misc 2022-07-17 08:04:32 +02:00
stax76
601bb20492 Update FUNDING.yml 2022-07-14 04:31:20 +02:00
stax76
59600df977 update manual 2022-07-13 09:02:51 +02:00
stax76
e1b9730e9b use mpv.net to cycle subtitles 2022-07-12 05:49:05 +02:00
stax76
e378551938 misc 2022-07-11 13:14:26 +02:00
stax76
a82b2ef571 disable unused mpv events 2022-07-11 07:05:50 +02:00
stax76
6157a01701 disable unused mpv events 2022-07-11 06:57:10 +02:00
stax76
ec17ae8ce9 support shortcuts with media file target 2022-07-11 06:14:01 +02:00
stax76
f719528017 fix #293 2022-07-10 10:30:01 +02:00
stax76
966b45eb65 shorten annoying media info titles 2022-07-10 00:49:56 +02:00
stax76
eeae6994a2 remove basic view and enhance advanced view of show-info command 2022-07-09 17:26:49 +02:00
stax76
07809d882f use mpvnet instead of mpv to create playlist from folder 2022-07-08 12:20:36 +02:00
stax76
e970f0b4e4 libmpv shinchiro 2022-07-02 2022-07-08 05:51:06 +02:00
stax76
a36b6a3fdf misc 2022-07-04 08:45:37 +02:00
stax76
4febca257f properly fix OSC hide behavior 2022-07-04 08:32:53 +02:00
stax76
9d493b4d08 store package update 2022-07-03 10:49:13 +02:00
stax76
9a6bf5a481 v6.0.3.0 update changelog 2022-07-03 10:35:39 +02:00
stax76
40565e8b3d fix possible race condition 2022-07-02 15:10:22 +02:00
stax76
fb294c441d 6.0.2.0 2022-07-02 10:19:19 +02:00
stax76
03b775370b window title fix 2022-07-02 09:35:15 +02:00
stax76
1015f87533 changelog fix 2022-06-30 15:19:42 +02:00
stax76
cadc5d65cf 6.0.1.0 2022-06-30 15:00:07 +02:00
stax76
3e2f104aa7 fix #449 2022-06-28 15:17:35 +02:00
stax76
c87ce3b66f fix #449 2022-06-28 07:53:48 +02:00
stax76
3093dd43a4 add smart-volume script to changelog 2022-06-27 15:03:26 +02:00
stax76
061bb39b60 improve changlog 2022-06-25 16:22:05 +02:00
stax76
d994c79d5d fix #372 2022-06-25 16:18:16 +02:00
stax76
9ca66db07b Merge pull request #448 from soredake/patch-1
Add two new keybinds for controlling volume
2022-06-25 16:02:22 +02:00
stax76
4a382d4e29 border issue 2022-06-25 13:56:45 +02:00
stax76
69a5ba4470 Fix #445 chapters that are script created after the media file is loaded 2022-06-25 13:07:17 +02:00
soredake
4a890a4da7 Add two new keybinds for controlling volume
This keybinds is used in mpv, - + are intuitive for controlling volume, but i have compact keyboard without numpad, and pressing + in number row requires me to press it with shift, which i want to avoid.
2022-06-23 21:23:29 +03:00
stax76
023c1db417 recent list path normalization 2022-06-20 19:29:39 +02:00
stax76
7ef1f9315e Width of command palette slightly increased 2022-06-20 19:24:24 +02:00
stax76
a148c88435 new option minimum-aspect-ratio-audio 2022-06-19 18:06:08 +02:00
stax76
f6ad169f9d show Default only when track count is > 1 2022-06-19 08:21:31 +02:00
stax76
e69a5559e8 Fix start-size=session not working 2022-06-19 07:51:30 +02:00
stax76
500fe9abc4 #442 show chapters in the command palette 2022-06-19 05:23:10 +02:00
stax76
55f4a340af setting env var MPVNET_VERSION 2022-06-14 15:09:56 +02:00
stax76
b17ed3675e #334 New support of the mpv option snap-window 2022-06-11 09:32:02 +02:00
stax76
34031fa15d Fix borderless window not resizable with mouse 2022-06-09 21:48:35 +02:00
stax76
d6d31d8ae9 Fix compatibility with mpv-osc-tethys 2022-06-09 19:37:42 +02:00
stax76
0bfee26418 logo change 2022-06-09 10:25:06 +02:00
stax76
71d6b96c10 Fix logo overlap using mordenx.lua 2022-06-09 08:27:45 +02:00
stax76
d1b7250a7a changelog update 2022-06-08 21:39:36 +02:00
stax76
39b81d0664 manual update 2022-06-08 21:05:42 +02:00
stax76
6337818dbc New options autofit-image and autofit-audio 2022-06-08 10:16:40 +02:00
stax76
2257af6294 change minimum-aspect-ratio default value to 0 2022-06-07 23:00:10 +02:00
stax76
572257b645 change minimum-aspect-ratio default value to 1 2022-06-07 22:51:52 +02:00
stax76
6eb82b6b7e Merge pull request #437 from hooke007/doc
bump Manual_chs v6.0.0.0
2022-06-06 19:30:56 +02:00
hooke007
7ef703da42 bump Manual_chs v6.0.0.0 2022-06-06 17:12:09 +01:00
stax76
f7f8aa550a use filtered-metadata option for music osd 2022-06-05 18:55:08 +02:00
stax76
8d693b5e01 fix minor conf editor issue 2022-06-05 17:26:44 +02:00
stax76
e8bc8311e6 add header format to changelog 2022-06-05 16:45:11 +02:00
stax76
19c4a1d6c1 6.0.0.0 Beta 2022-06-05 16:42:47 +02:00
stax76
a53fa7178f libmpv update changelog 2022-06-05 13:09:43 +02:00
stax76
09aee26cd4 Fix logo not hiding sometimes using gpu-api=vulkan 2022-06-05 12:55:53 +02:00
stax76
0c6e486eb0 #435 Fix mpv options not working in case of existing same line comments 2022-06-05 06:40:42 +02:00
stax76
1561ed90f6 remove 'mpv.net' from conf editor definitions that are not specific to mpv.net 2022-06-04 10:31:52 +02:00
stax76
c2f965ced9 improved changelog 2022-06-04 10:06:48 +02:00
stax76
aed524bbc5 Merge pull request #434 from dyphire/track_menu
optimize subtitle format information
2022-06-04 08:42:53 +02:00
dyphire
8cf7e4fd71 optimize subtitle format information 2022-06-04 11:21:06 +08:00
stax76
0ebcf12502 update changelog 2022-06-04 00:32:45 +02:00
stax76
2af13e995f using media info by default 2022-06-04 00:27:17 +02:00
stax76
2e2562fefc shorter media info to better fit on screen 2022-06-04 00:17:56 +02:00
stax76
1860c42114 Merge pull request #433 from dyphire/track_menu
Minor changes to track menu
2022-06-03 23:10:22 +02:00
dyphire
8782ae8ad2 Minor changes 2022-06-04 04:21:07 +08:00
stax76
5d9cde10ce fix issue using external tracks 2022-06-03 21:08:30 +02:00
stax76
2ee2b31bc0 menu fix 2022-06-03 21:02:29 +02:00
stax76
4cd92db141 use new msg model everywhere 2022-06-03 20:23:05 +02:00
stax76
8ee389e8cb misc 2022-06-03 18:38:53 +02:00
stax76
971fe1fe7c - 2022-06-03 15:47:21 +02:00
stax76
e9df0f9f99 - 2022-06-02 20:16:13 +02:00
stax76
d465b13a03 Merge branch 'master' into no-mediainfo 2022-06-02 14:18:07 +02:00
stax76
412d4d7238 Merge pull request #432 from dyphire/track_menu
Optimize track menu.
2022-06-02 14:17:04 +02:00
stax76
1dd93bfcff - 2022-06-02 14:15:02 +02:00
stax76
4ebf241306 shorten mpv.conf preview 2022-06-02 12:37:56 +02:00
dyphire
1a714a39df Optimize track menu
Add encoding information to subtitles

Add title for external tracks, match and replace the filename to avoid too long characters
2022-06-02 11:33:18 +08:00
stax76
b2b387c017 #344 cache and demuxer-max-bytes option added to conf editor 2022-06-01 14:55:04 +02:00
stax76
bf43328e7a require at least 2 characters in conf editor search 2022-06-01 10:16:36 +02:00
stax76
4cba6bb03c fix changelog 2022-05-28 00:54:33 +02:00
stax76
72f9f156b8 fix external tracks 2022-05-27 16:21:42 +02:00
stax76
c78719c3bf Fix #426 external audio and subtitle tracks 2022-05-27 14:07:04 +02:00
stax76
7e4ea640cf Command messages are dispatched with script-message-to mpvnet 2022-05-27 12:20:37 +02:00
stax76
6ddca6d608 minor rewrite 2022-05-26 19:06:32 +02:00
stax76
0fae17b42a support idlelogo 2022-05-26 18:39:44 +02:00
stax76
7e834cea6d Fix #424 media title issues 2022-05-26 11:36:24 +02:00
stax76
6fc546c69c auto-load-folder threading stability 2022-05-22 15:49:25 +02:00
stax76
e8baa21d42 Fix auto-load-folder not working with user scripts 2022-05-22 14:35:43 +02:00
stax76
4c3c65dded #423 Fix chapter time display in menu 2022-05-22 11:48:35 +02:00
stax76
843f7d1a41 manual fix 2022-05-22 09:10:10 +02:00
stax76
673d5a8c0e manual improvement 2022-05-22 09:07:36 +02:00
stax76
6bd4540106 Fix #422 slow startup using osd-scale-by-window=no 2022-05-22 08:22:49 +02:00
stax76
5b57e6214e change profile using command palette 2022-05-22 08:07:48 +02:00
stax76
27f7935127 misc 2022-05-21 10:58:39 +02:00
stax76
cd84819a03 New show-santa-logo (green and grumpy) option 2022-05-21 08:52:44 +02:00
stax76
0efc335232 new quick bookmark feature 2022-05-21 08:31:06 +02:00
stax76
b04fb9b789 input conf use 'V' for 'Open URL or file from clipboard' 2022-05-20 18:18:56 +02:00
stax76
354d5493c4 improved error handling 2022-05-20 14:50:56 +02:00
stax76
3e499befbc Fix #421 crash choosing Matroska edition in the menu. 2022-05-20 14:29:21 +02:00
stax76
bc0fc2a29d Fix auto-play not working with user scripts 2022-05-19 23:17:23 +02:00
stax76
229ace708d minor input.conf change 2022-05-18 11:54:34 +02:00
stax76
2708937554 input.conf duplicate fix 2022-05-17 18:37:31 +02:00
stax76
66654537fe idle fix 2022-05-17 17:10:45 +02:00
stax76
5d16d7b2d1 support mpv idle property partly 2022-05-17 15:05:00 +02:00
stax76
b3ebf85772 Merge pull request #419 from hooke007/doc
bump Manual_chs v5.9.0.0
2022-05-14 14:24:11 +02:00
hooke007
733f0999e1 bump Manual_chs v5.9.0.0 2022-05-13 21:28:25 +01:00
stax76
2aec8856c7 script-opts defaults 2022-05-13 13:39:40 +02:00
stax76
a0d5a6f234 libmpv update 2022-05-08 15:08:32 +02:00
stax76
d9afd172f9 5.9.0.0 Beta 2022-05-08 15:01:45 +02:00
stax76
3b9368230c fix #414 2022-05-05 12:31:13 +02:00
stax76
7d510a8ba7 update about 2022-05-04 15:25:51 +02:00
stax76
e7f08bf0a7 about update 2022-05-04 13:12:33 +02:00
stax76
ad3235bb96 update project description 2022-05-04 12:33:47 +02:00
stax76
b5b18f2a1a try to fix #413 2022-05-04 12:06:20 +02:00
stax76
28f9df1cee New mpv.net specific option keep-open-exit added 2022-05-03 15:18:42 +02:00
stax76
cd2f2aeec8 Fix config editor handling keep-open incorrectly 2022-05-03 14:25:15 +02:00
stax76
a15d2cdbbe playlist-add command added 2022-05-01 01:01:51 +02:00
stax76
f489d59168 Fix multi monitor setup with different DPI values 2022-04-28 21:53:50 +02:00
stax76
309ddbf08e Fix #398 keyboard layout change not working 2022-04-08 19:16:18 +02:00
stax76
1bc6fb9509 Merge pull request #400 from hooke007/dev
update manual_chs for v5.8.0.0
2022-04-05 19:55:19 +02:00
hooke007
88e5628d7b update manual_chs for v5.8.0.0 2022-04-03 21:29:07 +01:00
stax76
27dc98af21 v5.8.0.0 2022-04-02 15:14:36 +02:00
stax76
ce12eb61fd Info command shows the length 2022-04-02 11:40:40 +02:00
stax76
8ed62df8e2 workaround not reproducible logo drawing crash 2022-04-02 11:15:04 +02:00
stax76
f4b4be5466 add show-menu to changelog and manual 2022-03-31 16:41:23 +02:00
stax76
9a33bea7e7 context menu issue fix #396 2022-03-31 16:22:54 +02:00
stax76
3f469897b0 Fix crash on Windows 7 systems without PowerShell. 2022-03-24 18:32:32 +01:00
stax76
1aa380f768 manual 2022-03-13 14:15:24 +01:00
stax76
b0c3988a9d improved manual 2022-03-13 14:00:26 +01:00
stax76
8c02bb59ee Media Info is shown using command palette 2022-03-12 21:27:07 +01:00
stax76
d60bf050cf show commands with text editor 2022-03-12 14:26:00 +01:00
stax76
a0f2e8bd92 Merge pull request #386 from hooke007/doc
update Manual_chs for v5.7.0.0
2022-03-11 22:05:51 +01:00
stax76
63db623d07 2 fixes 2022-03-11 22:02:54 +01:00
hooke007
ab0b2c4da2 update Manual_chs for v5.7.0.0 2022-03-12 03:35:18 +08:00
stax76
091e159d10 fix MS Store page displaying non existing ARM and x86 support 2022-03-11 15:31:11 +01:00
stax76
91fa89b058 Fix showing incorrect timestamps in About dialog of Store version 2022-03-10 18:27:33 +01:00
stax76
36d3543852 5.7.0.0 Stable 2022-03-09 12:48:52 +01:00
stax76
72ed687390 minor things 2022-03-05 22:06:20 +01:00
stax76
c56855bbc7 5.6.2.0 Beta 2022-03-05 21:05:50 +01:00
stax76
9377804b06 fixing reintroduced osc issue, sorry 2022-03-05 15:39:56 +01:00
stax76
c50ac7a53b manual update again 2022-03-05 15:23:23 +01:00
stax76
677e7b5a59 manual update 2022-03-05 15:21:33 +01:00
stax76
8066d07a76 5.6.1.0 Beta 2022-03-05 14:59:05 +01:00
stax76
e8d6081f9f ms store issue fix 2022-03-05 09:51:39 +01:00
stax76
5fb888262e Merge pull request #370 from KaranKad/conf
Added config location for Microsoft Store version
2022-03-05 08:32:13 +01:00
stax76
a4ffab7b50 misc 2022-03-05 07:55:34 +01:00
stax76
8d25803b71 #369 #367 protocol registration 2022-03-05 04:36:09 +01:00
stax76
df4baca6bc protocol fix 2022-03-05 04:05:04 +01:00
stax76
dc43ab4c8f rtsp protocol support 2022-03-05 03:48:47 +01:00
stax76
2249174f96 misc... 2022-03-04 21:49:05 +01:00
stax76
6916a63de6 several improvements 2022-03-02 21:19:55 +01:00
stax76
1064a80dad gpu-next fix 2022-03-02 14:33:47 +01:00
Karan09
4844215462 Add config location for msstore 2022-02-15 21:08:02 +05:30
stax76
b84889b03d manual download instruction updated 2022-01-03 20:57:54 +01:00
stax76
b38bfd9c65 Fix libmpv API changes 2021-12-19 18:40:34 +01:00
stax76
b807ad8002 Merge pull request #357 from hooke007/libmpv
support mpv-2
2021-12-19 16:01:57 +01:00
hooke007
f5854cde1b support mpv-2
drop the support of mpv-1
2021-12-17 07:43:31 +08:00
stax76
bde4849465 menu issue fix 2021-12-01 14:09:31 +01:00
stax76
8677efdb06 Update Main.webp 2021-11-20 21:29:22 +01:00
stax76
2bbd5705c2 readme update 2021-11-20 21:02:04 +01:00
stax76
0bf9b73ba8 manual update 2021-11-19 16:12:10 +01:00
stax76
42fd54269e improved manual 2021-11-19 14:04:46 +01:00
stax76
28f1c5c132 register ytdl protocol with file associations 2021-11-19 12:48:12 +01:00
stax76
30b60a5b4e Merge pull request #343 from hooke007/dev
Update doc
2021-11-18 10:44:50 +01:00
stax76
f0c9dd7956 docs improvement 2021-11-18 10:36:32 +01:00
hooke007
78ee4fbba2 Update Manual_chs.md
follow orginal commit 243b45326e
2021-11-17 02:54:24 +08:00
stax76
243b45326e Auto update feature removed 2021-11-14 00:05:31 +01:00
stax76
4efe85aad7 misc... 2021-11-13 23:43:47 +01:00
stax76
975f918703 changelog update 2021-11-06 16:15:05 +01:00
stax76
d9f4218bb4 Merge pull request #336 from hooke007/dev
update editor
2021-11-06 16:03:36 +01:00
stax76
671c15385a manual fix 2021-11-05 15:58:25 +01:00
stax76
091b9aad5b manual fix 2021-11-05 15:56:14 +01:00
stax76
e51b745a13 5.5.0.4 Beta 2021-11-05 15:53:57 +01:00
stax76
ad1ea92cbd window-scale property support 2021-11-05 15:23:47 +01:00
hooke007
66bfb80f3c update editor
mainly support `gpu-next`
2021-11-04 08:13:28 +08:00
stax76
ef6b453673 readme update 2021-11-02 11:47:32 +01:00
stax76
5496d22c48 readme update 2021-11-02 11:45:20 +01:00
stax76
7cd3a8276d WPF blur issue fix? 2021-10-26 12:24:23 +02:00
stax76
99ea7285ba manual fix 2021-10-24 17:19:47 +02:00
stax76
9722d46d00 support input-default-bindings 2021-10-24 17:08:07 +02:00
stax76
b115cf82d9 manual fix 2021-10-21 00:24:45 +02:00
stax76
f4e72b5a99 typo 2021-10-11 12:50:27 +02:00
stax76
24596626bd misc 2021-10-11 12:29:30 +02:00
stax76
6e761c0a4e minor change 2021-10-10 15:55:51 +02:00
stax76
2a3738f79e Improved handling of default options. 2021-10-10 15:20:12 +02:00
stax76
1a475f9fe8 Support input-builtin-bindings 2021-10-09 14:31:34 +02:00
Frank Skare
819b026ec7 Window size flicker issue fix when changing files 2021-09-23 19:46:38 +02:00
Frank Skare
38a816a255 5.5.0.3 Beta 2021-09-23 12:45:09 +02:00
Frank Skare
e8af1d2ccf cosmetic 2021-09-16 16:13:06 +02:00
Frank Skare
33cd881ae6 #321 new auto-play option 2021-09-16 16:02:59 +02:00
Frank Skare
a3b6af9f22 5.5.0.2 Beta 2021-09-15 13:25:58 +02:00
Frank Skare
458007862e 5.5.0.1 Beta 2021-09-15 11:57:01 +02:00
Frank Skare
2fac5d76e9 5.4.9.9 Beta 2021-09-14 17:26:05 +02:00
Frank Skare
1e886fc124 remove console-scale fix 2021-09-05 22:51:09 +02:00
Frank Skare
c075278180 5.4.9.8 Beta 2021-09-05 22:27:01 +02:00
Frank Skare
333d0ee62f better folder browser code 2021-09-05 21:59:05 +02:00
Frank Skare
7a6b2011e4 improved menu performance and folder browser fix 2021-09-05 08:23:42 +02:00
Frank Skare
e4c65cd84e Use Vista folder browser 2021-09-05 06:06:15 +02:00
Frank Skare
10e2a2cf3b #318 Fix message box not working when ontop is enabled 2021-09-04 12:39:28 +02:00
Frank Skare
0d72731ce7 PS ConvertFrom-Json replaced with JSONParser 2021-09-03 13:04:06 +02:00
Frank Skare
33fb645694 fix watch-later-options default 2021-09-02 15:01:11 +02:00
Frank Skare
d369c9db8e Merge branch 'master' of https://github.com/stax76/mpv.net 2021-09-02 14:42:56 +02:00
Frank Skare
a935cac791 misc 2021-09-02 14:42:53 +02:00
stax76
a08a4b4f92 Merge pull request #317 from hooke007/dev
update misc
2021-09-02 14:42:18 +02:00
hooke007
bd2ba612de a tiny optimize for console output 2021-09-02 19:45:04 +08:00
hooke007
306d186bef revert keep-open 2021-09-02 19:24:17 +08:00
hooke007
da67d62946 fix mpvconf
disable `start`
2021-09-02 00:35:49 +08:00
hooke007
50cc295e9e fix editor 2021-09-01 01:06:38 +08:00
hooke007
bec97545d1 Update CorePlayer.cs 2021-08-30 21:01:00 +08:00
hooke007
db5f0334c4 update&fix manuals 2021-08-30 02:41:06 +08:00
Frank Skare
42c623c8ca 5.4.9.7 Beta 2021-08-28 12:47:24 +02:00
Frank Skare
d3c1e2ab56 5.4.9.6 Beta 2021-08-26 13:11:07 +02:00
Frank Skare
57e60287ff msgbox fix 2021-08-26 12:51:20 +02:00
Frank Skare
007fbf8be5 5.4.9.5 Beta 2021-08-25 14:12:45 +02:00
Frank Skare
d3baa47f93 Message boxes are themed 2021-08-25 11:31:20 +02:00
Frank Skare
225905ebff menu fix 2021-08-24 16:00:16 +02:00
Frank Skare
c08ddd5057 menu performance 2021-08-24 15:20:54 +02:00
Frank Skare
970dfc069d 5.4.9.4 Beta 2021-08-24 08:22:59 +02:00
Frank Skare
9b5f9a64fd readme fix 2021-08-23 01:19:02 +02:00
Frank Skare
6720e2429e Button style in input editor. 2021-08-23 01:14:25 +02:00
Frank Skare
5070b166d9 new images 2021-08-23 00:15:17 +02:00
Frank Skare
8b6d12d57b new image 2021-08-23 00:10:45 +02:00
Frank Skare
8888747137 new images 2021-08-23 00:02:58 +02:00
Frank Skare
d83b5b14a8 5.4.9.3 Beta 2021-08-22 23:50:42 +02:00
Frank Skare
17ecd9cb82 Major UI rework! 2021-08-22 18:50:11 +02:00
Frank Skare
0829b4bd9e lua string escape fix 2021-08-16 22:28:02 +02:00
Frank Skare
fbc9652f20 update changelog 2021-08-16 11:18:42 +02:00
Frank Skare
c7d9d658f2 libmpv shinchiro 2021-08-15 2021-08-16 11:18:00 +02:00
Frank Skare
1c525618e2 #291 Leaving fullscreen using keepaspect-window=no restores the correct size 2021-08-16 11:12:53 +02:00
Frank Skare
9ead5dbd19 #309 support hwdec=auto-safe 2021-08-16 09:07:33 +02:00
Frank Skare
625e887dc1 string escape issue fix 2021-08-15 20:21:43 +02:00
Frank Skare
60cbf894e5 5.4.9.2 Beta 2021-08-08 15:26:54 +02:00
Frank Skare
95a3403898 5.4.9.2 Beta 2021-08-08 14:31:43 +02:00
Frank Skare
fbf50e7466 themed scroll bars, rounded courners, libmpv update 2021-08-08 11:55:43 +02:00
Frank Skare
e9b6988a69 window fix 2021-07-30 08:57:52 +02:00
Frank Skare
8d49c96c57 Drawing flicker in the command palette (playlist) was fixed 2021-07-29 14:25:37 +02:00
Frank Skare
ea56dcdda8 conf editor support for keepaspect-window 2021-07-28 12:28:43 +02:00
stax76
5ef8340ba3 Merge pull request #290 from hooke007/dev
fix a potential bug when switching back to `auto`
2021-07-28 11:37:07 +02:00
hooke007
51e1e85867 fix a potential bug when switching back to auto 2021-07-27 19:08:47 +08:00
Frank Skare
b24f740129 Merge branch 'master' of https://github.com/stax76/mpv.net 2021-07-27 08:50:21 +02:00
Frank Skare
653d66c343 #289 fix line break issue in conf editor 2021-07-27 08:50:19 +02:00
stax76
3dd4ae1bfc Create FUNDING.yml 2021-07-24 10:16:31 +02:00
Frank Skare
27c8ae79e0 update readme 2021-07-24 08:32:43 +02:00
Frank Skare
53e3231452 update readme 2021-07-24 08:31:30 +02:00
Frank Skare
bcf98d847a update readme 2021-07-24 08:28:51 +02:00
Frank Skare
b6ee67d506 Delete License.txt 2021-07-22 19:05:29 +02:00
Frank Skare
3f13747413 Change license from MIT to GPL v2 2021-07-22 17:50:40 +02:00
Frank Skare
54046d5c9d Merge branch 'master' of https://github.com/stax76/mpv.net 2021-07-22 08:43:12 +02:00
Frank Skare
8966f25e06 watch-later-options support added to conf editor 2021-07-22 08:43:09 +02:00
stax76
27fca2cb82 Merge pull request #286 from hooke007/dev
add watch-later-options
2021-07-22 08:41:44 +02:00
hooke007
0d1a17a41a add watch-later-options 2021-07-21 23:06:48 +08:00
Frank Skare
517e4a1142 update changelog 2021-07-19 16:15:16 +02:00
Frank Skare
a380f87b5f Profile selection in the context menu 2021-07-19 15:22:36 +02:00
Frank Skare
35d9d29d40 Support for --keep-open=no 2021-07-19 10:29:13 +02:00
Frank Skare
e1c9d81496 misc 2021-07-19 02:33:32 +02:00
Frank Skare
fbeeb3f015 manual update 2021-07-18 14:54:07 +02:00
Frank Skare
48735a602a #281 handling settings.xml crash 2021-07-17 16:45:34 +02:00
Frank Skare
886f3349ae use pascal casing everywhere 2021-07-15 14:40:59 +02:00
Frank Skare
43c150a18b set pause no before loading file 2021-07-12 00:58:16 +02:00
Frank Skare
33bbc4a2c4 Update delete-current-file.lua 2021-07-11 22:37:37 +02:00
Frank Skare
6c4a014e57 Update delete-current-file.lua 2021-07-02 16:27:25 +02:00
Frank Skare
ce0dd9ceec globalization bug fix 2021-07-01 16:30:55 +02:00
Frank Skare
3520ce6a3f script update 2021-07-01 14:16:05 +02:00
Frank Skare
376f8226ab playlist shows current file 2021-06-28 23:09:09 +02:00
Frank Skare
6b6ae6bfef Changelog update 2021-06-28 10:42:25 +02:00
stax76
b13dbf0b59 Merge pull request #278 from hooke007/dev
doc-manual:chs
2021-06-28 10:37:54 +02:00
stax76
0f7ac5c0ba Merge pull request #277 from soredake/master
Swap screenshot and stop bindings
2021-06-28 10:28:05 +02:00
Frank Skare
25b94bc2c1 new script delete-current-file.lua 2021-06-28 10:27:24 +02:00
hooke007
445730a833 follow upstream's commit 2021-06-27 20:44:01 +08:00
Frank Skare
fd1590142e toml parser replaced with own conf parser 2021-06-27 13:11:34 +02:00
hooke007
c41adc54c5 tiny fix on orig manual & fully translation 2021-06-27 16:21:52 +08:00
hooke007
a3f6b105de doc-manual:chs 2021-06-27 01:26:39 +08:00
soredake
6e402d4931 Swap screenshot and stop bindings 2021-06-26 13:10:37 +03:00
Frank Skare
c40a0d8835 Merge branch 'master' of https://github.com/stax76/mpv.net 2021-06-24 17:22:33 +02:00
Frank Skare
28416dc3d2 Merge branch 'pr/272-improvements-to-input-conf' 2021-06-24 17:20:03 +02:00
Frank Skare
1bde5b6836 misc 2021-06-24 17:19:20 +02:00
stax76
d1619bca22 Merge pull request #276 from hooke007/patch-2
update editor
2021-06-24 16:37:14 +02:00
hooke007
a123c38dfd update editor 2021-06-24 14:05:05 +08:00
stax76
e02d1850a2 Merge pull request #273 from hooke007/patch-1
fix editor's error
2021-06-23 11:54:10 +02:00
Frank Skare
bd37761fc5 readme update 2021-06-23 11:52:59 +02:00
hooke007
897b901c7c fix editor's error
"If this option is unset, the filter implied by scale will be applied."
2021-06-23 15:32:38 +08:00
Frank Skare
da882c3c11 updating screenshots 2021-06-23 09:01:00 +02:00
Frank Skare
bd1a46d18d 5.4.9.1 2021-06-23 07:28:29 +02:00
Frank Skare
1c23c10c81 #268 Fix exception using named pipes 2021-06-23 06:02:02 +02:00
Frank Skare
55f16d2c53 fancy new command palette 2021-06-22 20:54:14 +02:00
Frank Skare
bac8b2b96c misc 2021-06-22 19:10:27 +02:00
soredake
08328c91c4 Improvements to input.conf 2021-06-22 15:11:10 +03:00
Frank Skare
6634ef094c misc 2021-06-20 16:01:04 +02:00
Frank Skare
3b6e6167b0 misc 2021-06-20 11:34:57 +02:00
Frank Skare
f55dfa7a73 misc 2021-06-20 11:29:58 +02:00
Frank Skare
93f0c970da misc 2021-06-20 11:11:51 +02:00
Frank Skare
aa94da9767 #263 enhancing mpv.net option process-instance 2021-06-18 19:43:30 +02:00
Frank Skare
8340c18257 docs 2021-06-17 23:52:25 +02:00
Frank Skare
075e238c46 docs 2021-06-17 23:51:37 +02:00
Frank Skare
6e6b5ae98c docs 2021-06-17 23:49:00 +02:00
Frank Skare
2078ff867b docs 2021-06-17 23:45:58 +02:00
Frank Skare
446d88e16a trying to fix window issues 2021-06-17 17:46:17 +02:00
Frank Skare
ebacaa0341 #140 Fix window size not being saved 2021-06-17 16:32:35 +02:00
Frank Skare
8420abd915 external audio and subtitle tracks 2021-05-31 10:17:55 +02:00
Frank Skare
650c41eb8a Context menu font render quality fix 2021-05-30 19:42:41 +02:00
Frank Skare
db3018bbf5 Show error message box on main window thread. 2021-05-30 15:08:44 +02:00
Frank Skare
539f94d1c9 New media info command 2021-05-30 14:39:15 +02:00
Frank Skare
f56502d8f3 do not load extensions from startup directory 2021-05-30 12:25:57 +02:00
Frank Skare
57ae0d008b 5.4.9.0 2021-05-29 12:17:20 +02:00
Frank Skare
e128a4868b Improved input editor theming 2021-05-28 21:58:32 +02:00
Frank Skare
3875e1c1bf docs 2021-05-28 12:06:34 +02:00
stax76
dd508907eb Merge pull request #253 from hooke007/master
fix some links
2021-05-28 11:47:58 +02:00
Frank Skare
765854cd10 After using the config editor it's no longer necessary to restart mpv.net. 2021-05-28 11:38:36 +02:00
hooke007
69fe7c091a fix some links 2021-05-26 20:31:09 +08:00
Frank Skare
45a2b7f976 AR fix 2021-05-24 21:31:35 +02:00
Frank Skare
a8cf3407e7 #245 Video rotation support added 2021-05-24 20:06:30 +02:00
Frank Skare
b8163c3c3e logo issue fix 2021-05-24 11:13:49 +02:00
Frank Skare
9d27465492 Store settings in settings.xml instead of registry. 2021-05-24 03:09:23 +02:00
Frank Skare
bba71c3782 fix #249 2021-05-23 22:21:59 +02:00
Frank Skare
eaa8a3ca6c removal of TaskDialog usage... 2021-05-23 19:30:21 +02:00
Frank Skare
0b28770d1a - 2021-05-16 16:49:43 +02:00
Frank Skare
45d3386a88 Improved cycle-audio OSD info 2021-05-13 23:10:45 +02:00
Frank Skare
8df330b7aa High DPI multi monitor fix 2021-05-13 11:53:36 +02:00
Frank Skare
69857e0548 new window features 2021-05-11 17:55:37 +02:00
Frank Skare
b1388e10e5 working on start-size option 2021-05-11 10:19:14 +02:00
Frank Skare
6f7f127279 reworked start-size option 2021-05-10 13:11:39 +02:00
Frank Skare
18c8f5783b 5.4.8.8 Beta 2021-05-09 15:50:09 +02:00
Frank Skare
cdf3eb1373 docs 2021-05-07 11:19:09 +02:00
Frank Skare
e5bcd0fc29 argh 2021-05-07 11:14:53 +02:00
Frank Skare
b0dc44a98e argh 2021-05-07 11:14:32 +02:00
Frank Skare
41a14cd3b7 argh 2021-05-07 11:12:59 +02:00
Frank Skare
b38c7cf834 argh 2021-05-07 11:12:25 +02:00
Frank Skare
2ee4c1e647 manual 2021-05-07 11:04:24 +02:00
Frank Skare
2bcf97a97a option --command to send input commands 2021-05-07 10:55:41 +02:00
Frank Skare
8eaec77b0c manual update 2021-05-06 16:45:55 +02:00
Frank Skare
3161ba1022 rating extension update 2021-05-06 16:42:07 +02:00
Frank Skare
496bba71d4 manual URL fixes 2021-05-06 16:30:09 +02:00
Frank Skare
3e1e822e56 docs URL fix 2021-05-06 16:08:09 +02:00
Frank Skare
b1ea6da39b URL fix 2021-05-06 15:52:26 +02:00
Frank Skare
8d54abae4c URL fix 2021-05-06 15:44:19 +02:00
Frank Skare
3583aa11ed new folder structure and new C# script host 2021-05-06 15:23:28 +02:00
Frank Skare
642c36bacf wpf error handling 2021-04-30 15:09:31 +02:00
Frank Skare
0343b32847 proper mpv title property implementation 2021-04-30 14:53:41 +02:00
Frank Skare
6e2d11952f misc... 2021-04-30 11:50:41 +02:00
Frank Skare
d0ad69656a Command palette shows commands without assigned menu item 2021-03-10 16:40:31 +01:00
Frank Skare
62789fa036 Implementation for the mpv title property.
mpv window-scale property works now exactly like in mpv.
2021-03-10 13:28:39 +01:00
Frank Skare
a7fe444067 manual update 2021-03-09 10:37:59 +01:00
Frank Skare
1ef4740b09 mpv.net specific options added to manual 2021-03-09 10:28:04 +01:00
Frank Skare
c5e445da17 error message removal and release script fix 2021-03-09 09:15:47 +01:00
Frank Skare
a52de9039d 5.4.8.7 Beta 2021-03-09 07:23:26 +01:00
Frank Skare
8db8e497a5 File associations and auto-load-folder can be customized 2021-03-09 06:56:55 +01:00
Frank Skare
28c9b2710c Support of --version command 2021-02-16 10:03:35 +01:00
Frank Skare
6ba9b1f05a Win 10 default code page changed to UTF8 2020-12-30 01:01:48 +01:00
Frank Skare
ea5d3e64ee Web stream audio and subtitle track selection 2020-12-29 06:00:06 +01:00
Frank Skare
636d28ac54 history feature can be configured 2020-12-28 02:30:45 +01:00
Frank Skare
6e54286a60 5.4.8.6 Beta 2020-12-24 11:39:20 +01:00
Frank Skare
b396012934 Santa hat shown in december 2020-12-24 11:24:03 +01:00
Frank Skare
f3909acdfe #218 2020-12-15 18:13:38 +01:00
Frank Skare
3ed71444a7 fix setup dialog issue 2020-12-15 18:12:10 +01:00
Frank Skare
cab7c6d49b update manual 2020-12-15 17:28:53 +01:00
Frank Skare
368641523a new menu image 2020-12-14 20:29:46 +01:00
Frank Skare
42c76d25c6 update readme 2020-12-14 00:52:06 +01:00
Frank Skare
3968fa50f5 #214 Filename not being always shown in title bar. 2020-12-13 23:08:16 +01:00
Frank Skare
4d985c7b7c misc... 2020-12-13 08:12:50 +01:00
Frank Skare
235a52a701 remove 7z from release 2020-12-11 17:54:02 +01:00
Frank Skare
9a63b660de 5.4.8.5 Beta 2020-12-11 17:49:51 +01:00
Frank Skare
8eb0222873 setup redesign 2020-12-10 15:54:32 +01:00
Frank Skare
bf8636135a setup redesign 2020-12-09 22:01:33 +01:00
Frank Skare
33cdee5497 show setup dialog on new startup location 2020-12-09 09:56:51 +01:00
Frank Skare
564d7b10a0 improved setup dialog 2020-12-08 18:54:50 +01:00
Frank Skare
a1a408da1d improved setup dialog 2020-12-06 16:54:06 +01:00
Frank Skare
85a3506403 misc... 2020-12-02 03:40:38 +01:00
Frank Skare
e860cf52c4 Merge branch 'master' of https://github.com/stax76/mpv.net 2020-11-25 16:21:55 +01:00
Frank Skare
32a46e47e2 New feature for rating extension 2020-11-25 16:21:53 +01:00
stax76
538e91aaa9 New option global-media-keys 2020-10-08 18:07:23 +02:00
stax76
94eaf8144f cleanup 2020-10-08 17:56:49 +02:00
stax76
404a8f110d global media keys 2020-10-08 17:34:27 +02:00
Frank Skare
14f5228754 AviSynth portable mode 2020-08-03 20:42:48 +02:00
Frank Skare
5ec2d1b436 Merge branch 'master' of https://github.com/stax76/mpv.net 2020-07-28 15:38:21 +02:00
Frank Skare
32c6ce3a44 docs update 2020-07-28 15:36:57 +02:00
stax76
b86148dfb3 Update issue templates 2020-07-28 15:11:46 +02:00
stax76
26e94fad2b Update issue templates 2020-07-28 15:10:35 +02:00
Frank Skare
c306eb032f 5.4.8.4 Beta 2020-07-26 04:04:35 +02:00
Frank Skare
09944583dd message asking if image is BD or DVD 2020-07-26 04:03:56 +02:00
Frank Skare
8f4ad52469 Cycle audio was not working for BluRay 2020-07-26 03:34:57 +02:00
Frank Skare
5f4eca21e5 BluRay folder path auto detection 2020-07-26 03:19:35 +02:00
Frank Skare
b4632a0b6e fix slow BluRay menu 2020-07-26 02:19:29 +02:00
Frank Skare
c14a11170d 5.4.8.3 Beta 2020-07-25 12:51:16 +02:00
Frank Skare
723005b28f fix issue 188 2020-07-25 12:45:47 +02:00
Frank Skare
72f25a686e default screen and mouse wheel fix 2020-07-25 11:40:33 +02:00
stax76
b1fb940759 Merge pull request #184 from arnesacnussem/master
fix for #124
2020-07-02 14:37:11 +02:00
Arne
1020cd70d1 fix for #124
wheel_left and wheel_right still can't be detected in `Learn Input` window.
2020-06-30 20:41:05 +08:00
Frank Skare
50a2f13dbe 5.4.8.2 Beta 2020-06-23 02:41:29 +02:00
Frank Skare
b1ffb8291f Merge branch 'master' of https://github.com/stax76/mpv.net 2020-06-20 03:35:29 +02:00
Frank Skare
dbc8ddaf2b misc 2020-06-20 03:35:27 +02:00
stax76
b42cb6be05 Merge pull request #170 from Naomi010Sentzke/patch-1
Manual.md : Remove Chocolatey and Appget
2020-05-21 20:43:09 +02:00
Naomi Sentzke
b63363336f Update Manual.md 2020-05-19 10:38:34 +05:30
Frank Skare
b0ef161ed9 fix stdin support 2020-05-12 18:18:04 +02:00
Frank Skare
7d31237d5f fix release script 2020-05-11 17:14:23 +02:00
Frank Skare
3705e2abbf 5.4.8.0 2020-05-11 17:08:01 +02:00
Frank Skare
7d73529c83 fix beep sound when closed from taskbar 2020-05-11 12:16:40 +02:00
Frank Skare
2e59d49ad1 2 bugs fixed 2020-05-11 03:51:52 +02:00
Frank Skare
f61eef8961 5.4.7.4 Beta 2020-05-10 07:01:59 +02:00
Frank Skare
efb4c085d5 fix release script 2020-05-08 15:56:54 +02:00
Frank Skare
4a045d6a91 setting media-keys added 2020-05-08 15:32:47 +02:00
Frank Skare
da1a78cfa3 5.4.7.2 Beta 2020-05-08 09:22:19 +02:00
Frank Skare
5b3697fbde built-in WM_APPCOMMAND support 2020-05-08 08:26:44 +02:00
Frank Skare
726d759589 misc 2020-05-07 13:32:23 +02:00
Frank Skare
ed614332f7 misc 2020-05-07 13:21:59 +02:00
Frank Skare
9d46064dca 5.4.7.1 Beta 2020-05-07 11:47:09 +02:00
Frank Skare
407b49b3ad 5.4.7.0 2020-05-06 18:51:38 +02:00
Frank Skare
0e92d4ec0c 5.4.7.0 2020-05-06 18:43:20 +02:00
Frank Skare
4f96835e19 support avisynth portable 2020-05-06 11:11:09 +02:00
Frank Skare
56d954d94e manual 2020-05-04 16:30:39 +02:00
Frank Skare
a8aeb1e3e9 manual 2020-05-04 16:28:59 +02:00
Frank Skare
415fd266a2 log error fix 2020-05-04 15:15:40 +02:00
Frank Skare
51f9e17380 5.4.6.0 2020-05-04 05:50:29 +02:00
Frank Skare
28045ad33e 5.4.5.1 Beta 2020-05-03 11:10:56 +02:00
Frank Skare
e1bd44cd00 5.4.5.0 2020-05-01 22:02:03 +02:00
Frank Skare
27d6026213 misc 2020-04-27 15:41:16 +02:00
Frank Skare
c67d5f10f8 manual 2020-04-25 23:59:05 +02:00
Frank Skare
5f73be07e8 URL fix 2020-04-25 15:59:51 +02:00
Frank Skare
0cad09d2bb 5.4.4.6 Beta 2020-04-25 15:56:34 +02:00
Frank Skare
54b2612bb8 5.4.4.6 Beta 2020-04-25 15:36:56 +02:00
Frank Skare
82b4d19282 5.4.4.5 Beta 2020-04-23 22:55:45 +02:00
Frank Skare
23a587c819 manual 2020-04-23 12:55:02 +02:00
Frank Skare
d69eecd494 readme 2020-04-23 12:27:43 +02:00
Frank Skare
0d4cc59f9a manual 2020-04-23 12:15:12 +02:00
Frank Skare
a394536a8c readme and manual 2020-04-23 11:35:44 +02:00
Frank Skare
ebcd20ceb5 manual 2020-04-22 19:41:50 +02:00
Frank Skare
964c2f4dd2 manual 2020-04-22 19:39:17 +02:00
Frank Skare
e985047a54 manual 2020-04-22 19:33:58 +02:00
Frank Skare
bafc09a948 manual 2020-04-22 19:24:34 +02:00
Frank Skare
14a172b78b scripting docs 2020-04-22 19:17:12 +02:00
Frank Skare
2eb324bf41 manual 2020-04-22 08:25:31 +02:00
Frank Skare
afe9ad5128 misc 2020-04-22 08:15:28 +02:00
Frank Skare
cc657d4ec2 misc 2020-04-22 08:14:55 +02:00
Frank Skare
1270dd474e 5.4.4.4 Beta 2020-04-22 08:04:26 +02:00
stax76
e9ea70838d Merge pull request #152 from Restia666Ashdoll/patch-1
Update Manual.md - Replace External Application Button with Open With
2020-04-22 05:54:49 +02:00
Frank Skare
e7fde60150 full implementation for window-minimized and window-maximized 2020-04-22 05:52:11 +02:00
Restia666Ashdoll
2028113d58 Update Manual.md 2020-04-21 18:41:57 +05:30
Frank Skare
4d55423fc7 scripts moved from wiki to folder 2020-04-21 04:31:10 +02:00
Frank Skare
d82874409d rename scripts folder 2020-04-21 04:02:25 +02:00
Frank Skare
930ba2b0e7 crash fixed when PowerShell 5.1 is not available 2020-04-21 03:39:31 +02:00
Frank Skare
4743f365a1 readme 2020-04-19 20:43:09 +02:00
Frank Skare
194ff5d62b 5.4.4.3 Beta 2020-04-19 20:40:26 +02:00
Frank Skare
5a726a01e0 window maximized issue 2020-04-19 20:14:46 +02:00
Frank Skare
fee13353ec seek-show-position script removed 2020-04-19 18:51:54 +02:00
Frank Skare
cd3543fff4 misc 2020-04-19 03:16:00 +02:00
Frank Skare
c54f240346 docs 2020-04-15 20:28:30 +02:00
Frank Skare
7f55ad908a start-size supports always 2020-04-15 14:25:45 +02:00
Frank Skare
d586a82e37 changelog 2020-04-15 04:03:06 +02:00
Frank Skare
722e06a02b window-maximized support added 2020-04-13 03:42:36 +02:00
Frank Skare
2f76d2b775 Merge branch 'master' of https://github.com/stax76/mpv.net 2020-04-12 21:54:44 +02:00
Frank Skare
7519977124 misc 2020-04-12 21:54:41 +02:00
stax76
2e65b9ceb8 Update issue templates 2020-04-12 21:53:26 +02:00
stax76
04bffca206 Update issue templates 2020-04-12 21:52:11 +02:00
Frank Skare
ff5a164c69 cleanup MediaInfo class 2020-03-22 00:55:33 +01:00
Frank Skare
26b391a8d9 5.4.4.2 2020-03-21 08:28:37 +01:00
Frank Skare
32eed33c82 misc 2020-03-21 06:43:54 +01:00
Frank Skare
639893f2e7 misc 2020-03-20 17:47:46 +01:00
Frank Skare
42b0cc1a64 5.4.4.2 2020-03-20 01:22:26 +01:00
Frank Skare
6f7fa6c9d6 readme fix 2020-03-17 19:41:33 +01:00
Frank Skare
e6fb775dcd 5.4.4.1 2020-03-17 19:36:07 +01:00
Frank Skare
ece15ca9bb fix issue enlarging or shrinking the window size via keyboard 2020-03-17 00:18:09 +01:00
Frank Skare
6b3c2788df new: blue color in dark theme is now less intense 2020-03-16 03:50:18 +01:00
Frank Skare
067bdd20d7 minor changes 2020-03-16 03:31:26 +01:00
Frank Skare
97ce08c4c7 script-message mpv.net playlist-first 2020-03-07 14:12:02 +01:00
Frank Skare
fbb9cbdc33 docs 2020-03-03 23:43:49 +01:00
Frank Skare
815adca198 Merge branch 'master' of https://github.com/stax76/mpv.net 2020-03-03 23:03:03 +01:00
Frank Skare
ce3d5792ad readme update 2020-03-03 23:02:40 +01:00
stax76
74fc0b3ed7 Merge pull request #126 from Restia666Ashdoll/patch-1
Add AppGet to README
2019-12-05 13:51:57 +01:00
Restia666Ashdoll
604a1e8499 Update README.md 2019-12-05 16:00:42 +05:30
stax76
56ade0a0d1 Merge pull request #118 from Restia666Ashdoll/patch-1
External Application Button is also on Firefox
2019-12-02 01:25:01 +01:00
Frank Skare
6294a96aea fix update routine 2019-12-02 01:22:12 +01:00
Restia666Ashdoll
9a95953a04 Update Manual.md 2019-11-18 21:05:57 +05:30
Frank Skare
8d9c0c9092 readme update 2019-11-17 16:02:16 +01:00
Frank Skare
e399ca672f update readme 2019-11-17 15:52:56 +01:00
Frank Skare
660345d18a update script change 2019-11-17 14:49:42 +01:00
Frank Skare
3844db6e79 5.4.4.0 2019-11-17 14:40:08 +01:00
Frank Skare
5374e20757 update changelog 2019-11-15 16:44:20 +01:00
Frank Skare
bc6167c4ee new libmpv added to changelog 2019-11-15 16:41:37 +01:00
stax76
7979f77284 Merge pull request #117 from Restia666Ashdoll/patch-2
Update Changelog.md
2019-11-14 14:22:57 +01:00
Restia666Ashdoll
71b90ed5cb Update Changelog.md 2019-11-13 21:29:08 +00:00
Frank Skare
9d2e236b3e update csproj 2019-11-13 18:33:20 +01:00
Frank Skare
d42657a3f0 release script added 2019-11-13 18:23:55 +01:00
Frank Skare
e4818fae18 update script added to csproj 2019-11-13 15:01:08 +01:00
Frank Skare
7b39bfcbc4 forecolors in the dark theme are slightly darker now 2019-11-13 14:56:36 +01:00
Frank Skare
fd6f3c94dd manual update 2019-11-13 13:55:50 +01:00
Frank Skare
dd10c07fb5 manual update 2019-11-13 13:41:14 +01:00
Frank Skare
3bbfdcffdd manual update 2019-11-13 13:36:21 +01:00
Frank Skare
6b7c4e1724 readme and manual update 2019-11-13 13:28:06 +01:00
Frank Skare
d3ad1091ec manual update 2019-11-12 22:03:05 +01:00
Frank Skare
65177c448b update manual 2019-11-12 21:57:07 +01:00
Frank Skare
1cdecb3810 manual update 2019-11-12 21:52:38 +01:00
Frank Skare
20ea755a93 update check and update routine 2019-11-12 21:50:38 +01:00
stax76
3b7bc95869 Merge pull request #115 from Restia666Ashdoll/patch-1
Wrong Chocolatey install method
2019-11-10 23:25:34 +01:00
Frank Skare
5380daad53 Merge branch 'master' of https://github.com/stax76/mpv.net 2019-11-10 23:22:23 +01:00
Frank Skare
a5f4d848d4 changelog and update check 2019-11-10 23:22:20 +01:00
Restia666Ashdoll
cf0f9bfa01 Update README.md 2019-11-10 22:20:09 +00:00
stax76
68461e05da Merge pull request #114 from Restia666Ashdoll/patch-2
Scoop and Chocolatey installation method in README.md
2019-11-10 23:13:59 +01:00
Restia666Ashdoll
397b988851 Update README.md 2019-11-11 03:29:14 +05:30
Frank Skare
eddb95e791 often the OSC was shown when fullscreen was entered 2019-11-02 11:39:15 +01:00
Frank Skare
fa1183710b fix theme issue 2019-11-01 17:16:34 +01:00
Frank Skare
f468fd9c56 manual update 2019-11-01 16:54:17 +01:00
Frank Skare
22f2aa93a8 manual update 2019-11-01 16:44:48 +01:00
Frank Skare
c2c0a8f190 5.4.3.0 2019-11-01 16:38:54 +01:00
Frank Skare
da3e6655c6 manual improvement 2019-11-01 16:18:27 +01:00
Frank Skare
856959a4d1 manual improvement 2019-11-01 16:15:59 +01:00
Frank Skare
9053ecb4ee clear button style 2019-11-01 14:01:03 +01:00
Frank Skare
33fd7fc09b manual improvement 2019-11-01 13:07:20 +01:00
Frank Skare
d005f19755 manual improvement 2019-11-01 13:02:57 +01:00
Frank Skare
1081007009 manual improvement 2019-11-01 13:01:37 +01:00
Frank Skare
e6c0a67483 manual improvement 2019-11-01 12:57:27 +01:00
Frank Skare
265e18985d theme docs 2019-11-01 12:31:47 +01:00
Frank Skare
8dc204e81a new theme feature 2019-11-01 12:16:20 +01:00
Frank Skare
b9b604bfe3 multi select files in File Explorer fix 2019-10-30 17:31:19 +01:00
Frank Skare
05027cd458 fix: window restore was broken 2019-10-29 14:34:51 +01:00
Frank Skare
9bbde49a5c design improvement 2019-10-15 19:01:56 +02:00
Frank Skare
cfca7786f3 changelog update 2019-10-15 05:58:31 +02:00
Frank Skare
be57edf2c5 5.4.2.1 2019-10-15 05:58:00 +02:00
Frank Skare
f48901355a - 2019-10-15 05:01:09 +02:00
Frank Skare
ca153fecfc update readme 2019-10-15 04:58:52 +02:00
Frank Skare
e3227de8b4 changelog updated 2019-10-14 16:02:24 +02:00
Frank Skare
4a202245b5 window-size mpv property support added 2019-10-14 15:50:20 +02:00
Frank Skare
b94f9de582 switch --queue added 2019-10-14 12:10:30 +02:00
Frank Skare
7371949730 pressing shift key suppresses auto-load-folder 2019-10-14 11:47:22 +02:00
Frank Skare
857926696c update changelog 2019-10-13 05:47:09 +02:00
Frank Skare
4451a6c185 5.4.2 2019-10-13 05:45:50 +02:00
Frank Skare
ea6a71b7c3 restore resulted in collapsed window when maximized = yes was used 2019-10-13 05:15:41 +02:00
Frank Skare
625dddcfbb clipboard monitoring feature removed because it was causing to many issues 2019-10-13 04:37:18 +02:00
Frank Skare
0cd769fc0c the log feature was not working 2019-10-13 04:12:48 +02:00
Frank Skare
f5e0c92824 new screenshot 2019-10-09 07:05:46 +02:00
Frank Skare
327a097bcf there was a sound when closed from taskbar due to a exception 2019-10-04 17:36:14 +02:00
Frank Skare
68626fa536 for URLs the media title is shown in the title bar 2019-10-01 01:19:01 +02:00
Frank Skare
8935101058 fix issue with clipboard url detection 2019-09-28 04:01:10 +02:00
Frank Skare
6947c925b9 Toggle Shuffle has been added to the menu defaults 2019-09-27 22:41:36 +02:00
Frank Skare
4562131078 support added for --list-properties 2019-09-20 04:45:24 +02:00
Frank Skare
21188f0942 test 2019-09-11 11:04:10 +02:00
Frank Skare
1316559ebc test 1 2019-09-11 11:02:43 +02:00
Frank Skare
cd576f9211 manual updated 2019-09-11 10:26:42 +02:00
Frank Skare
1bac8e8937 update changelog 2019-09-09 07:37:02 +02:00
Frank Skare
e6d0449f8f update changelog 2019-09-09 07:13:19 +02:00
Frank Skare
e0e40b7918 improved python error messages 2019-09-09 07:09:10 +02:00
Frank Skare
b59f16a425 improved PowerShell scrip host 2019-09-09 05:56:08 +02:00
Frank Skare
46b110d93b improved PowerShell scrip host 2019-09-09 00:46:08 +02:00
Frank Skare
7e8a654ada improved PowerShell scrip host 2019-09-08 22:16:58 +02:00
Frank Skare
c2c33228a0 a issue with the taskbar-progress feature was fixed 2019-09-06 04:32:39 +02:00
Frank Skare
0a28f13d51 5.4 Release 2019-09-05 19:00:54 +02:00
Frank Skare
9f3a1da931 fix relative file path not found 2019-09-05 09:12:19 +02:00
Frank Skare
05874ad6be update changelog 2019-09-05 08:15:13 +02:00
Frank Skare
078e8046bd added taskbar-progress implementation 2019-09-05 06:20:44 +02:00
Frank Skare
b07901485e fixed history being written even when history file wasn't created prior 2019-08-28 09:36:10 +02:00
Frank Skare
a37cbef8a8 long file names work now even if not enabled by the OS 2019-08-21 17:21:04 +02:00
Frank Skare
8debcc171c added new setting to start with maximized window 2019-08-21 16:52:09 +02:00
Frank Skare
e230f0f474 osc=yes and input-media-keys=yes was enforced, can now be disabled in mpv.conf 2019-08-16 19:37:07 +02:00
Frank Skare
558bd67591 update readme 2019-08-11 05:53:42 +02:00
Frank Skare
a7e4892acf update readme 2019-08-11 05:53:05 +02:00
Frank Skare
a0ba69c1aa readme update 2019-08-11 05:52:22 +02:00
Frank Skare
1e7e80577d 5.3 Release 2019-08-11 05:47:17 +02:00
Frank Skare
2177308b02 new config setting recent-count added 2019-08-11 04:58:42 +02:00
Frank Skare
a8c2409ed1 new menu items added to navigate to the first and last playlist position 2019-08-09 01:59:20 +02:00
Frank Skare
1ef9e64a41 scale, cscale, dscale defaults have been set to spline36 2019-08-08 19:07:27 +02:00
Frank Skare
f0546485cf Open > Open DVD/Blu-ray Drive/Folder 2019-08-08 18:45:34 +02:00
Frank Skare
032e91e4b4 mpv setting osd-scale-by-window added to config dialog 2019-08-08 03:31:57 +02:00
Frank Skare
1447636eb7 fixed race condition causing various features to fail 2019-08-07 13:16:05 +02:00
Frank Skare
966f96a02b 5.2 Release 2019-08-06 18:44:40 +02:00
Frank Skare
954c014708 bug fix for logo not shown on start 2019-08-06 01:49:51 +02:00
Frank Skare
ad30dc5ae2 command line processing was improved 2019-08-05 03:06:40 +02:00
Frank Skare
3f74344b99 terminal screenshot 2019-08-01 20:29:43 +02:00
Frank Skare
96d8d88d09 readme update 2019-08-01 12:54:15 +02:00
Frank Skare
8626b8283f improved error handling 2019-08-01 11:47:01 +02:00
Frank Skare
d90025e8fe misc 2019-08-01 04:45:11 +02:00
Frank Skare
a572bd8553 new setting remember-volume added 2019-07-31 08:01:03 +02:00
Frank Skare
0f5146e58c startup folder and config folder beeing identical is no longer a supported scenaria 2019-07-29 22:48:08 +02:00
Frank Skare
9c6c0f3506 fix issue with startup folder and config folder beeing identical 2019-07-29 22:05:06 +02:00
Frank Skare
8c36cc8b8c improved error handling 2019-07-29 14:14:23 +02:00
Frank Skare
44435057d7 improved error handling, new setup dialog 2019-07-29 13:59:30 +02:00
Frank Skare
135bdeb638 fixed issue in file associations causing mpv.net not to appear in OS default apps 2019-07-28 23:03:38 +02:00
Frank Skare
93c93b620d update readme 2019-07-28 01:24:17 +02:00
stax76
247aefbf07 update readme.md 2019-07-28 01:08:44 +02:00
Frank Skare
0a8397652f input editor improvements 2019-07-27 23:46:53 +02:00
Frank Skare
ecd5b01161 Merge branch 'master' of https://github.com/stax76/mpv.net 2019-07-27 19:23:44 +02:00
Frank Skare
1e9893977d refactoring 2019-07-27 19:23:42 +02:00
stax76
4fd6b13e0f Update ScriptingExtension.cs 2019-07-27 04:54:00 +02:00
stax76
d21d36c196 Update ScriptingExtension.cs 2019-07-27 04:51:05 +02:00
stax76
fbffbea641 Update RatingExtension.cs 2019-07-27 04:41:18 +02:00
Frank Skare
9899c2cd27 readme update 2019-07-27 03:02:02 +02:00
Frank Skare
10370e9ae2 removed 'Tools > Execute mpv command', mpv-repl is better 2019-07-27 02:28:30 +02:00
Frank Skare
d391e24784 5.0 Release 2019-07-27 01:53:30 +02:00
Frank Skare
430fef0ac4 default colors for dark-color and light-color added 2019-07-27 01:33:59 +02:00
Frank Skare
8430842679 misc 2019-07-27 01:17:25 +02:00
Frank Skare
9d37e67901 terminal support added via mpvnet.com 2019-07-26 18:32:42 +02:00
Frank Skare
e98ff53058 Merge branch 'master' of https://github.com/stax76/mpv.net 2019-07-26 03:22:20 +02:00
Frank Skare
b47d3c34f2 mpv.net attaches now to the parent terminal 2019-07-26 03:22:17 +02:00
stax76
54dd261df0 Merge pull request #56 from floppyD/patch-1
Fixed typo
2019-07-26 03:20:51 +02:00
floppyD
8eb7e41d16 Fixed typo 2019-07-25 20:43:48 -03:00
Frank Skare
2068bfb6fa new JavaScript added to show playlist with small font size 2019-07-25 12:27:13 +02:00
Frank Skare
dfc1ac712e extension changes 2019-07-25 02:22:16 +02:00
Frank Skare
d96587cb7b Addon renamed to Extension everywhere 2019-07-25 01:34:36 +02:00
Frank Skare
005550af55 changelog update 2019-07-24 20:11:40 +02:00
Frank Skare
543e2905cc mpv.conf preview feature added to config editor 2019-07-24 20:02:45 +02:00
Frank Skare
a49b9bea61 config editor support for all screenshot settings 2019-07-24 19:04:04 +02:00
Frank Skare
9ea9cb2757 - 2019-07-23 08:36:49 +02:00
Frank Skare
5543381a14 - 2019-07-23 08:36:34 +02:00
Frank Skare
cd6dcf4640 modified icon 2019-07-23 08:28:52 +02:00
Frank Skare
d321ab477f key binding MBTN_Mid 2019-07-21 20:31:47 +02:00
Frank Skare
1cd0f87278 readme, manual and AssemblyInfo.cs updated 2019-07-21 20:10:35 +02:00
Frank Skare
936274fc3b new main screenshot, about dialog for rating addon 2019-07-21 19:56:19 +02:00
Frank Skare
2bbaa30322 options autofit-smaller, autofit-larger added 2019-07-21 19:22:17 +02:00
Frank Skare
cedd54d64d start-threshold setting added 2019-07-21 17:06:55 +02:00
Frank Skare
38604459a6 update changelog 2019-07-20 17:54:52 +02:00
Frank Skare
0a48a0dc6f new logic to find the settings folder 2019-07-20 17:53:34 +02:00
Frank Skare
85a23fbae1 tweaks and refactoring 2019-07-18 05:47:16 +02:00
Frank Skare
01da76bdc4 fix changelog 2019-07-17 19:22:47 +02:00
Frank Skare
1f1553e159 - 2019-07-17 19:04:24 +02:00
Frank Skare
2af84941ca color theme related improvements 2019-07-17 18:18:33 +02:00
Frank Skare
a82f558acf - 2019-07-14 12:22:50 +02:00
Frank Skare
d13f7201ba - 2019-07-14 06:16:52 +02:00
Frank Skare
89aa0c6133 added image format support to the info command, to file association management, to folder loading, to Everything 2019-07-14 06:07:25 +02:00
Frank Skare
1699467e0d added image format support for the info command 2019-07-14 05:52:23 +02:00
Frank Skare
7a27ab0513 added file size to info command using audio files 2019-07-14 05:38:53 +02:00
Frank Skare
2a0c68e4ec - 2019-07-14 05:15:59 +02:00
Frank Skare
91c42d4d3f - 2019-07-14 05:04:22 +02:00
Frank Skare
49d56166d7 - 2019-07-14 04:34:45 +02:00
Frank Skare
1ac603b904 - 2019-07-14 04:03:58 +02:00
Frank Skare
d5b2923c68 reorganize code for easier scripting 2019-07-14 02:06:23 +02:00
Frank Skare
b80b375df1 move code before base.OnShown so scripts can use the ContextMenu 2019-07-14 01:40:13 +02:00
Frank Skare
2b2b60b90f fix rotating cursor 2019-07-13 19:22:51 +02:00
Frank Skare
3977283ecb minor tweak 2019-07-13 17:49:39 +02:00
Frank Skare
d27778775d few layout problems were fixed, autosize for instance did not work 2019-07-13 16:35:42 +02:00
Frank Skare
5c053bb5eb fix borderless window not minimizable from taskbar 2019-07-13 03:24:15 +02:00
Frank Skare
83658aa476 - 2019-07-12 23:53:43 +02:00
Frank Skare
e0111b6f12 - 2019-07-12 06:23:53 +02:00
Frank Skare
e308bbf928 - 2019-07-11 23:55:07 +02:00
Frank Skare
1817fbc0fd - 2019-07-09 09:17:35 +02:00
Frank Skare
3b149aea54 - 2019-07-08 18:18:55 +02:00
Frank Skare
7575a2d736 - 2019-07-06 23:51:28 +02:00
Frank Skare
17c198e711 - 2019-07-06 23:46:14 +02:00
Frank Skare
1f8635e9c4 - 2019-07-06 09:35:14 +02:00
Frank Skare
37e6c198a1 - 2019-07-06 03:46:36 +02:00
Frank Skare
751c8779f4 - 2019-07-06 02:39:25 +02:00
Frank Skare
9e2bf46636 - 2019-07-05 07:17:58 +02:00
Frank Skare
3529323d93 - 2019-07-05 06:36:15 +02:00
Frank Skare
ba52c1f8b5 - 2019-07-05 05:40:14 +02:00
Frank Skare
bf2070d758 - 2019-07-05 05:38:52 +02:00
Frank Skare
7a1de4cf0f - 2019-07-05 05:05:37 +02:00
Frank Skare
caf0bee161 - 2019-07-01 04:17:16 +02:00
Frank Skare
cedd694e8e - 2019-07-01 02:45:22 +02:00
Frank Skare
d1c58585f5 - 2019-06-30 07:16:28 +02:00
Frank Skare
0fce626c46 - 2019-06-30 07:14:13 +02:00
Frank Skare
adb8f38c0d - 2019-06-30 02:09:30 +02:00
Frank Skare
735ee42580 - 2019-06-30 02:07:16 +02:00
Frank Skare
103ae81b8b - 2019-06-29 12:36:35 +02:00
Frank Skare
8e351193e1 - 2019-06-27 10:35:37 +02:00
Frank Skare
d57b9281a1 - 2019-06-27 07:51:19 +02:00
Frank Skare
e07627377e - 2019-06-27 07:44:23 +02:00
Frank Skare
8899f4b772 - 2019-06-27 06:59:34 +02:00
Frank Skare
e7fd268927 - 2019-06-27 02:43:17 +02:00
Frank Skare
c8fe3a4c43 - 2019-06-26 16:06:41 +02:00
Frank Skare
19c2502c31 - 2019-06-26 03:23:40 +02:00
Frank Skare
56dae4babd - 2019-06-26 03:16:40 +02:00
Frank Skare
bc20d7527c - 2019-06-26 02:54:59 +02:00
Frank Skare
3d325d4fe5 - 2019-06-25 05:14:58 +02:00
Frank Skare
ba0141cfb1 - 2019-06-24 09:04:18 +02:00
Frank Skare
d32c7b4056 - 2019-06-24 09:00:01 +02:00
Frank Skare
63f064ba1c - 2019-06-24 07:52:30 +02:00
Frank Skare
e5c9df31e4 - 2019-06-22 06:27:22 +02:00
Frank Skare
c0a8e895f7 - 2019-06-19 18:22:40 +02:00
Frank Skare
064ae44ecf - 2019-06-19 18:03:14 +02:00
Frank Skare
005ba6e5ea - 2019-06-18 16:20:02 +02:00
Frank Skare
9f6aba6cbd - 2019-06-18 16:08:28 +02:00
Frank Skare
87e3d9ca3e - 2019-06-17 21:35:14 +02:00
Frank Skare
29a0eae3d5 - 2019-06-16 12:46:04 +02:00
Frank Skare
01b2492cde - 2019-06-16 12:28:15 +02:00
Frank Skare
d2b1ca0c69 - 2019-06-16 12:18:36 +02:00
Frank Skare
91b429e6b0 4.2 2019-06-16 12:12:51 +02:00
Frank Skare
fa05e95892 - 2019-06-16 12:02:46 +02:00
Frank Skare
701a58a4bf - 2019-06-16 11:53:28 +02:00
Frank Skare
387c3f7896 - 2019-06-16 11:48:15 +02:00
Frank Skare
eeb0189577 - 2019-06-16 11:47:03 +02:00
Frank Skare
de4c2d6d70 - 2019-06-16 11:44:41 +02:00
Frank Skare
63ee598ebd support added to force single instance 2019-06-16 10:00:14 +02:00
Frank Skare
1bf8e568c5 - 2019-06-14 01:03:18 +02:00
Frank Skare
f8f58dba5e - 2019-06-14 00:23:51 +02:00
Frank Skare
ebb8ad351a - 2019-06-13 22:29:23 +02:00
Frank Skare
0202c34c6f - 2019-06-07 23:58:25 +02:00
Frank Skare
c3f2b22ff5 - 2019-06-01 15:15:41 +02:00
Frank Skare
c1a03c3e4b - 2019-05-31 04:19:41 +02:00
Frank Skare
e041908f04 drag & drop support for subtitles added 2019-05-31 04:18:05 +02:00
Frank Skare
270559c3f7 - 2019-05-27 18:53:27 +02:00
Frank Skare
0dfd19eb45 - 2019-05-27 18:48:12 +02:00
Frank Skare
9cdba6d2f2 - 2019-05-27 18:43:23 +02:00
Frank Skare
50bf09ff8d - 2019-05-27 18:37:59 +02:00
Frank Skare
c54fa708f8 - 2019-05-27 16:29:44 +02:00
Frank Skare
7698e873ca - 2019-05-27 16:06:21 +02:00
Frank Skare
89b8de2c40 - 2019-05-27 15:51:15 +02:00
Frank Skare
259d2d882a - 2019-05-27 15:33:24 +02:00
Frank Skare
b7fbef5a88 - 2019-05-27 15:29:45 +02:00
Frank Skare
0ca9ac93f1 - 2019-05-27 05:10:38 +02:00
Frank Skare
f7b3900a0a - 2019-05-27 04:53:47 +02:00
Frank Skare
c98036dc42 - 2019-05-27 04:48:09 +02:00
Frank Skare
a9e7ae4b97 - 2019-05-27 04:45:35 +02:00
Frank Skare
30fb744114 - 2019-05-27 04:39:52 +02:00
Frank Skare
d465516a6a - 2019-05-27 04:34:59 +02:00
Frank Skare
0b951875e6 - 2019-05-27 01:45:37 +02:00
Frank Skare
5ed65733a0 - 2019-05-27 01:44:56 +02:00
Frank Skare
caac45a871 - 2019-05-27 01:41:04 +02:00
Frank Skare
f4f69816a7 - 2019-05-27 01:20:45 +02:00
Frank Skare
1dddf129df - 2019-05-27 01:19:44 +02:00
Frank Skare
ca9690c3b3 - 2019-05-26 06:23:47 +02:00
Frank Skare
3b0b098bda - 2019-05-26 06:21:43 +02:00
Frank Skare
c72080e92c - 2019-05-26 06:18:21 +02:00
Frank Skare
237a3cf132 - 2019-05-26 06:01:31 +02:00
Frank Skare
562f149fff - 2019-05-26 05:54:21 +02:00
Frank Skare
dc85372c36 - 2019-05-26 05:53:10 +02:00
Frank Skare
2595465ec7 - 2019-05-26 05:51:31 +02:00
Frank Skare
1db733ae13 - 2019-05-26 05:39:00 +02:00
Frank Skare
ba3bc48297 - 2019-05-26 05:34:52 +02:00
Frank Skare
5e16c47100 - 2019-05-26 05:32:23 +02:00
Frank Skare
a13c6648a3 - 2019-05-26 04:54:17 +02:00
Frank Skare
5dc244d6f6 - 2019-05-26 04:47:23 +02:00
Frank Skare
da9bc4199b - 2019-05-26 04:45:28 +02:00
Frank Skare
1868957388 - 2019-05-26 04:36:04 +02:00
Frank Skare
0139a1ef70 - 2019-05-26 04:32:19 +02:00
Frank Skare
0989b7ef95 - 2019-05-26 04:30:24 +02:00
Frank Skare
16924e5a3b - 2019-05-26 04:28:11 +02:00
Frank Skare
502e1a9651 - 2019-05-26 04:07:26 +02:00
Frank Skare
36a7bbcfab - 2019-05-26 03:48:06 +02:00
Frank Skare
8fda90e09a - 2019-05-26 03:10:28 +02:00
Frank Skare
269457dbde - 2019-05-26 00:38:00 +02:00
Frank Skare
c93647841e - 2019-05-25 23:54:53 +02:00
Frank Skare
0f78ea38ac - 2019-05-25 14:24:18 +02:00
Frank Skare
7eb60f3e4c - 2019-05-25 04:41:16 +02:00
Frank Skare
2636da446e - 2019-05-25 04:40:03 +02:00
Frank Skare
c7fab24044 - 2019-05-25 04:16:14 +02:00
Frank Skare
2ce1f3d9c1 - 2019-05-25 03:40:14 +02:00
Frank Skare
d2f9108c22 - 2019-05-25 03:33:33 +02:00
Frank Skare
3a2b9ee542 - 2019-05-25 03:20:35 +02:00
Frank Skare
5c93bc00f7 - 2019-05-25 03:09:15 +02:00
Frank Skare
19c09da4e1 - 2019-05-25 02:01:17 +02:00
Frank Skare
95c9c115b2 - 2019-05-23 03:35:10 +02:00
Frank Skare
2512c02bff 3.6.1 2019-05-23 00:51:15 +02:00
Frank Skare
351fae8344 - 2019-05-13 03:29:12 +02:00
Frank Skare
30b562a1e1 - 2019-05-13 03:23:33 +02:00
Frank Skare
8a9a017875 - 2019-05-13 03:22:31 +02:00
Frank Skare
fa0b0f496f - 2019-05-13 03:20:44 +02:00
Frank Skare
83b5d9b65c - 2019-05-13 03:19:17 +02:00
Frank Skare
b199d33f7a - 2019-05-13 03:00:41 +02:00
Frank Skare
a7b6f79ee1 - 2019-05-13 02:48:46 +02:00
Frank Skare
fc3c5ee3a7 - 2019-05-13 02:35:31 +02:00
Frank Skare
ed71cb704f - 2019-05-11 02:09:41 +02:00
Frank Skare
a9474b1c22 - 2019-05-11 00:49:38 +02:00
Frank Skare
be3b31f7e6 - 2019-05-09 19:16:48 +02:00
Frank Skare
b2884e2037 - 2019-05-09 12:41:58 +02:00
Frank Skare
3910776b54 - 2019-05-09 12:36:05 +02:00
Frank Skare
b37272db8b - 2019-05-09 12:28:17 +02:00
Frank Skare
08a23430c7 - 2019-05-05 04:02:10 +02:00
Frank Skare
ba41b8026f - 2019-05-04 19:15:18 +02:00
Frank Skare
4aeb00afb5 - 2019-05-04 19:04:18 +02:00
Frank Skare
6e6015b185 - 2019-05-04 15:10:00 +02:00
Frank Skare
68240ac49d - 2019-05-04 15:02:26 +02:00
Frank Skare
bafc481117 - 2019-05-04 14:53:42 +02:00
Frank Skare
9198d610ad - 2019-05-04 14:03:59 +02:00
Frank Skare
ad4199aff0 - 2019-05-04 00:17:31 +02:00
Frank Skare
3164e2322c - 2019-05-03 18:27:05 +02:00
Frank Skare
a6d4570b81 - 2019-05-01 11:24:21 +02:00
Frank Skare
4fc9c61ecf - 2019-05-01 10:28:35 +02:00
Frank Skare
5a969aac7d - 2019-05-01 10:27:00 +02:00
Frank Skare
1b9229d4d9 - 2019-05-01 10:23:53 +02:00
Frank Skare
225979d220 - 2019-05-01 10:08:46 +02:00
Frank Skare
0c3a03181a - 2019-05-01 10:07:01 +02:00
Frank Skare
867a83f15a - 2019-05-01 09:36:48 +02:00
Frank Skare
1d78d4e4e2 - 2019-04-29 18:54:15 +02:00
Frank Skare
23bef4d971 - 2019-04-28 17:11:50 +02:00
Frank Skare
9b95b87177 - 2019-04-28 17:11:11 +02:00
Frank Skare
aa8ae225c5 - 2019-04-28 17:07:31 +02:00
Frank Skare
1bb05c4d99 - 2019-04-28 04:47:27 +02:00
Frank Skare
619fcef63f - 2019-04-27 21:55:31 +02:00
Frank Skare
9170e55d81 - 2019-04-27 21:29:22 +02:00
Frank Skare
dc1240f606 - 2019-04-27 21:28:35 +02:00
Frank Skare
cb11279091 - 2019-04-27 21:26:29 +02:00
Frank Skare
fd956d401f - 2019-04-27 21:25:34 +02:00
Frank Skare
6ea8a67390 - 2019-04-27 21:04:35 +02:00
Frank Skare
6d02203727 - 2019-04-27 20:59:28 +02:00
Frank Skare
0d396947c1 - 2019-04-27 20:56:42 +02:00
Frank Skare
6c85ea9625 - 2019-04-27 06:16:46 +02:00
Frank Skare
2d9a67c502 - 2019-04-27 05:26:17 +02:00
Frank Skare
d9000a570b - 2019-04-27 03:31:46 +02:00
Frank Skare
f35ab46c3f - 2019-04-27 02:16:13 +02:00
Frank Skare
143934ca49 - 2019-04-27 02:06:04 +02:00
Frank Skare
669750eaf4 - 2019-04-27 01:56:51 +02:00
Frank Skare
cde8a6495a - 2019-04-27 01:55:53 +02:00
Frank Skare
c774d4d490 - 2019-04-27 01:53:26 +02:00
Frank Skare
55cafbcdbf - 2019-04-27 01:45:34 +02:00
Frank Skare
4f508f3af0 - 2019-04-27 01:38:55 +02:00
Frank Skare
8cea79e67f - 2019-04-27 01:32:20 +02:00
Frank Skare
c6c3a3e8fa - 2019-04-27 01:30:18 +02:00
Frank Skare
8c87ac0c47 - 2019-04-27 01:23:58 +02:00
Frank Skare
d777ca912a - 2019-04-26 11:22:07 +02:00
Frank Skare
c9ffbaa679 - 2019-04-25 10:33:21 +02:00
Frank Skare
1476059601 - 2019-04-25 10:30:47 +02:00
Frank Skare
757502e8bf - 2019-04-25 10:13:48 +02:00
Frank Skare
4bbf84532e - 2019-04-25 08:30:31 +02:00
Frank Skare
433d741c68 - 2019-04-25 08:04:49 +02:00
Frank Skare
8fdbe22dd8 - 2019-04-25 05:27:01 +02:00
Frank Skare
8bed98ded5 - 2019-04-25 05:24:42 +02:00
Frank Skare
4abfa73fba - 2019-04-25 05:03:43 +02:00
Frank Skare
b868d63946 - 2019-04-25 04:55:09 +02:00
Frank Skare
3bdb88787e - 2019-04-25 04:51:12 +02:00
Frank Skare
8b74abc2f6 - 2019-04-25 04:46:30 +02:00
Frank Skare
a516f9f947 - 2019-04-25 04:44:43 +02:00
Frank Skare
ecab31f108 - 2019-04-25 04:36:57 +02:00
Frank Skare
c5a5a09300 - 2019-04-25 04:33:32 +02:00
Frank Skare
5a2f5614a3 - 2019-04-25 03:43:48 +02:00
Frank Skare
5e0162f2c8 - 2019-04-25 03:41:12 +02:00
Frank Skare
14ba006de1 - 2019-04-25 00:11:55 +02:00
Frank Skare
8f7aa7db2d - 2019-04-24 23:59:34 +02:00
Frank Skare
3e70e8e5ea - 2019-04-24 20:26:41 +02:00
Frank Skare
36f5357ff7 - 2019-04-24 20:15:27 +02:00
Frank Skare
dc3b275291 - 2019-04-24 20:09:54 +02:00
Frank Skare
abc49f55d5 - 2019-04-24 19:41:55 +02:00
Frank Skare
40b9f21101 - 2019-04-23 17:00:28 +02:00
Frank Skare
164076e237 - 2019-04-23 16:57:44 +02:00
Frank Skare
b7d948f12d - 2019-04-23 16:56:34 +02:00
Frank Skare
22e4ba1824 - 2019-04-23 16:55:56 +02:00
Frank Skare
efd2ddf367 - 2019-04-23 16:23:06 +02:00
Frank Skare
2415e2ed43 - 2019-04-21 00:18:42 +02:00
Frank Skare
d5d26784e8 - 2019-04-21 00:04:39 +02:00
Frank Skare
6c1bad15f2 - 2019-04-21 00:00:48 +02:00
Frank Skare
5137e43aad - 2019-04-20 23:59:31 +02:00
Frank Skare
6fc0ebf9d5 - 2019-04-20 23:49:05 +02:00
Frank Skare
a0e30ff982 - 2019-04-20 23:27:14 +02:00
Frank Skare
c2a0d95851 - 2019-04-20 23:07:04 +02:00
Frank Skare
34d5d2fff5 - 2019-04-20 20:56:54 +02:00
Frank Skare
baa669fe1e - 2019-04-20 20:51:05 +02:00
Frank Skare
67ecebbf6b - 2019-04-20 04:34:44 +02:00
Frank Skare
e9a8b1962a - 2019-04-16 19:04:52 +02:00
Frank Skare
3ded1573f4 - 2019-04-16 18:46:24 +02:00
Frank Skare
d38adcfc70 - 2019-04-16 18:42:03 +02:00
Frank Skare
5f1f5b3811 - 2019-04-16 18:31:39 +02:00
Frank Skare
c18c70c2af - 2019-04-16 18:14:22 +02:00
Frank Skare
9cdd76e1ac - 2019-04-13 03:07:57 +02:00
Frank Skare
7db8a1e534 - 2019-04-13 03:05:07 +02:00
Frank Skare
b93972c7f7 - 2019-04-12 18:01:23 +02:00
Frank Skare
1bae00051b - 2019-04-12 16:12:12 +02:00
Frank Skare
b75bae3c38 2.6 2019-04-09 05:09:43 +02:00
Frank Skare
2e435dcdc0 2.6 2019-04-09 04:57:29 +02:00
Frank Skare
fec33056cb 2.5 2019-04-08 04:38:17 +02:00
280 changed files with 32022 additions and 9573 deletions

2
.github/FUNDING.yml vendored Normal file
View File

@@ -0,0 +1,2 @@
github: stax76
ko_fi: stax76

View File

@@ -0,0 +1,40 @@
---
name: Ask a question
about: Ask a question about mpv.net
title: ''
labels: question
assignees: stax76
---
This template is meant for usage questions of mpv.net.
Some type of questions like questions about a problem require filling out an issue template:
**Describe the problem**
A clear and concise description of what the problem is.
**To Reproduce**
To reproduce, try the last beta version using the CLI option `--config=no`.
In case of an audio or video problem, try to reproduce the problem using mpv instead of mpv.net.
If it can be reproduced with mpv, use the [mpv issue tracker](https://github.com/mpv-player/mpv/issues).
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here.
1. mpv.net version
2. Windows version
3. GPU name
4. Media info

36
.github/ISSUE_TEMPLATE/report-a-bug.md vendored Normal file
View File

@@ -0,0 +1,36 @@
---
name: Report a bug
about: Create a report to help us improve
title: ''
labels: bug
assignees: stax76
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
To reproduce, try the last beta version using the CLI option `--config=no`.
In case of an audio or video issue, try to reproduce the issue using mpv instead of mpv.net.
If it can be reproduced with mpv, use the [mpv issue tracker](https://github.com/mpv-player/mpv/issues).
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Additional context**
Add any other context about the problem here.
1. mpv.net version
2. Windows version
3. GPU name
4. Media info

View File

@@ -0,0 +1,20 @@
---
name: Request a feature
about: Suggest an idea for this project
title: ''
labels: feature request
assignees: stax76
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@@ -0,0 +1,75 @@
name: mpvnet build
on:
workflow_dispatch:
push:
branches:
- main
- ci
paths-ignore:
- '*.md'
- 'LICENSE'
- '.gitignore'
- '.gitattributes'
- 'docs/**'
- '.github/**'
- 'src/Extensions/**'
pull_request:
branches: [main]
paths-ignore:
- '*.md'
- 'LICENSE'
- '.gitignore'
- '.gitattributes'
- 'docs/**'
- '.github/**'
- 'src/Extensions/**'
jobs:
windows:
name: Windows build
runs-on: windows-latest
steps:
- uses: actions/checkout@v4
- name: Add msbuild to PATH
uses: microsoft/setup-msbuild@v1.1
- uses: msys2/setup-msys2@v2
with:
msystem: mingw64
update: true
install: >-
base-devel
wget
p7zip
- name: Build
shell: cmd
run: |
cd src
nuget restore
msbuild -restore
msbuild MpvNet.sln /m /p:Configuration=Debug
- name: Create .mo files for localization
shell: pwsh
run: Install-Package Gettext.Tools -Force; $env:Path = ((Get-Package Gettext.Tools).Source | Split-Path) + '\tools\bin;' + $env:Path; .\lang\create-mo-files.ps1
- 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/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
shell: msys2 {0}
run: |
wget -nv -O MediaInfo.7z https://mediaarea.net/download/binary/libmediainfo0/24.03/MediaInfo_DLL_24.03_Windows_x64_WithoutInstaller.7z
7z x -y MediaInfo.7z -oMediaInfo
cp -f MediaInfo/MediaInfo.dll src/MpvNet.Windows/bin/Debug/ || true
- name: Download mpvnet.com file
shell: msys2 {0}
run: |
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@v4
with:
name: "mpv.net-win64"
path: src/MpvNet.Windows/bin/Debug/

9
.tx/config Normal file
View File

@@ -0,0 +1,9 @@
[main]
host = https://app.transifex.com
[o:stax76:p:mpvnet:r:mpvnet]
file_filter = lang/po/<lang>.po
source_file = lang/source.pot
source_lang = en
type = PO

View File

@@ -1,29 +0,0 @@
Imports System.ComponentModel.Composition
Imports System.IO
Imports System.Windows.Forms
Imports mpvnet
Imports CSScriptLibrary
<Export(GetType(IAddon))>
Public Class CSScriptAddon
Implements IAddon
Sub New()
Dim scriptDir = mp.mpvConfFolderPath + "scripts"
If Not Directory.Exists(scriptDir) Then Return
Dim csFiles = Directory.GetFiles(scriptDir, "*.cs").ToList
csFiles.AddRange(Directory.GetFiles(Application.StartupPath + "\\Scripts", "*.cs"))
If csFiles.Count = 0 Then Return
CSScriptLibrary.CSScript.EvaluatorConfig.Engine = EvaluatorEngine.CodeDom
For Each i In csFiles
Try
CSScriptLibrary.CSScript.Evaluator.LoadCode(File.ReadAllText(i))
Catch ex As Exception
MainForm.Instance.ShowMsgBox(ex.ToString(), MessageBoxIcon.Error)
End Try
Next
End Sub
End Class

View File

@@ -1,124 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{71808A87-8B1C-4DF8-957C-D79C3B164CCA}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>CSScriptAddon</RootNamespace>
<AssemblyName>CSScriptAddon</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>..\mpv.net\bin\Addons\CSScriptAddon\</OutputPath>
<DocumentationFile>
</DocumentationFile>
<NoWarn>42105,42106,42107,42353,42354,42355</NoWarn>
<WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>..\mpv.net\bin\Addons\CSScriptAddon\</OutputPath>
<DocumentationFile>
</DocumentationFile>
<NoWarn>42105,42106,42107,42353,42354,42355</NoWarn>
<WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>On</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="CSScriptLibrary, Version=3.27.5.0, Culture=neutral, PublicKeyToken=70fcc3d18c749033, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>.\CSScriptLibrary.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Data" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Diagnostics" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="CSScriptAddon.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<ItemGroup>
<Content Include="CSScriptLibrary.dll" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\mpv.net\mpv.net.csproj">
<Project>{1751f378-8edf-4b62-be6d-304c7c287089}</Project>
<Name>mpv.net</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

Binary file not shown.

View File

@@ -1,13 +0,0 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>false</MySubMain>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>1</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -1,35 +0,0 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' General Information about an assembly is controlled through the following
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.
' Review the values of the assembly attributes
<Assembly: AssemblyTitle("CSScriptAddon")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("CSScriptAddon")>
<Assembly: AssemblyCopyright("Copyright © 2019")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("4a748201-3948-497d-b156-7d172a332bd6")>
' Version information for an assembly consists of the following four values:
'
' Major Version
' Minor Version
' Build Number
' Revision
'
' You can specify all the values or you can default the Build and Revision Numbers
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@@ -1,63 +0,0 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("CSScriptAddon.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
End Module
End Namespace

View File

@@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -1,73 +0,0 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(sender As Global.System.Object, e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.CSScriptAddon.My.MySettings
Get
Return Global.CSScriptAddon.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@@ -1,10 +0,0 @@
MIT License
Copyright (c) 2017 stax76
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and ssociated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

340
License.txt Normal file
View File

@@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.

183
README.md
View File

@@ -1,102 +1,147 @@
# mpv.net
mpv.net is a libmpv based media player for Windows, it looks and works like mpv and also shares the same settings as mpv and therefore the mpv documentation applies.
![](docs/img/mpvnet.png)
mpv and mpv.net have a learning curve.
![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/stax76/mpv.net) ![GitHub closed issues](https://img.shields.io/github/issues-closed/stax76/mpv.net) ![GitHub All Releases](https://img.shields.io/github/downloads/stax76/mpv.net/total) ![GitHub tag (latest by date)](https://img.shields.io/github/tag-date/stax76/mpv.net) ![GitHub stars](https://img.shields.io/github/stars/stax76/mpv.net)
🎞 mpv.net
==========
mpv.net is a media player for Windows with a modern GUI.
The player is based on the popular [mpv](https://mpv.io) media player.
mpv.net is designed to be mpv compatible, almost all mpv features are available,
this means the official [mpv manual](https://mpv.io/manual/master/) applies to mpv.net,
differences are documented in the [mpv.net manual](docs/manual.md#differences-compared-to-mpv).
#### Graphical User Interface
Modern GUI with customizable color themes.
#### Command Line Interface
mpv.net supports mpvs command line interface.
#### High quality video output
Video output that is capable of many features loved by videophiles,
such as video scaling with popular high quality algorithms,
color management, frame timing, interpolation, HDR, and more.
#### On Screen Controller
Play controls with a modern flat design.
#### GPU video decoding
Leverages the FFmpeg hwaccel APIs to support DXVA2 video decoding acceleration.
#### Based on libmpv
mpv.net is based on libmpv which offers a straightforward C API that
was designed from the ground up to make mpv usable as a library and
facilitate easy integration into other applications.
mpv is like VLC not based on DirectShow or Media Foundation.
mpv manual: <https://mpv.io/manual/master/>
Table of contents
-----------------
- [Features](#features)
- [Screenshots](#screenshots)
- [Context Menu](#context-menu)
- [Settings](#settings)
- [Scripting](#scripting)
- [Features](#features-that-mpv-and-mpvnet-have-in-common)
- [Support](#support)
- [Changelog](#changelog)
- [Download](#download)
- [Manual](#manual)
- [Screenshots](#screenshots)
- [Contributing](#contributing)
### Features
- Customizable context menu defined in the same file as the key bindings
- Searchable options dialog with modern UI as mpv compatible standalone application
- Searchable input (key/mouse) binding editor with modern UI as mpv compatible standalone application
- Rich addon API for .NET languages
- Rich scripting API for Python, C#, Lua, JavaScript and PowerShell
- mpv's OSC (on screen controller (play control bar)), IPC, conf files
Features that mpv and mpv.net have in common
--------------------------------------------
### Screenshots
- Lua and JavaScript Scripting ([awesome-mpv lists a large collection of available user scripts](https://github.com/stax76/awesome-mpv))
- Simple config files that are easy to read and edit
- JSON IPC to control the player with a external programs
- On Screen Controller (OSC, play control buttons) with modern flat design
- Command Line Interface
- Started from a terminal, status, error and debug output is printed on the terminal
- DXVA2 video decoding acceleration
- Video output capable of features loved by videophiles, such as video scaling with popular high quality algorithms, color management, frame timing, interpolation, HDR, and more
- Browser extensions to start mpv.net from the browser
- Fast seek performance
- Fast startup performance
- Usable as video player, audio player and image viewer with a wide range of supported formats
- Built-in decoders, no external codecs have to be installed
- Build-in media streaming (requires yt-dlp being installed)
- External audio and subtitle files can be loaded manually or automatically
- Screenshot feature
- Internationalization using gettext and transifex
![](https://raw.githubusercontent.com/stax76/mpv.net/master/screenshots/mpvnet.png)
![](https://raw.githubusercontent.com/stax76/mpv.net/master/screenshots/mpvConfEdit.png)
Features exclusive to mpv.net
----------------------------
![](https://raw.githubusercontent.com/stax76/mpv.net/master/screenshots/mpvInputEdit.png)
- Very high degree of mpv compatibility, almost all mpv features are available
- Modern graphical user interface with customizable color themes
- Customizable context menu
- Searchable config editor
- Searchable input (shorcut keys) editor
- Global keyboard shortcuts
- Extension API for .NET languages (C#, VB.NET and F#)
- Files can be enqueued from File Explorer
### Context Menu
The context menu can be customized via input.conf file located at:
```
C:\Users\username\AppData\Roaming\mpv\input.conf
```
if it's missing mpv.net generates it with the following defaults:
## [Support](docs/manual.md#support)
<https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt>
[Support section of the manual.](docs/manual.md#support)
### Settings
mpv.net shares the settings with mpv, settings can be edited in a settings dialog or in a config file called mpv.conf located at:
```
C:\Users\user\AppData\Roaming\mpv\mpv.conf
```
if it's missing mpv.net generates it with the following defaults:
## [Download](docs/manual.md#download)
<https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/mpv.conf.txt>
[Download section of the manual.](docs/manual.md#download)
### Scripting
Scripting is supported for Python, C#, Lua, JavaScript and PowerShell
## [Manual](docs/manual.md)
https://github.com/stax76/mpv.net/wiki/Scripting-(CSharp,-Python,-JavaScript,-Lua,-PowerShell)
[The mpv.net documentation.](docs/manual.md)
### Support
<https://forum.doom9.org/showthread.php?t=174841>
## [Contributing](docs/contributing.md)
<https://forum.videohelp.com/threads/392514-mpv-net-a-extendable-media-player-for-windows>
[Contributing section of the manual.](docs/manual.md#contributing)
<https://github.com/stax76/mpv.net/issues>
### Changelog
Screenshots
-----------
### 2.5 (2019-04-08)
#### Main Window
- in case the input conf don't contain a menu definition mpv.net creates the default menu instead no menu like before
- all message boxes were migrated to use the TaskDialog API
- an improvement in the previous release unfortunately introduced a bug
causing the conf editor not to save settings
![Main Window](docs/img/Main.webp)
### 2.4 (2019-04-06)
- new options added to the conf GUI editor: gpu-context, gpu-api, scale, cscale,
dscale, dither-depth, correct-downscaling, sigmoid-upscaling, deband
- the conf edit GUI has a 'Apply' feature added to write the conf to mpv.conf
without the need to close the conf edit GUI
- the input edit GUI shows a message box when a duplicate is detected and it has
a new feature to reduce the filter scope to eather of input, menu or command and
the editor writes always the same help on top of input.conf as it is found in the defaults
- the conf edit GUI was often starting out of working area bounds and is now starting with center screen
- the startup size was reduced and a issue was fixed that when the screen property
was defined for a screen that isn't connected the startup size wasn't applied
- added feature to load external audio and subtitle files in the menu under:
Open > Load external audio|subtitle files (default binding at:
[input.conf](https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt))
- previously the conf edit GUI removed settings from the conf file if the setting
was set to the default, the new behavior is not to remove anything
- the autofit mpv property was partly implemented, you can use 'autofit = 50%' in mpv.conf or
'--autofit=50%' on the command line, WxH isn't implemented and only percent values are accepted.
There is a new wiki page explaining the mpv.net limitations compared to the original mpv:
[Limitations](https://github.com/stax76/mpv.net/wiki/Limitations)
#### Context Menu
[go to download page](https://github.com/stax76/mpv.net/releases)
![Context Menu](docs/img/Menu.webp)
#### Config Editor
Searchable config editor as alternative to edit the conf file manually.
![](docs/img/ConfEditor.webp)
#### Terminal
![](docs/img/Terminal.webp)
Other projects from me
----------------------
A list of my other projects can be found here:
https://stax76.github.io/software-list

View File

@@ -1,58 +0,0 @@
using System;
using System.ComponentModel.Composition;
using System.Collections.Generic;
using System.IO;
using mpvnet;
namespace RatingAddon
{
[Export(typeof(IAddon))]
public class RatingAddon : IAddon
{
private Dictionary<string, int> Dic = new Dictionary<string, int>();
public RatingAddon()
{
mp.ClientMessage += mpv_ClientMessage;
mp.Shutdown += mpv_Shutdown;
}
private void mpv_Shutdown()
{
foreach (var i in Dic)
{
string filepath = i.Key;
int rating = i.Value;
if (String.IsNullOrEmpty(filepath) || ! File.Exists(filepath))
return;
string basename = Path.GetFileNameWithoutExtension(filepath);
for (int x = 0; x < 6; x++)
if (basename.Contains(" (" + x.ToString() + "stars)"))
basename = basename.Replace(" (" + x.ToString() + "stars)", "");
basename += $" ({rating}stars)";
string newPath = Path.Combine(Path.GetDirectoryName(filepath), basename + Path.GetExtension(filepath));
if (filepath.ToLower() != newPath.ToLower())
File.Move(filepath, newPath);
File.SetLastWriteTime(newPath, DateTime.Now);
}
}
private void mpv_ClientMessage(string[] args)
{
int rating;
if (args?.Length != 2 || args[0] != "rate-file" || ! int.TryParse(args[1], out rating))
return;
Dic[mp.get_property_string("path")] = rating;
mp.commandv("show-text", $"Rating: {rating}");
}
}
}

View File

@@ -1,92 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{55C88710-539D-4402-84C8-31694841C731}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>RatingAddon</RootNamespace>
<AssemblyName>RatingAddon</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\mpv.net\bin\Addons\RatingAddon\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\mpv.net\bin\Addons\RatingAddon\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>..\mpv.net\bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>..\mpv.net\bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>..\mpv.net\bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>..\mpv.net\bin\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="RatingAddon.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\mpv.net\mpv.net.csproj">
<Project>{1751f378-8edf-4b62-be6d-304c7c287089}</Project>
<Name>mpv.net</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@@ -1,13 +0,0 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On

View File

@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>false</MySubMain>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>
<AuthenticationMode>0</AuthenticationMode>
<ApplicationType>1</ApplicationType>
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
</MyApplicationData>

View File

@@ -1,35 +0,0 @@
Imports System
Imports System.Reflection
Imports System.Runtime.InteropServices
' General Information about an assembly is controlled through the following
' set of attributes. Change these attribute values to modify the information
' associated with an assembly.
' Review the values of the assembly attributes
<Assembly: AssemblyTitle("VBNET")>
<Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("VBNET")>
<Assembly: AssemblyCopyright("Copyright © 2019")>
<Assembly: AssemblyTrademark("")>
<Assembly: ComVisible(False)>
'The following GUID is for the ID of the typelib if this project is exposed to COM
<Assembly: Guid("a5571ff4-12ae-4e1a-ad2b-863b07d1b952")>
' Version information for an assembly consists of the following four values:
'
' Major Version
' Minor Version
' Build Number
' Revision
'
' You can specify all the values or you can default the Build and Revision Numbers
' by using the '*' as shown below:
' <Assembly: AssemblyVersion("1.0.*")>
<Assembly: AssemblyVersion("1.0.0.0")>
<Assembly: AssemblyFileVersion("1.0.0.0")>

View File

@@ -1,62 +0,0 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("VBNET.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set(ByVal value As Global.System.Globalization.CultureInfo)
resourceCulture = value
End Set
End Property
End Module
End Namespace

View File

@@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -1,73 +0,0 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.VBNET.My.MySettings
Get
Return Global.VBNET.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@@ -1,678 +0,0 @@
Imports System.IO
Imports System.Reflection
Imports System.Runtime.InteropServices
Imports System.Text
Imports System.Text.RegularExpressions
Imports System.Threading
Public Delegate Function PFTASKDIALOGCALLBACK(hwnd As IntPtr,
msg As UInteger,
wParam As IntPtr,
lParam As IntPtr,
lpRefData As IntPtr) As Integer
Public Class Msg
Public Shared Property SupportURL As String
Public Shared Sub Show(mainInstruction As String, Optional content As String = Nothing)
Show(mainInstruction, content, MsgIcon.Info, MsgButtons.Ok)
End Sub
Public Shared Sub ShowError(mainInstruction As String, Optional content As String = Nothing)
If mainInstruction = "" Then mainInstruction = content
If mainInstruction = "" Then Exit Sub
Using td As New TaskDialog(Of String)
td.AllowCancel = False
If content = "" Then
If mainInstruction.Length < 80 Then
td.MainInstruction = mainInstruction
Else
td.Content = mainInstruction
End If
Else
td.MainInstruction = mainInstruction
td.Content = content
End If
td.MainIcon = MsgIcon.Error
td.Footer = "[copymsg Copy Message]"
If SupportURL <> "" Then td.Footer += $" [{SupportURL} Contact Support]"
td.Show()
End Using
End Sub
Public Shared Sub ShowException(e As Exception)
Try
Using td As New TaskDialog(Of String)
td.MainInstruction = e.GetType.Name
td.Content = e.Message
td.MainIcon = MsgIcon.Error
td.ExpandedInformation = e.ToString
td.Footer = "[copymsg Copy Message]"
If SupportURL <> "" Then td.Footer += $" [{SupportURL} Contact Support]"
td.Show()
End Using
Catch
MsgBox(e.GetType.Name + vbCrLf + vbCrLf + e.Message + vbCrLf + vbCrLf + e.ToString, MsgBoxStyle.Critical)
End Try
End Sub
Private Shared ShownMessages As String
Public Shared Sub ShowWarning(mainInstruction As String,
Optional content As String = Nothing,
Optional onlyOnce As Boolean = False)
If onlyOnce AndAlso ShownMessages?.Contains(mainInstruction + content) Then Exit Sub
Show(mainInstruction, content, MsgIcon.Warning, MsgButtons.Ok)
If onlyOnce Then ShownMessages += mainInstruction + content
End Sub
Public Shared Function ShowQuestion(mainInstruction As String,
Optional buttons As MsgButtons = MsgButtons.OkCancel) As MsgResult
Return Show(mainInstruction, Nothing, MsgIcon.None, buttons)
End Function
Public Shared Function ShowQuestion(mainInstruction As String,
content As String,
Optional buttons As MsgButtons = MsgButtons.OkCancel) As MsgResult
Return Show(mainInstruction, content, MsgIcon.None, buttons)
End Function
Public Shared Function Show(mainInstruction As String,
content As String,
icon As MsgIcon,
buttons As MsgButtons,
Optional defaultButton As MsgResult = MsgResult.None) As MsgResult
If mainInstruction Is Nothing Then mainInstruction = ""
Using td As New TaskDialog(Of MsgResult)
td.AllowCancel = False
td.DefaultButton = defaultButton
td.MainIcon = icon
If content Is Nothing Then
If mainInstruction.Length < 80 Then
td.MainInstruction = mainInstruction
Else
td.Content = mainInstruction
End If
Else
td.MainInstruction = mainInstruction
td.Content = content
End If
If buttons = MsgButtons.OkCancel Then
td.AddButton("OK", MsgResult.OK)
td.AddButton("Cancel", MsgResult.Cancel) 'don't use system language
Else
td.CommonButtons = buttons
End If
Return td.Show()
End Using
End Function
End Class
Public Class TaskDialog(Of T)
Inherits TaskDialogNative
Implements IDisposable
Private IdValueDic As New Dictionary(Of Integer, T)
Private IdTextDic As New Dictionary(Of Integer, String)
Private CommandLinkShieldList As New List(Of Integer)
Private ButtonArray As IntPtr, RadioButtonArray As IntPtr
Private Buttons As New List(Of TASKDIALOG_BUTTON)
Private RadioButtons As New List(Of TASKDIALOG_BUTTON)
Private Config As TASKDIALOGCONFIG
Sub New()
Config = New TASKDIALOGCONFIG()
Config.cbSize = CUInt(Marshal.SizeOf(Config))
Config.hwndParent = GetHandle()
Config.hInstance = IntPtr.Zero
Config.dwFlags = TASKDIALOG_FLAGS.TDF_ALLOW_DIALOG_CANCELLATION
Config.dwCommonButtons = MsgButtons.None
Config.MainIcon = New TASKDIALOGCONFIG_ICON_UNION(0)
Config.FooterIcon = New TASKDIALOGCONFIG_ICON_UNION(0)
Config.cxWidth = 0
Config.cButtons = 0
Config.cRadioButtons = 0
Config.pButtons = IntPtr.Zero
Config.pRadioButtons = IntPtr.Zero
Config.nDefaultButton = 0
Config.nDefaultRadioButton = 0
Config.pszWindowTitle = DirectCast(Assembly.GetEntryAssembly().GetCustomAttributes(GetType(AssemblyProductAttribute), True)(0), AssemblyProductAttribute).Product
Config.pszMainInstruction = ""
Config.pszContent = ""
Config.pszVerificationText = Nothing
Config.pszExpandedInformation = Nothing
Config.pszExpandedControlText = Nothing
Config.pszCollapsedControlText = Nothing
Config.pszFooter = Nothing
Config.pfCallback = New PFTASKDIALOGCALLBACK(AddressOf DialogProc)
End Sub
Function GetHandle() As IntPtr
Dim sb As New StringBuilder(260)
Dim foregroundHandle = GetForegroundWindow()
GetWindowModuleFileName(foregroundHandle, sb, 260)
If Path.GetFileName(sb.ToString.Replace(".vshost", "")) =
Path.GetFileName(System.Reflection.Assembly.GetEntryAssembly().Location) Then
Return foregroundHandle
End If
End Function
#Region "Constants"
Const TDE_CONTENT As Integer = 0
Const TDE_EXPANDED_INFORMATION As Integer = 1
Const TDE_FOOTER As Integer = 2
Const TDE_MAIN_INSTRUCTION As Integer = 3
Const TDN_CREATED As Integer = 0
Const TDN_NAVIGATED As Integer = 1
Const TDN_BUTTON_CLICKED As Integer = 2
Const TDN_HYPERLINK_CLICKED As Integer = 3
Const TDN_TIMER As Integer = 4
Const TDN_DESTROYED As Integer = 5
Const TDN_RADIO_BUTTON_CLICKED As Integer = 6
Const TDN_DIALOG_CONSTRUCTED As Integer = 7
Const TDN_VERIFICATION_CLICKED As Integer = 8
Const TDN_HELP As Integer = 9
Const TDN_EXPANDO_BUTTON_CLICKED As Integer = 10
Const TDM_NAVIGATE_PAGE As Integer = &H400 + 101
Const TDM_CLICK_BUTTON As Integer = &H400 + 102 'wParam = Button ID
Const TDM_SET_MARQUEE_PROGRESS_BAR As Integer = &H400 + 103 'wParam = 0 (nonMarque) wParam != 0 (Marquee)
Const TDM_SET_PROGRESS_BAR_STATE As Integer = &H400 + 104 'wParam = new progress state
Const TDM_SET_PROGRESS_BAR_RANGE As Integer = &H400 + 105 'lParam = MAKELPARAM(nMinRange, nMaxRange)
Const TDM_SET_PROGRESS_BAR_POS As Integer = &H400 + 106 'wParam = new position
Const TDM_SET_PROGRESS_BAR_MARQUEE As Integer = &H400 + 107 'wParam = 0 (stop marquee), wParam != 0 (start marquee), lparam = speed (milliseconds between repaints)
Const TDM_SET_ELEMENT_TEXT As Integer = &H400 + 108 'wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR)
Const TDM_CLICK_RADIO_BUTTON As Integer = &H400 + 110 'wParam = Radio Button ID
Const TDM_ENABLE_BUTTON As Integer = &H400 + 111 'lParam = 0 (disable), lParam != 0 (enable), wParam = Button ID
Const TDM_ENABLE_RADIO_BUTTON As Integer = &H400 + 112 'lParam = 0 (disable), lParam != 0 (enable), wParam = Radio Button ID
Const TDM_CLICK_VERIFICATION As Integer = &H400 + 113 'wParam = 0 (unchecked), 1 (checked), lParam = 1 (set key focus)
Const TDM_UPDATE_ELEMENT_TEXT As Integer = &H400 + 114 'wParam = element (TASKDIALOG_ELEMENTS), lParam = new element text (LPCWSTR)
Const TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE As Integer = &H400 + 115 'wParam = Button ID, lParam = 0 (elevation not required), lParam != 0 (elevation required)
Const TDM_UPDATE_ICON As Integer = &H400 + 116 'wParam = icon element (TASKDIALOG_ICON_ELEMENTS), lParam = new icon (hIcon if TDF_USE_HICON_* was set, PCWSTR otherwise)
#End Region
#Region "Properties"
Private AllowCancelValue As Boolean
WriteOnly Property AllowCancel() As Boolean
Set(Value As Boolean)
If Value Then
Config.dwFlags = Config.dwFlags Or TASKDIALOG_FLAGS.TDF_ALLOW_DIALOG_CANCELLATION
ElseIf (Config.dwFlags And TASKDIALOG_FLAGS.TDF_ALLOW_DIALOG_CANCELLATION) = TASKDIALOG_FLAGS.TDF_ALLOW_DIALOG_CANCELLATION Then
Config.dwFlags = Config.dwFlags Xor TASKDIALOG_FLAGS.TDF_ALLOW_DIALOG_CANCELLATION
End If
End Set
End Property
Property MainInstruction() As String
Get
Return Config.pszMainInstruction
End Get
Set(Value As String)
Config.pszMainInstruction = Value
End Set
End Property
Property Content() As String
Get
Return Config.pszContent
End Get
Set(Value As String)
Config.pszContent = ExpandWikiMarkup(Value)
End Set
End Property
Property ExpandedInformation() As String
Get
Return Config.pszExpandedInformation
End Get
Set(Value As String)
Config.pszExpandedInformation = ExpandWikiMarkup(Value)
End Set
End Property
Property VerificationText() As String
Get
Return Config.pszVerificationText
End Get
Set(Value As String)
Config.pszVerificationText = Value
End Set
End Property
Property DefaultButton() As MsgResult
Get
Return CType(Config.nDefaultButton, MsgResult)
End Get
Set(Value As MsgResult)
Config.nDefaultButton = Value
End Set
End Property
Property Footer() As String
Get
Return Config.pszFooter
End Get
Set(Value As String)
Config.pszFooter = ExpandWikiMarkup(Value)
End Set
End Property
WriteOnly Property MainIcon() As MsgIcon
Set(Value As MsgIcon)
Config.MainIcon = New TASKDIALOGCONFIG_ICON_UNION(Value)
End Set
End Property
Private SelectedIDValue As Integer = -1
Property SelectedID As Integer
Get
Return SelectedIDValue
End Get
Set(value As Integer)
For Each i In IdValueDic
If i.Key = value Then SelectedIDValue = value
Next
End Set
End Property
Private SelectedValueValue As T
Property SelectedValue() As T
Get
If IdValueDic.ContainsKey(SelectedID) Then Return IdValueDic(SelectedID)
Return SelectedValueValue
End Get
Set(value As T)
SelectedValueValue = value
End Set
End Property
Private SelectedTextValue As String
Property SelectedText() As String
Get
If IdTextDic.ContainsKey(SelectedID) Then Return IdTextDic(SelectedID)
Return SelectedTextValue
End Get
Set(value As String)
SelectedTextValue = value
End Set
End Property
Property CheckBoxChecked() As Boolean
Get
Return (Config.dwFlags And TASKDIALOG_FLAGS.TDF_VERIFICATION_FLAG_CHECKED) = TASKDIALOG_FLAGS.TDF_VERIFICATION_FLAG_CHECKED
End Get
Set(value As Boolean)
If value Then
Config.dwFlags = Config.dwFlags Or TASKDIALOG_FLAGS.TDF_VERIFICATION_FLAG_CHECKED
ElseIf CheckBoxChecked Then
Config.dwFlags = Config.dwFlags Xor TASKDIALOG_FLAGS.TDF_VERIFICATION_FLAG_CHECKED
End If
End Set
End Property
Private CommonButtonsValue As MsgButtons
Property CommonButtons() As MsgButtons
Get
Return Config.dwCommonButtons
End Get
Set(Value As MsgButtons)
Config.dwCommonButtons = Value
End Set
End Property
Private TimeoutValue As Integer
Property Timeout As Integer
Get
Return CInt(TimeoutValue / 1000)
End Get
Set(Value As Integer)
TimeoutValue = Value * 1000
If Value > 0 Then
Config.dwFlags = Config.dwFlags Or TASKDIALOG_FLAGS.TDF_CALLBACK_TIMER
End If
End Set
End Property
#End Region
#Region "Methods"
Sub AddButton(text As String, value As T)
Dim id = 1000 + IdValueDic.Count + 1
IdValueDic(id) = value
Buttons.Add(New TASKDIALOG_BUTTON(id, text))
End Sub
Function ExpandWikiMarkup(value As String) As String
If value.Contains("[") Then
Dim re As New Regex("\[(.*?) (.+?)\]")
Dim m = re.Match(value)
If m.Success Then
Config.dwFlags = Config.dwFlags Or TASKDIALOG_FLAGS.TDF_ENABLE_HYPERLINKS
value = re.Replace(value, "<a href=""$1"">$2</a>")
End If
End If
Return value
End Function
Sub AddCommandLink(text As String, Optional value As T = Nothing)
Dim id = 1000 + IdValueDic.Count + 1
Dim temp As Object = text
IdValueDic(id) = If(value Is Nothing, CType(temp, T), value)
IdTextDic(id) = text
Buttons.Add(New TASKDIALOG_BUTTON(id, text))
Config.dwFlags = Config.dwFlags Or TASKDIALOG_FLAGS.TDF_USE_COMMAND_LINKS
End Sub
Sub AddCommandLink(text As String,
description As String,
value As T,
Optional setShield As Boolean = False)
Dim id = 1000 + IdValueDic.Count + 1
IdValueDic(id) = value
If setShield Then CommandLinkShieldList.Add(id)
If description <> "" Then text = text + vbCrLf + description
Buttons.Add(New TASKDIALOG_BUTTON(id, text))
Config.dwFlags = Config.dwFlags Or TASKDIALOG_FLAGS.TDF_USE_COMMAND_LINKS
End Sub
Sub AddRadioButton(text As String, value As T)
Dim id = 1000 + IdValueDic.Count + 1
IdValueDic(id) = value
RadioButtons.Add(New TASKDIALOG_BUTTON(id, text))
End Sub
Function Show() As T
MarshalDialogControlStructs()
Dim isChecked As Boolean
Dim hr = TaskDialogIndirect(Config, Nothing, Nothing, isChecked)
CheckBoxChecked = isChecked
If hr < 0 Then Marshal.ThrowExceptionForHR(hr)
If TypeOf SelectedValue Is MsgResult Then SelectedValue = DirectCast(CObj(SelectedID), T)
Return SelectedValue
End Function
Private ExitTickCount As Integer
Private Function DialogProc(hwnd As IntPtr,
msg As UInteger,
wParam As IntPtr,
lParam As IntPtr,
lpRefData As IntPtr) As Integer
Select Case msg
Case TDN_BUTTON_CLICKED, TDN_RADIO_BUTTON_CLICKED
If TypeOf SelectedValue Is MsgResult Then
SelectedIDValue = wParam.ToInt32
Else
SelectedID = wParam.ToInt32
End If
Case TDN_TIMER
If ExitTickCount = 0 Then
ExitTickCount = Environment.TickCount + Timeout * 1000
End If
If Environment.TickCount > ExitTickCount Then
SendMessage(hwnd, TDM_CLICK_BUTTON, New IntPtr(MsgResult.OK), IntPtr.Zero)
End If
Case TDN_HYPERLINK_CLICKED
Dim url = Marshal.PtrToStringUni(lParam)
If url.StartsWith("mailto") OrElse url.StartsWith("http") Then
Process.Start(url)
ElseIf url = "copymsg" Then
Dim thread As New Thread(
New ThreadStart(Sub()
System.Windows.Forms.Clipboard.SetText(MainInstruction + vbCrLf + vbCrLf + Content + vbCrLf + vbCrLf + ExpandedInformation)
MsgBox("Message was copied to clipboard.",
MsgBoxStyle.Information,
DirectCast(Assembly.GetEntryAssembly().GetCustomAttributes(GetType(AssemblyProductAttribute), True)(0), AssemblyProductAttribute).Product)
End Sub))
thread.SetApartmentState(ApartmentState.STA)
thread.Start()
End If
Case TDN_CREATED
For Each i In CommandLinkShieldList
SendMessage(hwnd, TDM_SET_BUTTON_ELEVATION_REQUIRED_STATE, New IntPtr(i), New IntPtr(1))
Next
End Select
End Function
Private Sub MarshalDialogControlStructs()
If Not Buttons Is Nothing AndAlso Buttons.Count > 0 Then
ButtonArray = AllocateAndMarshalButtons(Buttons)
Config.pButtons = ButtonArray
Config.cButtons = CUInt(Buttons.Count)
End If
If Not RadioButtons Is Nothing AndAlso RadioButtons.Count > 0 Then
RadioButtonArray = AllocateAndMarshalButtons(RadioButtons)
Config.pRadioButtons = RadioButtonArray
Config.cRadioButtons = CUInt(RadioButtons.Count)
End If
End Sub
Private Shared Function AllocateAndMarshalButtons(structs As List(Of TASKDIALOG_BUTTON)) As IntPtr
Dim initialPtr = Marshal.AllocHGlobal(Marshal.SizeOf(GetType(TASKDIALOG_BUTTON)) * structs.Count)
Dim currentPtr = initialPtr
For Each button In structs
Marshal.StructureToPtr(button, currentPtr, False)
currentPtr = CType((currentPtr.ToInt64 + Marshal.SizeOf(button)), IntPtr)
Next
Return initialPtr
End Function
#End Region
#Region "IDispose Pattern"
Private disposed As Boolean
Sub Dispose() Implements IDisposable.Dispose
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
Protected Overrides Sub Finalize()
Try
Dispose(False)
Finally
MyBase.Finalize()
End Try
End Sub
Protected Sub Dispose(disposing As Boolean)
If Not disposed Then
disposed = True
If ButtonArray <> IntPtr.Zero Then
Marshal.FreeHGlobal(ButtonArray)
ButtonArray = IntPtr.Zero
End If
If RadioButtonArray <> IntPtr.Zero Then
Marshal.FreeHGlobal(RadioButtonArray)
RadioButtonArray = IntPtr.Zero
End If
If disposing Then
End If
End If
End Sub
#End Region
End Class
Public Class TaskDialogNative
<DllImport("comctl32", CharSet:=CharSet.Unicode, SetLastError:=True)>
Shared Function TaskDialogIndirect(<[In]()> pTaskConfig As TASKDIALOGCONFIG, <Out()> ByRef pnButton As Integer, <Out()> ByRef pnRadioButton As Integer, <MarshalAs(UnmanagedType.Bool)> <Out()> ByRef pVerificationFlagChecked As Boolean) As Integer
End Function
<DllImport("user32.dll")>
Shared Function GetForegroundWindow() As IntPtr
End Function
<DllImport("user32.dll", CharSet:=CharSet.Unicode)>
Shared Function GetWindowModuleFileName(hwnd As IntPtr,
lpszFileName As StringBuilder,
cchFileNameMax As UInteger) As UInteger
End Function
<DllImport("user32.dll")>
Shared Function SendMessage(handle As IntPtr,
message As Int32,
wParam As IntPtr,
lParam As IntPtr) As IntPtr
End Function
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode, Pack:=4)>
Public Class TASKDIALOGCONFIG
Public cbSize As UInteger
Public hwndParent As IntPtr
Public hInstance As IntPtr
Public dwFlags As TASKDIALOG_FLAGS
Public dwCommonButtons As MsgButtons
<MarshalAs(UnmanagedType.LPWStr)>
Public pszWindowTitle As String
Public MainIcon As TASKDIALOGCONFIG_ICON_UNION
<MarshalAs(UnmanagedType.LPWStr)>
Public pszMainInstruction As String
<MarshalAs(UnmanagedType.LPWStr)>
Public pszContent As String
Public cButtons As UInteger
Public pButtons As IntPtr
Public nDefaultButton As Integer
Public cRadioButtons As UInteger
Public pRadioButtons As IntPtr
Public nDefaultRadioButton As Integer
<MarshalAs(UnmanagedType.LPWStr)>
Public pszVerificationText As String
<MarshalAs(UnmanagedType.LPWStr)>
Public pszExpandedInformation As String
<MarshalAs(UnmanagedType.LPWStr)>
Public pszExpandedControlText As String
<MarshalAs(UnmanagedType.LPWStr)>
Public pszCollapsedControlText As String
Public FooterIcon As TASKDIALOGCONFIG_ICON_UNION
<MarshalAs(UnmanagedType.LPWStr)>
Public pszFooter As String
Public pfCallback As PFTASKDIALOGCALLBACK
Public lpCallbackData As IntPtr
Public cxWidth As UInteger
End Class
Public Enum TASKDIALOG_FLAGS
NONE = 0
TDF_ENABLE_HYPERLINKS = &H1
TDF_USE_HICON_MAIN = &H2
TDF_USE_HICON_FOOTER = &H4
TDF_ALLOW_DIALOG_CANCELLATION = &H8
TDF_USE_COMMAND_LINKS = &H10
TDF_USE_COMMAND_LINKS_NO_ICON = &H20
TDF_EXPAND_FOOTER_AREA = &H40
TDF_EXPANDED_BY_DEFAULT = &H80
TDF_VERIFICATION_FLAG_CHECKED = &H100
TDF_SHOW_PROGRESS_BAR = &H200
TDF_SHOW_MARQUEE_PROGRESS_BAR = &H400
TDF_CALLBACK_TIMER = &H800
TDF_POSITION_RELATIVE_TO_WINDOW = &H1000
TDF_RTL_LAYOUT = &H2000
TDF_NO_DEFAULT_RADIO_BUTTON = &H4000
End Enum
<StructLayout(LayoutKind.Explicit, CharSet:=CharSet.Unicode)>
Public Structure TASKDIALOGCONFIG_ICON_UNION
Sub New(i As Integer)
spacer = IntPtr.Zero
pszIcon = 0
hMainIcon = i
End Sub
<FieldOffset(0)>
Public hMainIcon As Integer
<FieldOffset(0)>
Public pszIcon As Integer
<FieldOffset(0)>
Public spacer As IntPtr
End Structure
<StructLayout(LayoutKind.Sequential,
CharSet:=CharSet.Unicode, Pack:=4)>
Public Structure TASKDIALOG_BUTTON
Sub New(n As Integer, txt As String)
nButtonID = n
pszButtonText = txt
End Sub
Public nButtonID As Integer
<MarshalAs(UnmanagedType.LPWStr)>
Public pszButtonText As String
End Structure
End Class
Public Enum MsgButtons
None = &H0
Ok = &H1
Yes = &H2
No = &H4
Cancel = &H8
Retry = &H10
RetryCancel = Retry Or Cancel
Close = &H20
OkCancel = Ok Or Cancel
YesNo = Yes Or No
YesNoCancel = YesNo Or Cancel
End Enum
Public Enum MsgIcon
None = 0
Warning = 65535 'TD_WARNING_ICON
[Error] = 65534 'TD_ERROR_ICON
Info = 65533 'TD_INFORMATION_ICON
Shield = 65532 'TD_SHIELD_ICON
SecurityShieldBlue = 65531
SecurityWarning = 65530
SecurityError = 65529
SecuritySuccess = 65528
SecurityShieldGray = 65527
End Enum
Public Enum MsgResult
None = 0
OK = 1
Cancel = 2
Abort = 3
Retry = 4
Ignore = 5
Yes = 6
No = 7
End Enum

View File

@@ -1,107 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{A1D11294-05BF-4D77-B008-AECF1AA93C9F}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>VBNET</RootNamespace>
<AssemblyName>VBNET</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>VBNET.xml</DocumentationFile>
<NoWarn>42353,42354,42355</NoWarn>
<WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>VBNET.xml</DocumentationFile>
<NoWarn>42353,42354,42355</NoWarn>
<WarningsAsErrors>41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</WarningsAsErrors>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>On</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Diagnostics" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="TaskDialog.vb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

1177
docs/changelog.md Normal file

File diff suppressed because it is too large Load Diff

BIN
docs/img/ConfEditor.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 KiB

BIN
docs/img/Main.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 KiB

BIN
docs/img/Menu.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

BIN
docs/img/Terminal.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 KiB

755
docs/manual.md Normal file
View File

@@ -0,0 +1,755 @@
mpv.net manual
==============
**ENGLISH** | **[简体中文](manual_chs.md)**
Table of contents
-----------------
* [About](#about)
* [Download](#download)
* [Installation](#installation)
* [Support](#support)
* [Config Folder](#config-folder)
* [Input and context menu](#input-and-context-menu)
* [Command Line Interface](#command-line-interface)
* [Terminal](#terminal)
* [mpv.net specific commands](#mpvnet-specific-commands)
* [mpv.net specific options](#mpvnet-specific-options)
* [External Tools](#external-tools)
* [Scripting](#scripting)
* [Extensions](#extensions)
* [Color Theme](#color-theme)
* [Advanced Features](#advanced-features)
* [Differences compared to mpv](#differences-compared-to-mpv)
* [Environment Variables](#environment-variables)
* [user-data](#user-data)
* [Contributing](#contributing)
* [Context Menu Commands](#context-menu)
About
-----
mpv.net is a media player for Windows that has a modern GUI.
The player is based on the popular [mpv](https://mpv.io) media player.
mpv.net is designed to be mpv compatible, almost all mpv features are available,
this means the official [mpv manual](https://mpv.io/manual/master/) applies to mpv.net,
differences are documented in this manual under [Differences compared to mpv](#differences-compared-to-mpv).
Download
--------
[Stable and beta portable and setup via GitHub download](../../../releases)
[Changelog](changelog.md)
Installation
------------
#### Requirements
1. Windows 10 or higher.
2. [.NET Desktop Runtime 10.0](https://dotnet.microsoft.com/en-us/download/dotnet/10.0)
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 `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.
[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).
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 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
-------
Before making a support request, please try the newest [beta version](../../../releases) first.
Support can be requested here:
mpv.net bug reports, feature requests and advanced questions:
https://github.com/mpvnet-player/mpv.net/issues
Beginner mpv questions:
https://www.reddit.com/r/mpv
Advanced mpv questions:
https://github.com/mpv-player/mpv/issues
https://github.com/mpv-player/mpv/discussions
Config Folder
-------------
mpv.net searches the config folder at:
1. Folder defined via MPVNET_HOME environment variable.
2. startup\portable_config (startup means the directory containing mpvnet.exe)
3. `%APPDATA%\mpv.net` (`C:\Users\Username\AppData\Roaming\mpv.net`)
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
----------------------
Global keyboard shortcuts are supported via `global-input.conf` file.
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 `Config`.
The input test mode can be started via command line: `--input-test`
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
mpv input commands:
https://mpv.io/manual/master/#list-of-input-commands
mpv input options:
https://mpv.io/manual/master/#input
Before version v7 all bindings and the context menu definition
were defined in the input.conf file, which mpv.net created
in case it didn't exist. This had the disadvantage that mpv.net
lost control over all default bindings and context menu
defaults. This was unfortunate, v7 introduces a new bindings
and context menu design fixing it.
In v7 no input.conf file is created, the default bindings and
context menu is defined internally. input.conf only contains
what is different from the internally defined defaults,
so it works the same as it works in mpv.
For backward compatibility the old input.conf context menu
format with the menu definition using `#menu: ` is still
supported. The new design also allows for a menu customization,
in a sub section called `Custom`. In input.conf it can be
defined like so:
`Ctrl+a show-text Test #custom-menu: Test > Test`
Users that have their bindings and context menu customized
before v7 can easily migrate to the new design by deleting
bindings they don't use and remember the shortcut and remove
`#menu:` everywhere, it's important to remove `#menu:`
everywhere in order to enable the new mode/design.
Command Line Interface
----------------------
**mpvnet** [options] [file|URL|PLAYLIST|-]
**mpvnet** [options] files
mpv properties can be set with the same syntax as mpv, that is:
To enable the border property:
`--border` or `--border=yes`
To disable the border property:
`--no-boder` or `--border=no`
Supported are all mpv properties, they are documented here:
https://mpv.io/manual/master/#properties
mpv has a few non property based switches which are generally not supported in mpv.net.
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>`
### add-to-path
Adds mpv.net to the Path environment variable.
### remove-from-path
Removes mpv.net from the Path environment variable.
### edit-conf-file [mpv.conf|input.conf]
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).
### open-conf-folder
Opens the config folder with Windows File Explorer.
### open-files [\<flags\>]
**append**
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.
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.
ISO images don't have to be mounted, but instead can be
opened directly with the open-files command.
### open-clipboard [\<flags\>]
Opens URLs or filepaths from the clipboard,
or files in the file clipboard format.
**append**
Appends files/URLs to the playlist.
### play-pause
Cycles the pause property. In case the playlist is empty,
the most recent file from the recent files list is loaded.
### reg-file-assoc \<audio|video|image\>
Registers the file associations.
### scale-window \<factor\>
Decreases or increases the Window size.
### shell-execute \<file|URL\>
Shell executes a single file or URL.
### show-about
Shows the about dialog.
### show-audio-devices
Shows available audio devices in a message box.
### show-commands
Shows available [mpv input commands](https://mpv.io/manual/master/#list-of-input-commands).
### show-properties
Shows available [properties](https://mpv.io/manual/master/#properties).
### show-keys
Shows available [input keys](https://mpv.io/manual/master/#options-input-keylist).
### show-protocols
Shows available [protocols](https://mpv.io/manual/master/#options-list-protocols).
### show-decoders
Shows available decoders.
### show-demuxers
Shows available demuxers.
### show-conf-editor
Shows the conf editor.
### show-input-editor
Shows the input editor.
### show-media-info [\<flags\>]
**msgbox**
Shows media info in a messsage box.
**editor**
Shows media info in a text editor.
**osd**
Shows media info on screen.
**full**
Shows fully detailed media info.
**raw**
Shows media info with raw property names.
### show-menu
Shows the context menu.
### show-profiles
Shows available profiles with a message box.
### show-text \<text\> \<duration\> \<font-size\>
Shows a OSD message with given text, duration and font size.
### window-scale \<factor\>
Works similar as the [window-scale](https://mpv.io/manual/master/#command-interface-window-scale) mpv property.
mpv.net specific options
------------------------
mpv.net specific options can be found in the conf editor searching for 'mpv.net'.
The options are saved in the mpvnet.conf file.
#### --autofit-audio \<integer\>
Initial window height in percent for audio files. Default: 70
#### --autofit-image \<integer\>
Initial window height in percent for image files. Default: 80
#### --queue \<files\>
Adds files to the playlist, requires [--process-instance=single](#--process-instancevalue).
[Open with++](#open-with) can be used to add files to the playlist using File Explorer.
#### --command=\<input command\>
Sends a input command to a running mpv.net instance via command line, for instance
to create global keyboard shortcuts with AutoHotkey. Requires [process-instance=single](#--process-instancevalue).
### Audio
#### --remember-audio-device=\<yes|no\>
Save and restore the audio device chosen in the context menu. Default: yes
#### --remember-volume=\<yes|no\>
Save volume and mute on exit and restore it on start. Default: yes
### Screen
#### --start-size=\<value\>
Setting to remember the window size.
**width-session**
Width is remembered in the current session.
**width-always**
Width is always remembered.
**height-session**
Height is remembered in the current session. Default
**height-always**
Height is always remembered.
**video**
Window size is set to video resolution.
**session**
Window size is remembered in the current session.
**always**
Window size is always remembered.
#### --minimum-aspect-ratio=\<float\>
Minimum aspect ratio of the window. Useful to force
a wider window and therefore a larger OSC.
#### --minimum-aspect-ratio-audio=\<float\>
Same as minimum-aspect-ratio but used for audio files.
#### --remember-window-position=\<yes|no\>
Save the window position on exit. Default: no
#### --start-threshold=\<milliseconds\>
Threshold in milliseconds to wait for libmpv returning the video
resolution before the window is shown, otherwise default dimensions
are used as defined by autofit and start-size. Default: 1500
### Playback
#### --auto-load-folder=\<yes|no\>
For single files automatically load the entire directory
into the playlist. This option by default is disabled.
The option is deprecated because mpv now has native
support for it using `autocreate-playlist`,
which by default mpv.net sets to `autocreate-playlist=filter`.
### General
#### --menu-syntax=\<value\>
Used menu syntax for defining the context menu in input.conf.
mpv.net by default uses `#menu:`, uosc uses `#!` by default.
#### --process-instance=\<value\>
Defines if more then one mpv.net process is allowed.
Whenever the CTRL key is pressed when files or URLs are opened,
the playlist is not cleared but the files or URLs are appended to the playlist.
This not only works on process startup but in all mpv.net features that open files and URLs.
Multi can alternatively be enabled by pressing the SHIFT key.
**multi**
Create a new process everytime the shell starts mpv.net.
**single**
Force a single process everytime the shell starts mpv.net. Default
**queue**
Force a single process and add files to playlist.
#### --recent-count=\<int\>
Amount of recent files to be remembered. Default: 15
#### --media-info=\<yes|no\>
Usage of the media info library instead of mpv to access media information. Default: yes (mpv.net specific option)
#### --debug-mode=\<yes|no\>
Enable this only when a developer asks for it. Default: no
### UI
#### --language=\<value\>
User interface display language.
mpv.net must be restarted after a change.
Work on the translation is done with transifex:
https://app.transifex.com/stax76/teams/
#### --dark-mode=\<value\>
Enables a dark theme.
**always**
Default
**system**
Available on Windows 10 or higher.
**never**
#### --dark-theme=\<string\>
Color theme used in dark mode. Default: dark
[Color Themes](#color-theme)
#### --light-theme=\<string\>
Color theme used in light mode. Default: light
[Color Themes](#color-theme)
External Tools
--------------
### Play with mpv
In order to play videos from sites such as YouTube the Chrome Extension [Play with mpv](https://chrome.google.com/webstore/detail/play-with-mpv/hahklcmnfgffdlchjigehabfbiigleji) can be used.
Due to Chrome Extensions not being able to start a app, another app that communicates with the extension is required, this app can be downloaded [here](http://www.mediafire.com/file/lezj8lwqt5zf75v/play-with-mpvnet-server.7z/file). The extension works only when the app is running, to have the app always running a link can be created in the auto start folder located at:
`C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup`
This will start the app on system start and have it running in the background. When the file association registration of mpv.net was executed then the app should find the location of mpv.net, alternativly the mpv.net folder can be added to the Path environment variable.
### Open With
Alternatively the Chrome/Firefox extension [Open With](../../../issues/119) can be used.
### Open with++
[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 Launcher
Videos can be streamed or downloaded easily with the Chrome extension
[External Application Launcher](https://chromewebstore.google.com/detail/external-application-laun/bifmfjgpgndemajpeeoiopbeilbaifdo),
for download (recommended):
path: `wt`
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
---------
#### Lua
A very large collection of user scripts can be found in the GitHub repository
[awesome-mpv](https://github.com/stax76/awesome-mpv).
Lua scripting is documented in the mpv.net wiki [here](https://github.com/mpvnet-player/mpv.net/wiki/Extending-mpv-and-mpv.net-via-Lua-scripting).
#### JavaScript
[mpv JavaScript documentation](https://mpv.io/manual/master/#javascript)
.NET Extensions
---------------
.NET Extensions are located in a subfolder _extensions_ in the config folder,
the filename must have the same name as the directory:
```Text
<config folder>\extensions\ExampleExtension\ExampleExtension.dll
```
Color Theme
-----------
mpv.net supports custom color themes, the definition of the built-in themes can be found at:
[theme.txt](../../../tree/main/src/Resources/theme.txt)
Custom themes can be saved at:
`<conf folder>\theme.conf`
The theme.conf file may contain multiple themes.
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.
Advanced Features
-----------------
### Playback of VapourSynth scripts
vpy files are supported with following mpv.conf configuration:
```
[extension.vpy]
demuxer-lavf-format = vapoursynth
```
Python and VapourSynth must be in the path environment variable.
Differences compared to mpv
---------------------------
mpv.net is designed to work exactly like mpv, there are a few
differences and limitations:
The configuration folder is named `mpv.net` instead of `mpv`:
`C:\Users\username\AppData\Roaming\mpv.net`
### Window Limitations
mpv.net implements an own main window which means only mpv window
features are supported that have an own implementation in mpv.net.
A window free mode is currently not supported, the main window is always
visible, even when mpv.net is started from the terminal and music is played.
For mpv.net it's currently not possible to find out where OSC menus are located,
but there are 3 features that require this information, therefore mpv.net
makes the assumption that near the window borders might be OSC menus. As a result
the following three features, work only when invoked from the center of the window:
1. Window dragging (moving the window with the mouse).
2. Showing the context menu.
3. Auto hiding the mouse cursor.
When the mouse is near a window border, these 3 features are not available.
The dead zone sizes are 10% left, top, right and 22% bottom.
The documentation of mpv's window features can be found here:
https://mpv.io/manual/master/#window
**mpv.net has currently implemented the following window properties:**
- [border](https://mpv.io/manual/master/#options-border)
- [cursor-autohide](https://mpv.io/manual/master/#options-cursor-autohide)
- [fullscreen](https://mpv.io/manual/master/#options-fullscreen)
- [keepaspect-window](https://mpv.io/manual/master/#options-keepaspect-window)
- [ontop](https://mpv.io/manual/master/#options-ontop)
- [screen](https://mpv.io/manual/master/#options-screen)
- [snap-window](https://mpv.io/manual/master/#options-snap-window)
- [title-bar](https://mpv.io/manual/master/#options-title-bar)
- [title](https://mpv.io/manual/master/#options-title)
- [window-maximized](https://mpv.io/manual/master/#options-window-maximized)
- [window-minimized](https://mpv.io/manual/master/#options-window-minimized)
- [window-scale](https://mpv.io/manual/master/#options-window-scale)
**Partly implemented or modified:**
#### --autofit=\<int\>
\<int\> Initial window height in percent. Default: 60
#### --autofit-smaller=\<int\>
\<int\> Minimum window height in percent. Default: 10
#### --autofit-larger=\<int\>
\<int\> Maximum window height in percent. Default: 80
#### --geometry\<x:y\>
Initial window location in percent. Default: 50:50 (centered)
Requires Windows 11, on Windows 10 it works slightly incorrect due to invisible borders.
x=0 docks the window to the left side.
x=100 docks the window to the right side.
y=0 docks the window to the top side.
y=100 docks the window to the bottom side.
#### --title-bar=\<yes|no\>
Shows the window title bar. Default: yes
**mpv.net specific window features:**
mpv.net specific window features are documented in the [screen section](#screen).
### Command Line Limitations
mpv.net supports property based mpv command line options which means it supports
almost all mpv command line options.
What is not supported are non property bases options. Non property based options
need an own implementation in mpv.net, so far implemented are:
--ad=help
--audio-device=help
--input-keylist
--profile=help
--vd=help
--version
### Other Limitations
The mpv property [idle](https://mpv.io/manual/master/#options-idle) can be
used and mpv.net functions accordingly, but Lua scripts always see `idle=yes`
because mpv.net has to set it to function correctly, this is a difficult
to overcome libmpv limitation.
### mpv.net specific options
Options that are specific to mpv.net can be found by entering _mpv.net_
in the search field of the config editor, in the mpv.net manual they are
documented [here](#mpvnet-specific-options).
mpv.net specific options are saved in the file mpvnet.conf and are just
as mpv properties available on the command line.
Environment Variables
---------------------
### MPVNET_HOME
Directory where mpv.net looks for the user configuration.
user-data
---------
Script authors can access the following
[user-data](https://mpv.io/manual/master/#command-interface-user-data) properties:
```
user-data/frontend/name
user-data/frontend/version
user-data/frontend/process-path
```
Contributing
------------
Work on the translation is done with transifex, translators have to create a transifex account:
https://app.transifex.com/stax76/teams/
For translation questions visit:
https://github.com/mpvnet-player/mpv.net/issues/576

1516
docs/manual_chs.md Normal file

File diff suppressed because it is too large Load Diff

2
docs/privacy.md Normal file
View File

@@ -0,0 +1,2 @@
mpv.net does not collect any personal information.

20
lang/create-mo-files.ps1 Normal file
View File

@@ -0,0 +1,20 @@
$ErrorActionPreference = 'Stop'
$PoFiles = Get-ChildItem $PSScriptRoot/po
$ExeFolder = "$PSScriptRoot/../src/MpvNet.Windows/bin/Debug"
foreach ($it in $PoFiles)
{
$folder = "$ExeFolder/Locale/$($it.BaseName)/LC_MESSAGES"
if (-not (Test-Path $folder))
{
New-Item -ItemType Directory -Path $folder | Out-Null
}
$moPath = "$folder/mpvnet.mo"
msgfmt --output-file=$moPath $it.FullName
if ($LastExitCode) { throw $LastExitCode }
$moPath
}

111
lang/cs-files.txt Normal file
View File

@@ -0,0 +1,111 @@
D:\Projects\CS\mpv.net\src\MpvNet\App.cs
D:\Projects\CS\mpv.net\src\MpvNet\AppInfo.cs
D:\Projects\CS\mpv.net\src\MpvNet\Binding.cs
D:\Projects\CS\mpv.net\src\MpvNet\Chapter.cs
D:\Projects\CS\mpv.net\src\MpvNet\Command.cs
D:\Projects\CS\mpv.net\src\MpvNet\CommandLine.cs
D:\Projects\CS\mpv.net\src\MpvNet\ExtensionLoader.cs
D:\Projects\CS\mpv.net\src\MpvNet\FileTypes.cs
D:\Projects\CS\mpv.net\src\MpvNet\Folder.cs
D:\Projects\CS\mpv.net\src\MpvNet\Global.cs
D:\Projects\CS\mpv.net\src\MpvNet\GlobalUsings.cs
D:\Projects\CS\mpv.net\src\MpvNet\InputConf.cs
D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs
D:\Projects\CS\mpv.net\src\MpvNet\MediaTrack.cs
D:\Projects\CS\mpv.net\src\MpvNet\MpvClient.cs
D:\Projects\CS\mpv.net\src\MpvNet\Player.cs
D:\Projects\CS\mpv.net\src\MpvNet\Settings.cs
D:\Projects\CS\mpv.net\src\MpvNet\StringPair.cs
D:\Projects\CS\mpv.net\src\MpvNet\Terminal.cs
D:\Projects\CS\mpv.net\src\MpvNet\Translator.cs
D:\Projects\CS\mpv.net\src\MpvNet\ExtensionMethod\ObjectExtension.cs
D:\Projects\CS\mpv.net\src\MpvNet\ExtensionMethod\PathStringExtension.cs
D:\Projects\CS\mpv.net\src\MpvNet\ExtensionMethod\StringExtension.cs
D:\Projects\CS\mpv.net\src\MpvNet\Help\FileHelp.cs
D:\Projects\CS\mpv.net\src\MpvNet\Help\MpvHelp.cs
D:\Projects\CS\mpv.net\src\MpvNet\Help\ProcessHelp.cs
D:\Projects\CS\mpv.net\src\MpvNet\Help\StringHelp.cs
D:\Projects\CS\mpv.net\src\MpvNet\Help\TaskHelp.cs
D:\Projects\CS\mpv.net\src\MpvNet\MVVM\Messages.cs
D:\Projects\CS\mpv.net\src\MpvNet\Native\LibMpv.cs
D:\Projects\CS\mpv.net\src\MpvNet\Native\MediaInfo.cs
D:\Projects\CS\mpv.net\src\MpvNet\Native\StringLogicalComparer.cs
D:\Projects\CS\mpv.net\src\MpvNet.Extension\ExampleExtension\ExampleExtension.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\Conf.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\FileAssociation.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\GlobalUsings.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\Program.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\Settings.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\Help\RegistryHelp.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\Help\WinApiHelp.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\Native\StockIcon.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\Native\Taskbar.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\Native\WinApi.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\Properties\Resources.Designer.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\UI\GlobalHotkey.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\UI\Theme.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\UI\TreeNode.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.Designer.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\SnapManager.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\BindingProxy.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\ComboBoxTemplateSelector.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\ConfWindow.xaml.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\InputWindow.xaml.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\ISettingControl.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\LearnWindow.xaml.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\MenuHelp.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Msg.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\WpfApplication.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\WpfTranslator.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Controls\ComboBoxSettingControl.xaml.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Controls\HyperlinkEx.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Controls\OptionSettingControl.xaml.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Controls\SearchControl.xaml.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Controls\StringSettingControl.xaml.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Controls\ScrollViewer.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Controls\SimplePanel.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Controls\Attach\BorderElement.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Controls\Attach\IconElement.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Controls\Attach\MenuTopLineAttach.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Controls\Attach\ScrollViewerAttach.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Data\ValueBoxes.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Tools\AnimationHelper.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Tools\RegexPatterns.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Tools\Converter\BorderCircularConverter.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Tools\Extension\StringExtension.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Tools\Helper\ScreenHelper.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Tools\Helper\VisualHelper.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Tools\Interop\InteropMethods.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Tools\Interop\InteropValues.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Tools\Interop\Handle\BitmapHandle.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Tools\Interop\Handle\CommonHandles.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Tools\Interop\Handle\HandleCollector.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\HandyControl\Tools\Interop\Handle\WpfSafeHandle.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\MsgBox\MessageBoxEx.xaml.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\MsgBox\MsgBoxExCheckBoxData.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\MsgBox\MsgBoxExDelegate.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\MsgBox\MsgBoxExStatic.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\MsgBox\MsgBoxExtendedFunctionality.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\MsgBox\MsgBoxUrl.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\MsgBox\MsgEnum.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\ViewModels\AboutViewModel.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\ViewModels\NodeViewModel.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\ViewModels\ViewModelBase.cs
D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\Views\AboutWindow.xaml.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\ChangeCultureCommand.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\CompositionRoot.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\CultureEventArgs.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\CultureTracker.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\GettextExtension.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\GettextFormatConverterExtension.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\IWeakCultureObserver.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\Localizer.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\TrackCurrentCultureBehavior.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\Translation.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\Common\GettextStringFormatConverter.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\EnumTranslation\EnumLocalizer.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\EnumTranslation\EnumMsgIdAttribute.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\EnumTranslation\LocalizeEnumConverter.cs
D:\Projects\CS\mpv.net\src\NGettext.Wpf\Properties\AssemblyInfo.cs

1013
lang/po/bg.po Normal file

File diff suppressed because it is too large Load Diff

999
lang/po/de.po Normal file
View File

@@ -0,0 +1,999 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# Frank Skare, 2025
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-06 00:24+0200\n"
"PO-Revision-Date: 2023-12-08 00:34+0000\n"
"Last-Translator: Frank Skare, 2025\n"
"Language-Team: German (https://app.transifex.com/stax76/teams/179964/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\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 "Datei"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:12
msgid "Open Files..."
msgstr "Dateien öffnen..."
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:13
msgid "Open URL or file from clipboard"
msgstr "URL oder Datei aus der Zwischenablage öffnen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:14
msgid "Open DVD/Blu-ray Drive/Folder..."
msgstr "DVD/Blu-ray-Laufwerk/Ordner öffnen..."
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:16
msgid "Add external audio files..."
msgstr "Externe Audiodateien hinzufügen..."
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:17
msgid "Add external subtitle files..."
msgstr "Externe Untertiteldateien hinzufügen..."
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:19
msgid "Add files to playlist..."
msgstr "Dateien zur Wiedergabeliste hinzufügen..."
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:20
msgid "Add files/URLs to playlist from clipboard"
msgstr "Dateien/URLs zur Wiedergabeliste aus der Zwischenablage hinzufügen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:22
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:372
msgid "Recent Files"
msgstr "Zuletzt geöffnete Dateien"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:23
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:201
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:233
msgid "Exit"
msgstr "Beenden"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:25
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26
msgid "Playback"
msgstr "Wiedergabe"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:25
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:203
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:204
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:205
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:206
msgid "Play/Pause"
msgstr "Wiedergabe/Pause"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:207
msgid "Stop"
msgstr "Stopp"
#: 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 "Navigieren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:28
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:214
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:216
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:218
msgid "Previous File"
msgstr "Vorherige Datei"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:29
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:215
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:217
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:219
msgid "Next File"
msgstr "Nächste Datei"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:31
msgid "First File"
msgstr "Erste Datei"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:32
msgid "Last File"
msgstr "Letzte Datei"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:35
msgid "Next Chapter"
msgstr "Nächstes Kapitel"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:36
msgid "Previous Chapter"
msgstr "Vorheriges Kapitel"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:38
msgid "Jump To Next Frame"
msgstr "Zum nächsten Bild springen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:39
msgid "Jump To Previous Frame"
msgstr "Zum vorherigen Bild springen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:41
msgid "Jump 5 sec forward"
msgstr "5 Sekunden vorwärts springen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:42
msgid "Jump 5 sec backward"
msgstr "5 Sekunden rückwärts springen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:44
msgid "Jump 30 sec forward"
msgstr "30 Sekunden vorwärts springen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:45
msgid "Jump 30 sec backward"
msgstr "30 Sekunden rückwärts springen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:47
msgid "Jump 5 min forward"
msgstr "5 Minuten vorwärts springen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:48
msgid "Jump 5 min backward"
msgstr "5 Minuten rückwärts springen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:50
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:393
msgid "Title"
msgstr "Titel"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:51
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:351
msgid "Chapter"
msgstr "Kapitel"
#: 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 "Pan & Scan"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:53
msgid "Decrease Size"
msgstr "Größe verringern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:54
msgid "Increase Size"
msgstr "Größe erhöhen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:56
msgid "Move Left"
msgstr "Nach links bewegen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:57
msgid "Move Right"
msgstr "Nach rechts bewegen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:59
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:97
msgid "Move Up"
msgstr "Nach oben bewegen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:60
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:98
msgid "Move Down"
msgstr "Nach unten bewegen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:62
msgid "Decrease Height"
msgstr "Höhe verringern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:63
msgid "Increase Height"
msgstr "Höhe erhöhen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:65
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:118
msgid "Reset"
msgstr "Zurücksetzen"
#: 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 "Video"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:67
msgid "Decrease Contrast"
msgstr "Kontrast verringern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:68
msgid "Increase Contrast"
msgstr "Kontrast erhöhen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:70
msgid "Decrease Brightness"
msgstr "Helligkeit verringern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:71
msgid "Increase Brightness"
msgstr "Helligkeit erhöhen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:73
msgid "Decrease Gamma"
msgstr "Gamma verringern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:74
msgid "Increase Gamma"
msgstr "Gamma erhöhen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:76
msgid "Decrease Saturation"
msgstr "Sättigung verringern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:77
msgid "Increase Saturation"
msgstr "Sättigung erhöhen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:79
msgid "Take Screenshot"
msgstr "Bildschirmfoto machen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:80
msgid "Take Screenshot without subtitles"
msgstr "Bildschirmfoto ohne Untertitel machen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:81
msgid "Toggle Deinterlace"
msgstr "Deinterlace umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:82
msgid "Change Aspect Ratio"
msgstr "Seitenverhältnis ändern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:83
msgid "Rotate Video"
msgstr "Video drehen"
#: 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 "Audio"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:85
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:453
msgid "Audio Device"
msgstr "Audiogerät"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:86
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:91
msgid "Next Track"
msgstr "Nächster Titel"
#: 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 "Verzögerung +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 "Verzögerung -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 "Untertitel"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:92
msgid "Toggle Visibility"
msgstr "Sichtbarkeit umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:100
msgid "Decrease Font Size"
msgstr "Schriftgröße verringern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:101
msgid "Increase Font Size"
msgstr "Schriftgröße erhöhen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: 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
msgid "More"
msgstr "Mehr"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103
msgid "Toggle overriding SSA/ASS styles with normal styles"
msgstr "Überschreiben von SSA/ASS-Stilen mit normalen Stilen umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:105
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:289
msgid "Track"
msgstr "Spur"
#: 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 "Lautstärke"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:107
msgctxt "Volume"
msgid "Up"
msgstr "Hoch"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:108
msgctxt "Volume"
msgid "Down"
msgstr "Runter"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:110
msgid "Mute"
msgstr "Stumm"
#: 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 "Geschwindigkeit"
#: 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 "Halb"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:116
msgid "Double"
msgstr "Doppelt"
#: 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:125
#: 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:137
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: 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
msgid "View"
msgstr "Ansicht"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:234
msgid "Playlist"
msgstr "Wiedergabeliste"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121
msgid "Toggle Statistics"
msgstr "Statistiken umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:122
msgid "Toggle OSC Visibility"
msgstr "Bildschirmschaltflächen-Sichtbarkeit umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:123
msgid "Media Info On-Screen"
msgstr "Media Info Bildschirm"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:124
msgid "Media Info Message Box"
msgstr "Media Info Message Box"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:125
msgid "Progress"
msgstr "Fortschritt"
#: 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:137
#: 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:248
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:249
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:250
msgid "On-Screen Menu"
msgstr "Bildschirmmenü"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:246
msgid "Bindings"
msgstr "Tastaturkurzbefehle"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:247
msgid "Properties"
msgstr "Eigenschaften"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:240
msgid "Chapters"
msgstr "Kapitel"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:239
msgid "Tracks"
msgstr "Spuren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:237
msgid "Audio Tracks"
msgstr "Audiospuren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
msgid "Subtitle Tracks"
msgstr "Untertitelspuren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
msgid "Secondary Subtitle"
msgstr "Sekundärer Untertitel"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:238
msgid "Video Tracks"
msgstr "Videospuren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:241
msgid "Editions"
msgstr "Editionen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:242
msgid "Subtitle Lines"
msgstr "Untertitellinien"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:243
msgid "Audio Devices"
msgstr "Audiogeräte"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:244
msgid "Watch History"
msgstr "Anschauverlauf"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:245
msgid "Watch Later"
msgstr "Später Anschauen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
msgid "Console"
msgstr "Konsole"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
msgid "Commands"
msgstr "Befehle"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "Active Bindings In Text Editor"
msgstr "Aktive Tastaturkombinationen Im Texteditor"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
msgid "Active Bindings On-Screen"
msgstr "Aktive Tastaturkombinationen Auf Bildschirm"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
msgid "Keys"
msgstr "Tastaturkombinationen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
msgid "Protocols"
msgstr "Protokolle"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
msgid "Decoders"
msgstr "Dekoder"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "Demuxers"
msgstr "Demuxer"
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
msgid "Window"
msgstr "Fenster"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:221
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:222
msgid "Fullscreen"
msgstr "Vollbild"
#: 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
msgid "Zoom"
msgstr "Zoom"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
msgid "Enlarge"
msgstr "Vergrößern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
msgid "Shrink"
msgstr "Verkleinern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
msgid "50 %"
msgstr "50 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
msgid "100 %"
msgstr "100 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
msgid "200 %"
msgstr "200 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgid "300 %"
msgstr "300 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgid "Move"
msgstr "Verschieben"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
msgctxt "Move"
msgid "Left"
msgstr "Links"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
msgctxt "Move"
msgid "Right"
msgstr "Rechts"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
msgctxt "Move"
msgid "Up"
msgstr "Hoch"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
msgctxt "Move"
msgid "Down"
msgstr "Runter"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgctxt "Move"
msgid "Center"
msgstr "Mitte"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
msgid "Toggle Border"
msgstr "Rahmen umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
msgid "Toggle On Top"
msgstr "Fenster im Vordergrund umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:426
msgid "Profile"
msgstr "Profil"
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: 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
msgid "Config"
msgstr "Konfiguration"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:169
msgid "Show Config Editor"
msgstr "Konfigurationseditor anzeigen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
msgid "Show Input Editor"
msgstr "Tastenkombinationeneditor anzeigen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
msgid "Edit mpv.conf"
msgstr "mpv.conf bearbeiten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
msgid "Edit input.conf"
msgstr "input.conf bearbeiten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:175
msgid "Open Config Folder"
msgstr "Konfigurationsordner öffnen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: 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
msgid "Setup"
msgstr "Einrichten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
msgid "Register video file associations"
msgstr "Video-Dateizuordnungen registrieren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Register audio file associations"
msgstr "Audio-Dateizuordnungen registrieren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
msgid "Register image file associations"
msgstr "Bild-Dateizuordnungen registrieren"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
msgid "Unregister file associations"
msgstr "Dateizuordnungen entfernen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
msgid "Add mpv.net to Path environment variable"
msgstr "mpv.net zur Umgebungsvariable Path hinzufügen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
msgid "Remove mpv.net from Path environment variable"
msgstr "mpv.net aus der Umgebungsvariablen 'Path' entfernen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Tools"
msgstr "Werkzeuge"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
msgid "Set/clear A-B loop points"
msgstr "Setzen/Löschen von A-B Schleifenpunkten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
msgid "Toggle infinite file looping"
msgstr "Unendliche Dateischleife umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
msgid "Shuffle Playlist"
msgstr "Wiedergabeliste mischen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
msgid "Toggle Hardware Decoding"
msgstr "Hardware-Decodierung umschalten"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Exit Watch Later"
msgstr "Beenden und später anschauen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:477
msgid "Custom"
msgstr "Benutzerdefiniert"
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:197
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "Help"
msgstr "Hilfe"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192
msgid "Website mpv"
msgstr "Webseite mpv"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
msgid "Website mpv.net"
msgstr "Webseite mpv.net"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
msgid "Manual mpv"
msgstr "Handbuch mpv"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
msgid "Manual mpv.net"
msgstr "Handbuch mpv.net"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
msgid "awesome-mpv"
msgstr "awesome-mpv"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "About mpv.net"
msgstr "Über mpv.net"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:202
msgid "Show Menu"
msgstr "Menü anzeigen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:208
msgid "Forward"
msgstr "Vorwärts"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:209
msgid "Backward"
msgstr "Rückwärts"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:210
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:212
msgid "Volume Up"
msgstr "Lautstärke erhöhen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:211
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:213
msgid "Volume Down"
msgstr "Lautstärke verringern"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:220
msgid "Ignore left mouse butten"
msgstr "Ignoriere die linke Maustaste"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:223
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:225
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:231
msgid "Seek Forward"
msgstr "Suchen vorwärts"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:224
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:226
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:232
msgid "Seek Backward"
msgstr "Suchen rückwärts"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:227
msgid "Undo previous (or marked) seek"
msgstr "Rückgängig machen vorherige (oder markierte) Suche"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:228
msgid "Mark position for revert-seek"
msgstr "Markieren der Position für die Rückwärtssuche"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:229
msgid "Seek to previous subtitle"
msgstr "Zum vorherigen Untertitel springen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:230
msgid "Seek to next subtitle"
msgstr "Zum nächsten Untertitel springen"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:235
msgid "Subtitles"
msgstr "Untertitel"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:236
msgid "Secondary Subtitles"
msgstr "Zweite Untertitel"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:192
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:214
msgid "Files/URLs were added to the playlist"
msgstr "Dateien/URLs wurden zur Wiedergabeliste hinzugefügt"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:207
msgid "The clipboard does not contain a valid URL or file."
msgstr "Die Zwischenablage enthält keine gültige URL oder Datei."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:262
msgid "File Explorer icons will refresh after process restart."
msgstr ""
"Datei-Explorer-Symbole werden nach dem Neustart des Prozesses aktualisiert."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:265
msgid "File associations were successfully removed."
msgstr "Dateizuordnungen wurden erfolgreich entfernt."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:267
msgid "File associations were successfully created."
msgstr "Dateizuordnungen wurden erfolgreich erstellt."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:270
msgid "Error creating file associations."
msgstr "Fehler beim Erstellen von Dateizuordnungen."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:387
msgid "mpv.net is already in the Path environment variable."
msgstr "mpv.net ist bereits in der 'Path' Umgebungsvariable enthalten."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:395
msgid "mpv.net was successfully added to the Path environment variable."
msgstr "mpv.net wurde erfolgreich zur 'Path' Umgebungsvariable hinzugefügt."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:404
msgid "mpv.net was not found in the Path environment variable."
msgstr "mpv.net wurde nicht in der 'Path' Umgebungsvariable gefunden."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:413
msgid "mpv.net was successfully removed from the Path environment variable."
msgstr "mpv.net wurde erfolgreich aus der 'Path' Umgebungsvariable entfernt."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:418
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:423
msgid "This feature was removed, but there are user scripts:"
msgstr "Diese Funktion wurde entfernt, aber es gibt Benutzerskripte:"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:427
msgid "This feature was removed."
msgstr "Diese Funktion wurde entfernt."
#: 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 "theme"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:388
msgid "Clear List"
msgstr "Liste löschen"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:448
msgid "Show Profiles"
msgstr "Profile anzeigen"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:1432
msgid "Shutdown thread failed to complete within 10 seconds."
msgstr ""
"Shutdown-Thread konnte nicht innerhalb von 10 Sekunden abgeschlossen werden."
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\InputWindow.xaml.cs:116
msgid "Changes will be available on next startup."
msgstr "Änderungen werden beim nächsten Start verfügbar sein."

1028
lang/po/fr.po Normal file

File diff suppressed because it is too large Load Diff

997
lang/po/ja.po Normal file
View File

@@ -0,0 +1,997 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# ever_green, 2025
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-06 00:24+0200\n"
"PO-Revision-Date: 2023-12-08 00:34+0000\n"
"Last-Translator: ever_green, 2025\n"
"Language-Team: Japanese (https://app.transifex.com/stax76/teams/179964/ja/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ja\n"
"Plural-Forms: nplurals=1; plural=0;\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:372
msgid "Recent Files"
msgstr "最近のファイル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:23
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:201
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:233
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:203
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:204
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:205
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:206
msgid "Play/Pause"
msgstr "再生/一時停止"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:207
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:214
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:216
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:218
msgid "Previous File"
msgstr "前のファイル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:29
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:215
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:217
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:219
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:393
msgid "Title"
msgstr "タイトル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:51
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:351
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 "インターレース解除の切り替え"
#: 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:453
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:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: 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
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:289
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 "1/2"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:116
msgid "Double"
msgstr "2 倍"
#: 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:125
#: 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:137
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: 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
msgid "View"
msgstr "表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:234
msgid "Playlist"
msgstr "プレイリスト"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121
msgid "Toggle Statistics"
msgstr "統計情報の切り替え"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:122
msgid "Toggle OSC Visibility"
msgstr "OSC 表示の切り替え"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:123
msgid "Media Info On-Screen"
msgstr "画面メディア情報"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:124
msgid "Media Info Message Box"
msgstr "メッセージメディア情報"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:125
msgid "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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: 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:248
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:249
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:250
msgid "On-Screen Menu"
msgstr "画面メニュー"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:246
msgid "Bindings"
msgstr "バインディング"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:247
msgid "Properties"
msgstr "プロパティ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:240
msgid "Chapters"
msgstr "チャプター"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:239
msgid "Tracks"
msgstr "トラック"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:237
msgid "Audio Tracks"
msgstr "オーディオトラック"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
msgid "Subtitle Tracks"
msgstr "字幕トラック"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
msgid "Secondary Subtitle"
msgstr "セカンダリ字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:238
msgid "Video Tracks"
msgstr "ビデオトラック"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:241
msgid "Editions"
msgstr "エディション"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:242
msgid "Subtitle Lines"
msgstr "字幕ライン"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:243
msgid "Audio Devices"
msgstr "オーディオデバイス"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:244
msgid "Watch History"
msgstr "再生履歴"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:245
msgid "Watch Later"
msgstr "再生位置を保存"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
msgid "Console"
msgstr "コンソール"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
msgid "Commands"
msgstr "コマンド"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "Active Bindings In Text Editor"
msgstr "キーバインドをエディタで編集"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
msgid "Active Bindings On-Screen"
msgstr "キーバインドを画面に表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
msgid "Keys"
msgstr "キー"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
msgid "Protocols"
msgstr "プロトコル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
msgid "Decoders"
msgstr "デコーダー"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "Demuxers"
msgstr "デマルチプレクサ"
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
msgid "Window"
msgstr "ウィンドウ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:221
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:222
msgid "Fullscreen"
msgstr "フルスクリーン"
#: 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
msgid "Zoom"
msgstr "ズーム"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
msgid "Enlarge"
msgstr "拡大"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
msgid "Shrink"
msgstr "縮小"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
msgid "50 %"
msgstr "50 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
msgid "100 %"
msgstr "100 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
msgid "200 %"
msgstr "200 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgid "300 %"
msgstr "300 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgid "Move"
msgstr "移動"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
msgctxt "Move"
msgid "Left"
msgstr "左へ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
msgctxt "Move"
msgid "Right"
msgstr "右へ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
msgctxt "Move"
msgid "Up"
msgstr "上へ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
msgctxt "Move"
msgid "Down"
msgstr "下へ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgctxt "Move"
msgid "Center"
msgstr "中央"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
msgid "Toggle Border"
msgstr "ボーダーの切り替え"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
msgid "Toggle On Top"
msgstr "常に手前に表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:426
msgid "Profile"
msgstr "プロファイル"
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: 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
msgid "Config"
msgstr "設定"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:169
msgid "Show Config Editor"
msgstr "構成エディターを表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
msgid "Show Input Editor"
msgstr "入力エディターを表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
msgid "Edit mpv.conf"
msgstr "mpv.conf の編集"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
msgid "Edit input.conf"
msgstr "input.conf の編集"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:175
msgid "Open Config Folder"
msgstr "構成フォルダを開く"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: 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
msgid "Setup"
msgstr "セットアップ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
msgid "Register video file associations"
msgstr "ビデオファイルの関連付けを登録"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Register audio file associations"
msgstr "オーディオファイルの関連付けを登録"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
msgid "Register image file associations"
msgstr "画像ファイルの関連付けを登録"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
msgid "Unregister file associations"
msgstr "ファイルの関連付けの登録解除"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
msgid "Add mpv.net to Path environment variable"
msgstr "mpv.net を Path 環境変数へ追加"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
msgid "Remove mpv.net from Path environment variable"
msgstr "mpv.net を Path 環境変数から削除"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Tools"
msgstr "ツール"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
msgid "Set/clear A-B loop points"
msgstr "A-B 区間ループの設定/解除"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
msgid "Toggle infinite file looping"
msgstr "無限ファイルループの切り替え"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
msgid "Shuffle Playlist"
msgstr "プレイリストをシャッフル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
msgid "Toggle Hardware Decoding"
msgstr "ハードウェアデコードの切り替え"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Exit Watch Later"
msgstr "再生位置を保存して終了"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:477
msgid "Custom"
msgstr "カスタム"
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:197
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "Help"
msgstr "ヘルプ"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192
msgid "Website mpv"
msgstr "mpv ウェブサイト"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
msgid "Website mpv.net"
msgstr "mpv.net ウェブサイト"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
msgid "Manual mpv"
msgstr "mpv マニュアル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
msgid "Manual mpv.net"
msgstr "mpv.net マニュアル"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
msgid "awesome-mpv"
msgstr "awesome-mpv"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "About mpv.net"
msgstr "mpv.net のバージョン情報"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:202
msgid "Show Menu"
msgstr "メニューを表示"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:208
msgid "Forward"
msgstr "進む"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:209
msgid "Backward"
msgstr "戻る"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:210
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:212
msgid "Volume Up"
msgstr "音量を上げる"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:211
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:213
msgid "Volume Down"
msgstr "音量を下げる"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:220
msgid "Ignore left mouse butten"
msgstr "マウスの左ボタンを無視"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:223
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:225
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:231
msgid "Seek Forward"
msgstr "早送り"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:224
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:226
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:232
msgid "Seek Backward"
msgstr "早戻し"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:227
msgid "Undo previous (or marked) seek"
msgstr "直前の (またはマークした) シークを元に戻す"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:228
msgid "Mark position for revert-seek"
msgstr "戻り位置をマーク"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:229
msgid "Seek to previous subtitle"
msgstr "前の字幕へ戻る"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:230
msgid "Seek to next subtitle"
msgstr "次の字幕へ進む"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:235
msgid "Subtitles"
msgstr "字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:236
msgid "Secondary Subtitles"
msgstr "セカンダリ字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:192
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:214
msgid "Files/URLs were added to the playlist"
msgstr "ファイル/URL がプレイリストへ追加されました"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:207
msgid "The clipboard does not contain a valid URL or file."
msgstr "クリップボードに有効な URL またはファイルが含まれていません。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:262
msgid "File Explorer icons will refresh after process restart."
msgstr "ファイルエクスプローラーのアイコンは、プロセスの再起動後に更新されます。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:265
msgid "File associations were successfully removed."
msgstr "ファイルの関連付けは正常に削除されました。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:267
msgid "File associations were successfully created."
msgstr "ファイルの関連付けが正常に作成されました。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:270
msgid "Error creating file associations."
msgstr "ファイルの関連付けの作成中にエラーが発生しました。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:387
msgid "mpv.net is already in the Path environment variable."
msgstr "mpv.net は既に Path 環境変数にあります。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:395
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:404
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:413
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:418
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:423
msgid "This feature was removed, but there are user scripts:"
msgstr "この機能は削除されましたが、ユーザースクリプトがあります:"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:427
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:388
msgid "Clear List"
msgstr "リストをクリア"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:448
msgid "Show Profiles"
msgstr "プロファイルを表示"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:1432
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 "変更は次回の起動時に利用可能になります。"

1020
lang/po/ko.po Normal file

File diff suppressed because it is too large Load Diff

1022
lang/po/pl.po Normal file

File diff suppressed because it is too large Load Diff

1022
lang/po/ru.po Normal file

File diff suppressed because it is too large Load Diff

1009
lang/po/tr.po Normal file

File diff suppressed because it is too large Load Diff

998
lang/po/zh_CN.po Normal file
View File

@@ -0,0 +1,998 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# dyphire, 2023
# nkh0472 <nkh0472@hotmail.com>, 2025
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-06 00:24+0200\n"
"PO-Revision-Date: 2023-12-08 00:34+0000\n"
"Last-Translator: nkh0472 <nkh0472@hotmail.com>, 2025\n"
"Language-Team: Chinese (China) (https://app.transifex.com/stax76/teams/179964/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\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/蓝光驱动器/文件夹..."
#: 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:372
msgid "Recent Files"
msgstr "近期文件"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:23
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:201
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:233
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:203
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:204
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:205
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:206
msgid "Play/Pause"
msgstr "播放/暂停"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:207
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:214
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:216
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:218
msgid "Previous File"
msgstr "上一个文件"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:29
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:215
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:217
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:219
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:393
msgid "Title"
msgstr "标题"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:51
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:351
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 "切换 去隔行"
#: 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:453
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:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: 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
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:289
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:125
#: 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:137
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: 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
msgid "View"
msgstr "查看"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:234
msgid "Playlist"
msgstr "播放列表"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121
msgid "Toggle Statistics"
msgstr "切换 统计信息"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:122
msgid "Toggle OSC Visibility"
msgstr "切换 OSC 可见性"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:123
msgid "Media Info On-Screen"
msgstr "显示媒体信息"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:124
msgid "Media Info Message Box"
msgstr "媒体信息消息框"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:125
msgid "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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: 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:248
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:249
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:250
msgid "On-Screen Menu"
msgstr "屏幕菜单"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:246
msgid "Bindings"
msgstr "键位绑定"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:247
msgid "Properties"
msgstr "属性"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:240
msgid "Chapters"
msgstr "章节"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:239
msgid "Tracks"
msgstr "轨道"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:237
msgid "Audio Tracks"
msgstr "音频轨道"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
msgid "Subtitle Tracks"
msgstr "字幕轨道"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
msgid "Secondary Subtitle"
msgstr "第二字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:238
msgid "Video Tracks"
msgstr "视频轨道"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:241
msgid "Editions"
msgstr "版本"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:242
msgid "Subtitle Lines"
msgstr "字幕行"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:243
msgid "Audio Devices"
msgstr "音频设备"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:244
msgid "Watch History"
msgstr "观看历史"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:245
msgid "Watch Later"
msgstr "稍后观看"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
msgid "Console"
msgstr "控制台"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
msgid "Commands"
msgstr "命令"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "Active Bindings In Text Editor"
msgstr "文本编辑器中的活动绑定"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
msgid "Active Bindings On-Screen"
msgstr "屏幕上的活动绑定"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
msgid "Keys"
msgstr "键"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
msgid "Protocols"
msgstr "协议"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
msgid "Decoders"
msgstr "解码器"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "Demuxers"
msgstr "解复用器"
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
msgid "Window"
msgstr "窗口"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:221
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:222
msgid "Fullscreen"
msgstr "全屏"
#: 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
msgid "Zoom"
msgstr "缩放"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
msgid "Enlarge"
msgstr "放大"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
msgid "Shrink"
msgstr "缩小"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
msgid "50 %"
msgstr "50 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
msgid "100 %"
msgstr "100 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
msgid "200 %"
msgstr "200 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgid "300 %"
msgstr "300 %"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgid "Move"
msgstr "移动"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
msgctxt "Move"
msgid "Left"
msgstr "左移"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
msgctxt "Move"
msgid "Right"
msgstr "右移"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
msgctxt "Move"
msgid "Up"
msgstr "上移"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
msgctxt "Move"
msgid "Down"
msgstr "下移"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgctxt "Move"
msgid "Center"
msgstr "居中"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
msgid "Toggle Border"
msgstr "切换 边框"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
msgid "Toggle On Top"
msgstr "切换 置顶"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:426
msgid "Profile"
msgstr "配置文件"
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: 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
msgid "Config"
msgstr "配置"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:169
msgid "Show Config Editor"
msgstr "显示配置编辑器"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
msgid "Show Input Editor"
msgstr "显示输入编辑器"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
msgid "Edit mpv.conf"
msgstr "编辑 mpv.conf"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
msgid "Edit input.conf"
msgstr "编辑 input.conf"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:175
msgid "Open Config Folder"
msgstr "打开配置文件夹"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: 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
msgid "Setup"
msgstr "设置"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
msgid "Register video file associations"
msgstr "注册视频文件关联"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Register audio file associations"
msgstr "注册音频文件关联"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
msgid "Register image file associations"
msgstr "注册图像文件关联"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
msgid "Unregister file associations"
msgstr "注销文件关联"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
msgid "Add mpv.net to Path environment variable"
msgstr "将 mpv.net 添加到环境变量"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
msgid "Remove mpv.net from Path environment variable"
msgstr "将 mpv.net 从环境变量中移除"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Tools"
msgstr "工具"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
msgid "Set/clear A-B loop points"
msgstr "设置/清除 A-B 循环点"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
msgid "Toggle infinite file looping"
msgstr "切换 无限文件循环"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
msgid "Shuffle Playlist"
msgstr "随机播放列表"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
msgid "Toggle Hardware Decoding"
msgstr "切换 硬件解码"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Exit Watch Later"
msgstr "退出(稍后观看)"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:477
msgid "Custom"
msgstr "自定义"
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:197
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "Help"
msgstr "帮助"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192
msgid "Website mpv"
msgstr "mpv 网址"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
msgid "Website mpv.net"
msgstr "mpv.net 网址"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
msgid "Manual mpv"
msgstr "mpv 手册"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
msgid "Manual mpv.net"
msgstr "mpv.net 手册"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
msgid "awesome-mpv"
msgstr "awesome-mpv"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "About mpv.net"
msgstr "关于 mpv.net"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:202
msgid "Show Menu"
msgstr "显示菜单"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:208
msgid "Forward"
msgstr "前进"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:209
msgid "Backward"
msgstr "后退"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:210
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:212
msgid "Volume Up"
msgstr "增加 音量"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:211
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:213
msgid "Volume Down"
msgstr "降低 音量"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:220
msgid "Ignore left mouse butten"
msgstr "忽略左键"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:223
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:225
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:231
msgid "Seek Forward"
msgstr "向前跳转"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:224
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:226
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:232
msgid "Seek Backward"
msgstr "向后跳转"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:227
msgid "Undo previous (or marked) seek"
msgstr "撤销之前(或标记的)跳转"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:228
msgid "Mark position for revert-seek"
msgstr "标记回退查找的位置"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:229
msgid "Seek to previous subtitle"
msgstr "跳至上一条字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:230
msgid "Seek to next subtitle"
msgstr "跳至下一条字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:235
msgid "Subtitles"
msgstr "字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:236
msgid "Secondary Subtitles"
msgstr "第二字幕"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:192
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:214
msgid "Files/URLs were added to the playlist"
msgstr "已添加 文件/URL 到播放列表"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:207
msgid "The clipboard does not contain a valid URL or file."
msgstr "剪贴板中未包含有效的 URL 或文件。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:262
msgid "File Explorer icons will refresh after process restart."
msgstr "文件资源管理器图标将在进程重新启动后刷新"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:265
msgid "File associations were successfully removed."
msgstr "文件关联已成功删除"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:267
msgid "File associations were successfully created."
msgstr "文件关联已成功创建"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:270
msgid "Error creating file associations."
msgstr "创建文件关联时出错"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:387
msgid "mpv.net is already in the Path environment variable."
msgstr "mpv.net 已存在于环境变量。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:395
msgid "mpv.net was successfully added to the Path environment variable."
msgstr "成功添加 mpv.net 至环境变量。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:404
msgid "mpv.net was not found in the Path environment variable."
msgstr "环境变量中不存在 mpv.net。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:413
msgid "mpv.net was successfully removed from the Path environment variable."
msgstr "成功从环境变量中移除 mpv.net 。"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:418
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:423
msgid "This feature was removed, but there are user scripts:"
msgstr "该功能已被移除,但有用户脚本:"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:427
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:388
msgid "Clear List"
msgstr "清空列表"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:448
msgid "Show Profiles"
msgstr "显示配置文件"
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:1432
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 "更改将在下次启动时应用"

993
lang/source.pot Normal file
View File

@@ -0,0 +1,993 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-10-06 00:24+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\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 ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:14
msgid "Open DVD/Blu-ray Drive/Folder..."
msgstr ""
#: 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 ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:22
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:372
msgid "Recent Files"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:23
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:201
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:233
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:203
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:204
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:205
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:206
msgid "Play/Pause"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:26
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:207
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:214
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:216
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:218
msgid "Previous File"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:29
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:215
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:217
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:219
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 ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:42
msgid "Jump 5 sec backward"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:44
msgid "Jump 30 sec forward"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:45
msgid "Jump 30 sec backward"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:47
msgid "Jump 5 min forward"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:48
msgid "Jump 5 min backward"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:50
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:393
msgid "Title"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:51
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:351
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 ""
#: 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:453
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 ""
#: 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 ""
#: 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:142
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: 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
msgid "More"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:103
msgid "Toggle overriding SSA/ASS styles with normal styles"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:105
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:289
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 ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:113
msgid "+10%"
msgstr ""
#: 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:125
#: 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:137
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
#: 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
msgid "View"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:120
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:127
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:234
msgid "Playlist"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:121
msgid "Toggle Statistics"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:122
msgid "Toggle OSC Visibility"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:123
msgid "Media Info On-Screen"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:124
msgid "Media Info Message Box"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:125
msgid "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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: 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:248
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:249
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:250
msgid "On-Screen Menu"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:128
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:246
msgid "Bindings"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:129
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:247
msgid "Properties"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:130
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:240
msgid "Chapters"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:131
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:239
msgid "Tracks"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:132
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:237
msgid "Audio Tracks"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:133
msgid "Subtitle Tracks"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:134
msgid "Secondary Subtitle"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:135
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:238
msgid "Video Tracks"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:136
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:241
msgid "Editions"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:137
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:242
msgid "Subtitle Lines"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:138
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:243
msgid "Audio Devices"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:139
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:244
msgid "Watch History"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:140
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:245
msgid "Watch Later"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:142
msgid "Console"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:143
msgid "Commands"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:144
msgid "Active Bindings In Text Editor"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:145
msgid "Active Bindings On-Screen"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:146
msgid "Keys"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:147
msgid "Protocols"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:148
msgid "Decoders"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:149
msgid "Demuxers"
msgstr ""
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
msgid "Window"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:151
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:221
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:222
msgid "Fullscreen"
msgstr ""
#: 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
msgid "Zoom"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:152
msgid "Enlarge"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:153
msgid "Shrink"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:155
msgid "50 %"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:156
msgid "100 %"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:157
msgid "200 %"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:158
msgid "300 %"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgid "Move"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:159
msgctxt "Move"
msgid "Left"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:160
msgctxt "Move"
msgid "Right"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:161
msgctxt "Move"
msgid "Up"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:162
msgctxt "Move"
msgid "Down"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:163
msgctxt "Move"
msgid "Center"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:164
msgid "Toggle Border"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:165
msgid "Toggle On Top"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:167
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:426
msgid "Profile"
msgstr ""
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: 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
msgid "Config"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:169
msgid "Show Config Editor"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:170
msgid "Show Input Editor"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:172
msgid "Edit mpv.conf"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:173
msgid "Edit input.conf"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:175
msgid "Open Config Folder"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
#: 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
msgid "Setup"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:176
msgid "Register video file associations"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:177
msgid "Register audio file associations"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:178
msgid "Register image file associations"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:179
msgid "Unregister file associations"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:181
msgid "Add mpv.net to Path environment variable"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:182
msgid "Remove mpv.net from Path environment variable"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Tools"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:184
msgid "Set/clear A-B loop points"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:185
msgid "Toggle infinite file looping"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:186
msgid "Shuffle Playlist"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:187
msgid "Toggle Hardware Decoding"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:188
msgid "Exit Watch Later"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:190
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:477
msgid "Custom"
msgstr ""
#: 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
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:197
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "Help"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:192
msgid "Website mpv"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:193
msgid "Website mpv.net"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:195
msgid "Manual mpv"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:196
msgid "Manual mpv.net"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:198
msgid "awesome-mpv"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:199
msgid "About mpv.net"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:202
msgid "Show Menu"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:208
msgid "Forward"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:209
msgid "Backward"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:210
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:212
msgid "Volume Up"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:211
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:213
msgid "Volume Down"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:220
msgid "Ignore left mouse butten"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:223
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:225
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:231
msgid "Seek Forward"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:224
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:226
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:232
msgid "Seek Backward"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:227
msgid "Undo previous (or marked) seek"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:228
msgid "Mark position for revert-seek"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:229
msgid "Seek to previous subtitle"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:230
msgid "Seek to next subtitle"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:235
msgid "Subtitles"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet\InputHelp.cs:236
msgid "Secondary Subtitles"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:192
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:214
msgid "Files/URLs were added to the playlist"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:207
msgid "The clipboard does not contain a valid URL or file."
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:262
msgid "File Explorer icons will refresh after process restart."
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:265
msgid "File associations were successfully removed."
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:267
msgid "File associations were successfully created."
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:270
msgid "Error creating file associations."
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:387
msgid "mpv.net is already in the Path environment variable."
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:395
msgid "mpv.net was successfully added to the Path environment variable."
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:404
msgid "mpv.net was not found in the Path environment variable."
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:413
msgid "mpv.net was successfully removed from the Path environment variable."
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:418
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:423
msgid "This feature was removed, but there are user scripts:"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\GuiCommand.cs:427
msgid "This feature was removed."
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\Properties\Resources.Designer.cs:79
msgid "editor_conf"
msgstr ""
#: 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:388
msgid "Clear List"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:448
msgid "Show Profiles"
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WinForms\MainForm.cs:1432
msgid "Shutdown thread failed to complete within 10 seconds."
msgstr ""
#: D:\Projects\CS\mpv.net\src\MpvNet.Windows\WPF\InputWindow.xaml.cs:116
msgid "Changes will be available on next startup."
msgstr ""

View File

@@ -0,0 +1,23 @@
$ErrorActionPreference = 'Stop'
# Write list of .cs files into cs-files.txt file
Get-ChildItem $PSScriptRoot/.. -Recurse -File -Filter '*.cs' |
Where-Object { $_ -notmatch '[/\\]obj[/\\]' } |
ForEach-Object { $_.FullName } |
Out-File $PSScriptRoot/cs-files.txt
# Create .pot file
xgettext -k_ -k_n:1,2 -k_p:1c,2 -k_pn:1c,2,3 --force-po --from-code=UTF-8 '--language=c#' -o $PSScriptRoot/source.pot --files-from=$PSScriptRoot/cs-files.txt --keyword=_
if ($LastExitCode) { throw $LastExitCode }
# Backup .po files
$BackupTargetFolder = $env:TEMP + '/mpv.net po backup ' + (Get-Date -Format 'yyyy-MM-dd HH_mm_ss')
Copy-Item $PSScriptRoot/po $BackupTargetFolder -Force -Recurse
'PO file backup: ' + (Resolve-Path $BackupTargetFolder)
# Update .po files
(Get-ChildItem $PSScriptRoot/PO -Filter '*.po').FullName |
ForEach-Object { msgmerge --sort-output --backup=none --update $_ $PSScriptRoot/source.pot }
if ($LastExitCode) { throw $LastExitCode }

View File

@@ -1,79 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28729.10
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mpv.net", "mpv.net\mpv.net.csproj", "{1751F378-8EDF-4B62-BE6D-304C7C287089}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RatingAddon", "RatingAddon\RatingAddon.csproj", "{55C88710-539D-4402-84C8-31694841C731}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "CSScriptAddon", "CSScriptAddon\CSScriptAddon.vbproj", "{71808A87-8B1C-4DF8-957C-D79C3B164CCA}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "VBNET", "VBNET\VBNET.vbproj", "{A1D11294-05BF-4D77-B008-AECF1AA93C9F}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1751F378-8EDF-4B62-BE6D-304C7C287089}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1751F378-8EDF-4B62-BE6D-304C7C287089}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1751F378-8EDF-4B62-BE6D-304C7C287089}.Debug|x64.ActiveCfg = Debug|x64
{1751F378-8EDF-4B62-BE6D-304C7C287089}.Debug|x64.Build.0 = Debug|x64
{1751F378-8EDF-4B62-BE6D-304C7C287089}.Debug|x86.ActiveCfg = Debug|x86
{1751F378-8EDF-4B62-BE6D-304C7C287089}.Debug|x86.Build.0 = Debug|x86
{1751F378-8EDF-4B62-BE6D-304C7C287089}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1751F378-8EDF-4B62-BE6D-304C7C287089}.Release|Any CPU.Build.0 = Release|Any CPU
{1751F378-8EDF-4B62-BE6D-304C7C287089}.Release|x64.ActiveCfg = Release|x64
{1751F378-8EDF-4B62-BE6D-304C7C287089}.Release|x64.Build.0 = Release|x64
{1751F378-8EDF-4B62-BE6D-304C7C287089}.Release|x86.ActiveCfg = Release|x86
{1751F378-8EDF-4B62-BE6D-304C7C287089}.Release|x86.Build.0 = Release|x86
{55C88710-539D-4402-84C8-31694841C731}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{55C88710-539D-4402-84C8-31694841C731}.Debug|Any CPU.Build.0 = Debug|Any CPU
{55C88710-539D-4402-84C8-31694841C731}.Debug|x64.ActiveCfg = Debug|x64
{55C88710-539D-4402-84C8-31694841C731}.Debug|x64.Build.0 = Debug|x64
{55C88710-539D-4402-84C8-31694841C731}.Debug|x86.ActiveCfg = Debug|x86
{55C88710-539D-4402-84C8-31694841C731}.Debug|x86.Build.0 = Debug|x86
{55C88710-539D-4402-84C8-31694841C731}.Release|Any CPU.ActiveCfg = Release|Any CPU
{55C88710-539D-4402-84C8-31694841C731}.Release|Any CPU.Build.0 = Release|Any CPU
{55C88710-539D-4402-84C8-31694841C731}.Release|x64.ActiveCfg = Release|x64
{55C88710-539D-4402-84C8-31694841C731}.Release|x64.Build.0 = Release|x64
{55C88710-539D-4402-84C8-31694841C731}.Release|x86.ActiveCfg = Release|x86
{55C88710-539D-4402-84C8-31694841C731}.Release|x86.Build.0 = Release|x86
{71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Debug|x64.ActiveCfg = Debug|Any CPU
{71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Debug|x64.Build.0 = Debug|Any CPU
{71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Debug|x86.ActiveCfg = Debug|Any CPU
{71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Debug|x86.Build.0 = Debug|Any CPU
{71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Release|Any CPU.Build.0 = Release|Any CPU
{71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Release|x64.ActiveCfg = Release|Any CPU
{71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Release|x64.Build.0 = Release|Any CPU
{71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Release|x86.ActiveCfg = Release|Any CPU
{71808A87-8B1C-4DF8-957C-D79C3B164CCA}.Release|x86.Build.0 = Release|Any CPU
{A1D11294-05BF-4D77-B008-AECF1AA93C9F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A1D11294-05BF-4D77-B008-AECF1AA93C9F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A1D11294-05BF-4D77-B008-AECF1AA93C9F}.Debug|x64.ActiveCfg = Debug|Any CPU
{A1D11294-05BF-4D77-B008-AECF1AA93C9F}.Debug|x64.Build.0 = Debug|Any CPU
{A1D11294-05BF-4D77-B008-AECF1AA93C9F}.Debug|x86.ActiveCfg = Debug|Any CPU
{A1D11294-05BF-4D77-B008-AECF1AA93C9F}.Debug|x86.Build.0 = Debug|Any CPU
{A1D11294-05BF-4D77-B008-AECF1AA93C9F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A1D11294-05BF-4D77-B008-AECF1AA93C9F}.Release|Any CPU.Build.0 = Release|Any CPU
{A1D11294-05BF-4D77-B008-AECF1AA93C9F}.Release|x64.ActiveCfg = Release|Any CPU
{A1D11294-05BF-4D77-B008-AECF1AA93C9F}.Release|x64.Build.0 = Release|Any CPU
{A1D11294-05BF-4D77-B008-AECF1AA93C9F}.Release|x86.ActiveCfg = Release|Any CPU
{A1D11294-05BF-4D77-B008-AECF1AA93C9F}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {8DE9E796-619E-44B8-9576-F4DE028701BF}
EndGlobalSection
EndGlobal

View File

@@ -1,53 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.ComponentModel.Composition.Hosting;
using System.IO;
using System.Windows.Forms;
using VBNET;
namespace mpvnet
{
public class Addon
{
[ImportMany]
public IEnumerable<IAddon> Addons = null;
private readonly CompositionContainer CompositionContainer;
public Addon()
{
try
{
AggregateCatalog catalog = new AggregateCatalog();
string dir = Application.StartupPath + "\\Addons";
if (Directory.Exists(dir))
foreach (string i in Directory.GetDirectories(dir))
catalog.Catalogs.Add(new DirectoryCatalog(i, "*Addon.dll"));
dir = mp.mpvConfFolderPath + "\\Addons";
if (Directory.Exists(dir))
foreach (string i in Directory.GetDirectories(dir))
catalog.Catalogs.Add(new DirectoryCatalog(i, "*Addon.dll"));
if (catalog.Catalogs.Count > 0)
{
CompositionContainer = new CompositionContainer(catalog);
CompositionContainer.ComposeParts(this);
}
}
catch (Exception ex)
{
Msg.ShowException(ex);
}
}
}
public interface IAddon
{
}
}

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
</startup>
</configuration>

View File

@@ -1,225 +0,0 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Threading.Tasks;
using System.Windows.Forms;
using VBNET;
namespace mpvnet
{
public class Command
{
public string Name { get; set; }
public Action<string[]> Action { get; set; }
private static List<Command> commands;
public static List<Command> Commands
{
get
{
if (commands == null)
{
commands = new List<Command>();
Type type = typeof(Command);
MethodInfo[] methods = type.GetMethods(System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public);
foreach (var i in methods)
{
ParameterInfo[] parameters = i.GetParameters();
if (parameters == null || parameters.Length != 1 || parameters[0].ParameterType != typeof(string[]))
continue;
Command cmd = new Command() { Name = i.Name.Replace("_","-"), Action = (Action<string[]>)i.CreateDelegate(typeof(Action<string[]>)) };
commands.Add(cmd);
}
}
return commands;
}
}
public static void open_files(string[] args)
{
MainForm.Instance.Invoke(new Action(() => {
using (var d = new OpenFileDialog())
{
d.Multiselect = true;
d.Filter = Misc.GetFilter(Misc.FileTypes);
if (d.ShowDialog() == DialogResult.OK)
mp.LoadFiles(d.FileNames);
}
}));
}
public static void open_conf_folder(string[] args)
{
Process.Start(mp.mpvConfFolderPath);
}
public static void show_input_editor(string[] args)
{
Process.Start(Application.StartupPath + "\\mpvInputEdit.exe");
}
public static void show_conf_editor(string[] args)
{
Process.Start(Application.StartupPath + "\\mpvConfEdit.exe");
}
public static void show_history(string[] args)
{
var fp = mp.mpvConfFolderPath + "history.txt";
if (File.Exists(fp))
Process.Start(fp);
else
if (Msg.ShowQuestion("Create history.txt file in config folder?",
"mpv.net will write the date, time and filename of opened files to it.") == MsgResult.OK)
File.WriteAllText(fp, "");
}
public static void shell_execute(string[] args)
{
Process.Start(args[0]);
}
public static void set_setting(string[] args)
{
bool changed = false;
var lines = File.ReadAllLines(mp.mpvConfPath);
for (int i = 0; i < lines.Length; i++)
{
if (lines[i].Contains("=") &&
lines[i].Substring(0, lines[i].IndexOf("=")).Trim("# ".ToCharArray()) == args[0])
{
lines[i] = args[0] + " = " + args[1];
changed = true;
}
}
if (changed)
File.WriteAllText(mp.mpvConfPath, String.Join(Environment.NewLine, lines));
else
File.WriteAllText(mp.mpvConfPath, File.ReadAllText(mp.mpvConfPath) + Environment.NewLine + args[0] + " = " + args[1]);
Msg.Show("Changed settings are available on next startup.");
}
public static void show_info(string[] args)
{
try
{
var fileInfo = new FileInfo(mp.get_property_string("path"));
using (var mediaInfo = new MediaInfo(fileInfo.FullName))
{
string width = mediaInfo.GetInfo(MediaInfoStreamKind.Video, "Width");
if (width == "")
{
string performer = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Performer");
string title = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Title");
string album = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Album");
string genre = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Genre");
string date = mediaInfo.GetInfo(MediaInfoStreamKind.General, "Recorded_Date");
string duration = mediaInfo.GetInfo(MediaInfoStreamKind.Audio, "Duration/String");
string text = "";
if (performer != "") text += "Artist: " + performer + "\n";
if (title != "") text += "Title: " + title + "\n";
if (album != "") text += "Album: " + album + "\n";
if (genre != "") text += "Genre: " + genre + "\n";
if (date != "") text += "Year: " + date + "\n";
if (duration != "") text += "Length: " + duration + "\n";
mp.commandv("show-text", text, "5000");
}
else
{
string height = mediaInfo.GetInfo(MediaInfoStreamKind.Video, "Height");
TimeSpan position = TimeSpan.FromSeconds(mp.get_property_number("time-pos"));
TimeSpan duration = TimeSpan.FromSeconds(mp.get_property_number("duration"));
string bitrate = mediaInfo.GetInfo(MediaInfoStreamKind.Video, "BitRate");
if (bitrate == "")
bitrate = "0";
var bitrate2 = Convert.ToDouble(bitrate) / 1000.0 / 1000.0;
var videoCodec = mp.get_property_string("video-format").ToUpper();
var filename = fileInfo.Name;
var text =
FormatTime(position.TotalMinutes) + ":" +
FormatTime(position.Seconds) + " / " +
FormatTime(duration.TotalMinutes) + ":" +
FormatTime(duration.Seconds) + "\n" +
Convert.ToInt32(fileInfo.Length / 1024 / 1024).ToString() +
$" MB - {width} x {height}\n{videoCodec} - {bitrate2.ToString("f1")} Mb/s" + "\n" + filename;
mp.commandv("show-text", text, "5000");
}
string FormatTime(double value) => ((int)value).ToString("00");
}
}
catch (Exception)
{
}
}
public static void execute_mpv_command(string[] args)
{
MainForm.Instance.Invoke(new Action(() => {
string command = Microsoft.VisualBasic.Interaction.InputBox("Enter a mpv command to be executed.");
if (string.IsNullOrEmpty(command)) return;
mp.command_string(command, false);
}));
}
public static void open_url(string[] args)
{
MainForm.Instance.Invoke(new Action(() => {
string command = Microsoft.VisualBasic.Interaction.InputBox("Enter URL to be opened.");
if (string.IsNullOrEmpty(command)) return;
mp.LoadURL(command);
}));
}
public static void load_sub(string[] args)
{
MainForm.Instance.BeginInvoke(new Action(() => {
using (var d = new OpenFileDialog())
{
d.InitialDirectory = Path.GetDirectoryName(mp.get_property_string("path", false));
d.Multiselect = true;
if (d.ShowDialog() == DialogResult.OK)
foreach (string i in d.FileNames)
mp.commandv("sub-add", i);
}
}));
}
public static void load_audio(string[] args)
{
MainForm.Instance.BeginInvoke(new Action(() => {
using (var d = new OpenFileDialog())
{
d.InitialDirectory = Path.GetDirectoryName(mp.get_property_string("path", false));
d.Multiselect = true;
if (d.ShowDialog() == DialogResult.OK)
foreach (string i in d.FileNames)
mp.commandv("audio-add", i);
}
}));
}
}
}

Binary file not shown.

View File

@@ -1,10 +0,0 @@
MIT License
Copyright (c) 2017 stax76
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and ssociated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -1,63 +0,0 @@
namespace mpvnet
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.Timer = new System.Windows.Forms.Timer(this.components);
this.SuspendLayout();
//
// Timer
//
this.Timer.Enabled = true;
this.Timer.Interval = 1000;
this.Timer.Tick += new System.EventHandler(this.Timer_Tick);
//
// MainForm
//
this.AllowDrop = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(288F, 288F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
this.BackColor = System.Drawing.Color.Black;
this.ClientSize = new System.Drawing.Size(606, 368);
this.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
this.Name = "MainForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "mpv.net";
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Timer Timer;
}
}

View File

@@ -1,468 +0,0 @@
using System;
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;
using System.Threading;
using System.Windows.Forms;
using System.Linq;
using System.Collections.Generic;
using VBNET;
namespace mpvnet
{
public partial class MainForm : Form
{
public static MainForm Instance { get; set; }
public static IntPtr Hwnd;
private Point LastCursorPosChanged;
private int LastCursorChangedTickCount;
private bool IgnoreDpiChanged = true;
private float mpvAutofit = 0.42f;
private bool mpvFullscreen;
private int mpvScreen = -1;
public ContextMenuStripEx CMS;
public MainForm()
{
InitializeComponent();
try
{
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Application.ThreadException += Application_ThreadException;
Msg.SupportURL = "https://github.com/stax76/mpv.net#support";
Instance = this;
Hwnd = Handle;
MinimumSize = new Size(FontHeight * 16, FontHeight * 9);
Text += " " + Application.ProductVersion;
foreach (var i in mp.mpvConf)
ProcessMpvProperty(i.Key, i.Value);
ProcessCommandLineEarly();
if (mpvScreen == -1) mpvScreen = Array.IndexOf(Screen.AllScreens, Screen.PrimaryScreen);
SetScreen(mpvScreen);
ChangeFullscreen(mpvFullscreen);
}
catch (Exception ex)
{
Msg.ShowException(ex);
}
}
protected void SetScreen(int targetIndex)
{
Screen[] screens = Screen.AllScreens;
if (targetIndex < 0) targetIndex = 0;
if (targetIndex > screens.Length - 1) targetIndex = screens.Length - 1;
SetScreen(screens[Array.IndexOf(screens, screens[targetIndex])]);
}
protected void SetScreen(Screen screen)
{
Rectangle target = screen.Bounds;
Left = target.X + Convert.ToInt32((target.Width - Width) / 2.0);
Top = target.Y + Convert.ToInt32((target.Height - Height) / 2.0);
SetStartFormPositionAndSize();
}
void SetStartFormPositionAndSize()
{
if (IsFullscreen || mp.VideoSize.Width == 0) return;
Screen screen = Screen.FromControl(this);
int height = Convert.ToInt32(screen.Bounds.Height * mpvAutofit);
int width = Convert.ToInt32(height * mp.VideoSize.Width / (double)mp.VideoSize.Height);
Point middlePos = new Point(Left + Width / 2, Top + Height / 2);
var rect = new Native.RECT(new Rectangle(screen.Bounds.X, screen.Bounds.Y, width, height));
NativeHelp.AddWindowBorders(Handle, ref rect);
int left = middlePos.X - rect.Width / 2;
int top = middlePos.Y - rect.Height / 2;
Native.SetWindowPos(Handle, IntPtr.Zero /* HWND_TOP */, left, top, rect.Width, rect.Height, 4 /* SWP_NOZORDER */);
}
void SetFormPositionAndSizeKeepHeight()
{
if (IsFullscreen || mp.VideoSize.Width == 0) return;
Screen screen = Screen.FromControl(this);
int height = ClientSize.Height;
if (height > screen.Bounds.Height * 0.9) height = Convert.ToInt32(screen.Bounds.Height * mpvAutofit);
int width = Convert.ToInt32(height * mp.VideoSize.Width / (double)mp.VideoSize.Height);
Point middlePos = new Point(Left + Width / 2, Top + Height / 2);
var rect = new Native.RECT(new Rectangle(screen.Bounds.X, screen.Bounds.Y, width, height));
NativeHelp.AddWindowBorders(Handle, ref rect);
int left = middlePos.X - rect.Width / 2;
int top = middlePos.Y - rect.Height / 2;
Screen[] screens = Screen.AllScreens;
if (left < screens[0].Bounds.Left) left = screens[0].Bounds.Left;
int maxLeft = screens[0].Bounds.Left + screens.Select((sc) => sc.Bounds.Width).Sum() - rect.Width - SystemInformation.CaptionHeight;
if (left > maxLeft) left = maxLeft;
Native.SetWindowPos(Handle, IntPtr.Zero /* HWND_TOP */, left, top, rect.Width, rect.Height, 4 /* SWP_NOZORDER */);
}
protected void ProcessCommandLineEarly()
{
var args = Environment.GetCommandLineArgs().Skip(1);
foreach (string i in args)
{
if (i.StartsWith("--"))
{
if (i.Contains("="))
{
string left = i.Substring(2, i.IndexOf("=") - 2);
string right = i.Substring(left.Length + 3);
ProcessMpvProperty(left, right);
}
else
{
string switchName = i.Substring(2);
switch (switchName)
{
case "fs":
case "fullscreen":
mpvFullscreen = true;
break;
}
}
}
}
}
void ProcessMpvProperty(string name, string value)
{
switch (name)
{
case "autofit":
if (value.Length == 3 && value.EndsWith("%"))
if (int.TryParse(value.Substring(0, 2), out int result))
mpvAutofit = result / 100f;
break;
case "fs":
case "fullscreen":
mpvFullscreen = value == "yes";
break;
case "screen":
mpvScreen = Convert.ToInt32(value);
break;
}
}
public void BuildMenu()
{
string content = File.ReadAllText(mp.InputConfPath);
List<string> lines = null;
Dictionary<string, string> commandInputDic = new Dictionary<string, string>();
if (content.Contains("#menu:"))
lines = content.Split("\r\n".ToCharArray()).ToList();
else
{
lines = Properties.Resources.input_conf.Split("\r\n".ToCharArray()).ToList();
foreach (string i in content.Split("\r\n".ToCharArray()))
{
string line = i.Trim();
if (line.StartsWith("#") || !line.Contains(" ")) continue;
string input = line.Substring(0, line.IndexOf(" ")).Trim();
string command = line.Substring(line.IndexOf(" ") + 1).Trim();
commandInputDic[command] = input;
}
}
foreach (string i in lines)
{
if (!i.Contains("#menu:")) continue;
string left = i.Substring(0, i.IndexOf("#menu:")).Trim();
if (left.StartsWith("#")) continue;
string command = left.Substring(left.IndexOf(" ") + 1).Trim();
string menu = i.Substring(i.IndexOf("#menu:") + "#menu:".Length).Trim();
string input = left.Substring(0, left.IndexOf(" "));
if (input == "_") input = "";
if (menu.Contains(";")) input = menu.Substring(0, menu.IndexOf(";")).Trim();
string path = menu.Substring(menu.IndexOf(";") + 1).Trim().Replace("&", "&&");
if (path == "" || command == "") continue;
if (commandInputDic.Count > 0)
if (commandInputDic.ContainsKey(command))
input = commandInputDic[command];
else
input = "";
var menuItem = CMS.Add(path, () => {
try {
mp.command_string(command);
}
catch (Exception ex) {
Msg.ShowException(ex);
}
});
if (menuItem != null)
menuItem.ShortcutKeyDisplayString = input.Replace("_","") + " ";
}
}
private void CMS_Opened(object sender, EventArgs e) => CursorHelp.Show();
private string LastHistory;
private void mp_PlaybackRestart()
{
var filename = mp.get_property_string("filename");
BeginInvoke(new Action(() => { Text = filename + " - mpv.net " + Application.ProductVersion; }));
var historyFilepath = mp.mpvConfFolderPath + "history.txt";
if (LastHistory != filename && File.Exists(historyFilepath))
{
File.AppendAllText(historyFilepath, DateTime.Now.ToString() + " " +
Path.GetFileNameWithoutExtension(filename) + "\r\n");
LastHistory = filename;
}
}
private void Mp_Idle()
{
BeginInvoke(new Action(() => { Text = "mpv.net " + Application.ProductVersion; }));
}
private void CM_Popup(object sender, EventArgs e) => CursorHelp.Show();
private void Application_ThreadException(object sender, ThreadExceptionEventArgs e)
{
Msg.ShowException(e.Exception);
}
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Msg.ShowError(e.ExceptionObject.ToString());
}
private void mp_VideoSizeChanged()
{
BeginInvoke(new Action(() => SetFormPositionAndSizeKeepHeight()));
}
private void mp_Shutdown()
{
BeginInvoke(new Action(() => Close()));
}
public bool IsFullscreen => WindowState == FormWindowState.Maximized;
void mpPropChangeFullscreen(bool value)
{
BeginInvoke(new Action(() => ChangeFullscreen(value)));
}
void ChangeFullscreen(bool value)
{
if (value)
{
if (FormBorderStyle != FormBorderStyle.None)
{
FormBorderStyle = FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
}
}
else
{
WindowState = FormWindowState.Normal;
FormBorderStyle = FormBorderStyle.Sizable;
SetFormPositionAndSizeKeepHeight();
}
}
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case 0x0201: // WM_LBUTTONDOWN
case 0x0202: // WM_LBUTTONUP
case 0x0100: // WM_KEYDOWN
case 0x0101: // WM_KEYUP
case 0x020A: // WM_MOUSEWHEEL
if (mp.MpvWindowHandle != IntPtr.Zero)
Native.SendMessage(mp.MpvWindowHandle, m.Msg, m.WParam, m.LParam);
break;
case 0x319: // WM_APPCOMMAND
if (mp.MpvWindowHandle != IntPtr.Zero)
Native.PostMessage(mp.MpvWindowHandle, m.Msg, m.WParam, m.LParam);
break;
case 0x0104: // WM_SYSKEYDOWN:
if (mp.MpvWindowHandle != IntPtr.Zero)
Native.SendMessage(mp.MpvWindowHandle, m.Msg, m.WParam, m.LParam);
break;
case 0x0105: // WM_SYSKEYUP:
if (mp.MpvWindowHandle != IntPtr.Zero)
Native.SendMessage(mp.MpvWindowHandle, m.Msg, m.WParam, m.LParam);
break;
case 0x203: // Native.WM.LBUTTONDBLCLK
if (!IsMouseInOSC())
mp.command_string("cycle fullscreen");
break;
case 0x02E0: // WM_DPICHANGED
if (IgnoreDpiChanged) break;
var r2 = Marshal.PtrToStructure<Native.RECT>(m.LParam);
Native.SetWindowPos(Handle, IntPtr.Zero, r2.Left, r2.Top, r2.Width, r2.Height, 0);
break;
case 0x0214: // WM_SIZING
var rc = Marshal.PtrToStructure<Native.RECT>(m.LParam);
var r = rc;
NativeHelp.SubtractWindowBorders(Handle, ref r);
int c_w = r.Right - r.Left, c_h = r.Bottom - r.Top;
float aspect = mp.VideoSize.Width / (float)mp.VideoSize.Height;
int d_w = Convert.ToInt32(c_h * aspect - c_w);
int d_h = Convert.ToInt32(c_w / aspect - c_h);
int[] d_corners = { d_w, d_h, -d_w, -d_h };
int[] corners = { rc.Left, rc.Top, rc.Right, rc.Bottom };
int corner = NativeHelp.GetResizeBorder(m.WParam.ToInt32());
if (corner >= 0)
corners[corner] -= d_corners[corner];
Marshal.StructureToPtr<Native.RECT>(new Native.RECT(corners[0], corners[1], corners[2], corners[3]), m.LParam, false);
m.Result = new IntPtr(1);
return;
}
base.WndProc(ref m);
}
protected override void OnDragEnter(DragEventArgs e)
{
base.OnDragEnter(e);
if (e.Data.GetDataPresent(DataFormats.FileDrop) || e.Data.GetDataPresent(DataFormats.Text))
e.Effect = DragDropEffects.Copy;
}
protected override void OnDragDrop(DragEventArgs e)
{
base.OnDragDrop(e);
if (e.Data.GetDataPresent(DataFormats.FileDrop))
mp.LoadFiles(e.Data.GetData(DataFormats.FileDrop) as String[]);
if (e.Data.GetDataPresent(DataFormats.Text))
mp.LoadURL(e.Data.GetData(DataFormats.Text).ToString());
}
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
if (WindowState == FormWindowState.Normal &&
e.Button == MouseButtons.Left &&
e.Y < ClientSize.Height * 0.9)
{
var HTCAPTION = new IntPtr(2);
Native.ReleaseCapture();
Native.PostMessage(Handle, 0xA1 /* WM_NCLBUTTONDOWN */, HTCAPTION, IntPtr.Zero);
}
var sb = Screen.FromControl(this).Bounds;
var p1 = new Point(sb.Width, 0);
var p2 = PointToScreen(e.Location);
if (Math.Abs(p1.X - p2.X) < 10 && Math.Abs(p1.Y - p2.Y) < 10)
mp.commandv("quit");
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
mp.command_string($"mouse {e.X} {e.Y}");
if (CursorHelp.IsPosDifferent(LastCursorPosChanged))
CursorHelp.Show();
}
bool IsMouseInOSC()
{
return PointToClient(Control.MousePosition).Y > ClientSize.Height * 0.9;
}
private void Timer_Tick(object sender, EventArgs e)
{
if (CursorHelp.IsPosDifferent(LastCursorPosChanged))
{
LastCursorPosChanged = Control.MousePosition;
LastCursorChangedTickCount = Environment.TickCount;
}
else if (Environment.TickCount - LastCursorChangedTickCount > 1500 &&
!IsMouseInOSC() && ClientRectangle.Contains(PointToClient(MousePosition)) &&
Form.ActiveForm == this && !CMS.Visible)
{
CursorHelp.Hide();
}
}
public DialogResult ShowMsgBox(string message, MessageBoxIcon icon)
{
var buttons = MessageBoxButtons.OK;
if (icon == MessageBoxIcon.Question) buttons = MessageBoxButtons.OKCancel;
var fn = new Func<DialogResult>(() => MessageBox.Show(message, Application.ProductName, buttons, icon));
return (DialogResult)Invoke(fn);
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
mp.Init();
mp.observe_property_bool("fullscreen", mpPropChangeFullscreen);
mp.observe_property_bool("ontop", mpPropChangeOnTop);
mp.Shutdown += mp_Shutdown;
mp.VideoSizeChanged += mp_VideoSizeChanged;
mp.PlaybackRestart += mp_PlaybackRestart;
mp.Idle += Mp_Idle;
}
void mpPropChangeOnTop(bool value) => BeginInvoke(new Action(() => TopMost = value));
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
CMS = new ContextMenuStripEx(components);
CMS.Opened += CMS_Opened;
ContextMenuStrip = CMS;
BuildMenu();
IgnoreDpiChanged = false;
CheckYouTube();
}
protected override void OnFormClosed(FormClosedEventArgs e)
{
base.OnFormClosed(e);
mp.commandv("quit");
mp.AutoResetEvent.WaitOne(3000);
}
protected override void OnLostFocus(EventArgs e)
{
base.OnLostFocus(e);
CursorHelp.Show();
}
protected override void OnActivated(EventArgs e)
{
base.OnActivated(e);
CheckYouTube();
}
private string LastURL;
void CheckYouTube()
{
string clipboard = Clipboard.GetText();
if (clipboard.StartsWith("https://www.youtube.com/watch?") && LastURL != clipboard && Visible)
{
LastURL = clipboard;
if (Msg.ShowQuestion("Play YouTube URL?") == MsgResult.OK)
mp.LoadURL(clipboard);
}
}
}
}

View File

@@ -1,84 +0,0 @@
using System;
using System.Runtime.InteropServices;
public class MediaInfo : IDisposable
{
private IntPtr Handle;
private static bool Loaded;
public MediaInfo(string sourcepath)
{
if (!Loaded)
{
if (LoadLibrary("MediaInfo.dll") == IntPtr.Zero)
throw new Exception("Failed to load MediaInfo.dll.");
Loaded = true;
}
Handle = MediaInfo_New();
MediaInfo_Open(Handle, sourcepath);
}
public string GetInfo(MediaInfoStreamKind streamKind, string parameter)
{
return Marshal.PtrToStringUni(MediaInfo_Get(Handle, streamKind, 0, parameter, MediaInfoInfoKind.Text, MediaInfoInfoKind.Name));
}
private bool Disposed;
public void Dispose()
{
if (!Disposed)
{
Disposed = true;
MediaInfo_Close(Handle);
MediaInfo_Delete(Handle);
}
}
~MediaInfo()
{
Dispose();
}
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
private static extern IntPtr LoadLibrary(string path);
[DllImport("MediaInfo.dll")]
private static extern IntPtr MediaInfo_New();
[DllImport("MediaInfo.dll")]
private static extern void MediaInfo_Delete(IntPtr Handle);
[DllImport("MediaInfo.dll", CharSet = CharSet.Unicode)]
private static extern int MediaInfo_Open(IntPtr Handle, string FileName);
[DllImport("MediaInfo.dll")]
private static extern int MediaInfo_Close(IntPtr Handle);
[DllImport("MediaInfo.dll", CharSet = CharSet.Unicode)]
private static extern IntPtr MediaInfo_Get(IntPtr Handle, MediaInfoStreamKind StreamKind, int StreamNumber, string Parameter, MediaInfoInfoKind KindOfInfo, MediaInfoInfoKind KindOfSearch);
}
public enum MediaInfoStreamKind
{
General,
Video,
Audio,
Text,
Chapters,
Image
}
public enum MediaInfoInfoKind
{
Name,
Text,
Measure,
Options,
NameText,
MeasureText,
Info,
HowTo
}

View File

@@ -1,491 +0,0 @@
using System;
using System.Linq;
using System.ComponentModel;
using System.Drawing.Drawing2D;
using System.Drawing.Text;
using Microsoft.Win32;
using System.Windows.Forms;
using System.Drawing;
public class ContextMenuStripEx : ContextMenuStrip
{
public ContextMenuStripEx()
{
}
public ContextMenuStripEx(IContainer container) : base(container)
{
}
protected override void OnHandleCreated(EventArgs e)
{
base.OnHandleCreated(e);
Renderer = new ToolStripRendererEx();
}
public ActionMenuItem Add(string path)
{
return Add(path, null);
}
public ActionMenuItem Add(string path, Action action)
{
return Add(path, action, true);
}
public ActionMenuItem Add(string path, Action action, bool enabled)
{
var ret = ActionMenuItem.Add(Items, path, action);
if (ret == null)
return null;
ret.Enabled = enabled;
return ret;
}
public ActionMenuItem Add(string path, Action action, Func<bool> enabledFunc)
{
var ret = ActionMenuItem.Add(Items, path, action);
return ret;
}
}
public class ActionMenuItem : MenuItemEx
{
private Action Action;
public ActionMenuItem()
{
}
public ActionMenuItem(string text, Action action)
{
this.Text = text;
this.Action = action;
}
protected override void OnClick(EventArgs e)
{
Application.DoEvents();
if (Action != null)
Action();
base.OnClick(e);
}
public static ActionMenuItem Add<T>(ToolStripItemCollection items, string path, Action<T> action, T value)
{
return Add(items, path, () => action(value));
}
public static ActionMenuItem Add(ToolStripItemCollection items, string path, Action action)
{
var a = path.Split(new[] { " > ", " | " }, StringSplitOptions.RemoveEmptyEntries);
var l = items;
for (var x = 0; x <= a.Length - 1; x++)
{
var found = false;
foreach (var i in l.OfType<ToolStripMenuItem>())
{
if (x < a.Length - 1)
{
if (i.Text == a[x] + " ")
{
found = true;
l = i.DropDownItems;
}
}
}
if (!found)
{
if (x == a.Length - 1)
{
if (a[x] == "-")
l.Add(new ToolStripSeparator());
else
{
ActionMenuItem item = new ActionMenuItem(a[x] + " ", action);
l.Add(item);
l = item.DropDownItems;
return item;
}
}
else
{
ActionMenuItem item = new ActionMenuItem();
item.Text = a[x] + " ";
l.Add(item);
l = item.DropDownItems;
}
}
}
return null;
}
}
public class MenuItemEx : ToolStripMenuItem
{
public static bool UseTooltips { get; set; }
public MenuItemEx()
{
}
public MenuItemEx(string text) : base(text)
{
}
public override Size GetPreferredSize(Size constrainingSize)
{
var ret = base.GetPreferredSize(constrainingSize);
ret.Height = Convert.ToInt32(Font.Height * 1.4);
return ret;
}
public void CloseAll(object item)
{
if (item is ToolStripItem)
{
var d = (ToolStripItem)item;
CloseAll(d.Owner);
}
if (item is ToolStripDropDown)
{
var d = (ToolStripDropDown)item;
d.Close();
CloseAll(d.OwnerItem);
}
}
protected override void OnClick(EventArgs e)
{
Application.DoEvents();
base.OnClick(e);
}
}
public class ToolStripRendererEx : ToolStripSystemRenderer
{
public static Color ColorChecked { get; set; }
public static Color ColorBorder { get; set; }
public static Color ColorTop { get; set; }
public static Color ColorBottom { get; set; }
public static Color ColorBackground { get; set; }
public static Color ColorToolStrip1 { get; set; }
public static Color ColorToolStrip2 { get; set; }
public static Color ColorToolStrip3 { get; set; }
public static Color ColorToolStrip4 { get; set; }
private int TextOffset;
public ToolStripRendererEx()
{
var argb = Convert.ToInt32(Registry.GetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\DWM", "ColorizationColor", 0));
if (argb == 0)
argb = Color.LightBlue.ToArgb();
InitColors(Color.FromArgb(argb));
}
public static void InitColors(Color c)
{
ColorBorder = HSLColor.Convert(c).ToColorSetLuminosity(100);
ColorChecked = HSLColor.Convert(c).ToColorSetLuminosity(200);
ColorBottom = HSLColor.Convert(c).ToColorSetLuminosity(220);
ColorBackground = HSLColor.Convert(c).ToColorSetLuminosity(230);
ColorTop = HSLColor.Convert(c).ToColorSetLuminosity(240);
ColorToolStrip1 = ControlPaint.LightLight(ControlPaint.LightLight(ControlPaint.Light(ColorBorder, 1)));
ColorToolStrip2 = ControlPaint.LightLight(ControlPaint.LightLight(ControlPaint.Light(ColorBorder, 0.7f)));
ColorToolStrip3 = ControlPaint.LightLight(ControlPaint.LightLight(ControlPaint.Light(ColorBorder, 0.1f)));
ColorToolStrip4 = ControlPaint.LightLight(ControlPaint.LightLight(ControlPaint.Light(ColorBorder, 0.4f)));
}
protected override void OnRenderToolStripBorder(ToolStripRenderEventArgs e)
{
ControlPaint.DrawBorder(e.Graphics, e.AffectedBounds, Color.FromArgb(160, 175, 195), ButtonBorderStyle.Solid);
}
protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
{
e.Graphics.TextRenderingHint = TextRenderingHint.AntiAlias;
if (e.Item is ToolStripMenuItem && !(e.Item.Owner is MenuStrip))
{
Rectangle rect = e.TextRectangle;
var dropDown = e.ToolStrip as ToolStripDropDownMenu;
if (dropDown == null || dropDown.ShowImageMargin || dropDown.ShowCheckMargin)
TextOffset = Convert.ToInt32(e.Item.Height * 1.1);
else
TextOffset = Convert.ToInt32(e.Item.Height * 0.2);
e.TextRectangle = new Rectangle(TextOffset, Convert.ToInt32((e.Item.Height - rect.Height) / 2.0), rect.Width, rect.Height);
}
base.OnRenderItemText(e);
}
protected override void OnRenderToolStripBackground(ToolStripRenderEventArgs e)
{
if (!(e.ToolStrip is ToolStripDropDownMenu) && !(e.ToolStrip.LayoutStyle == ToolStripLayoutStyle.VerticalStackWithOverflow))
{
Rectangle r = new Rectangle(-1, -1, e.AffectedBounds.Width, e.AffectedBounds.Height);
using (SolidBrush b = new SolidBrush(ColorToolStrip2))
{
e.Graphics.FillRectangle(b, r);
}
}
}
protected override void OnRenderMenuItemBackground(ToolStripItemRenderEventArgs e)
{
e.Item.ForeColor = Color.Black;
var r = new Rectangle(Point.Empty, e.Item.Size);
var g = e.Graphics;
if (!(e.Item.Owner is MenuStrip))
g.Clear(ColorBackground);
if (e.Item.Selected && e.Item.Enabled)
{
if (e.Item.Owner is MenuStrip)
DrawButton(e);
else
{
g.SmoothingMode = SmoothingMode.AntiAlias;
var r2 = new Rectangle(r.X + 2, r.Y, r.Width - 4, r.Height - 1);
using (Pen pen = new Pen(ColorBorder))
{
g.DrawRectangle(pen, r2);
}
r2.Inflate(-1, -1);
using (SolidBrush b = new SolidBrush(ColorBottom))
{
g.FillRectangle(b, r2);
}
}
}
}
public void DrawButton(ToolStripItemRenderEventArgs e)
{
var gx = e.Graphics;
var rect = new Rectangle(Point.Empty, e.Item.Size);
var rect2 = new Rectangle(rect.X, rect.Y, rect.Width - 1, rect.Height - 1);
using (Pen pen = new Pen(ColorBorder))
gx.DrawRectangle(pen, rect2);
rect2.Inflate(-1, -1);
var tsb = e.Item as ToolStripButton;
if (tsb != null && tsb.Checked)
using (SolidBrush brush = new SolidBrush(ColorChecked))
gx.FillRectangle(brush, rect2);
else
using (SolidBrush brush = new SolidBrush(ColorBottom))
gx.FillRectangle(brush, rect2);
}
protected override void OnRenderDropDownButtonBackground(ToolStripItemRenderEventArgs e)
{
if (e.Item.Selected)
DrawButton(e);
}
protected override void OnRenderButtonBackground(ToolStripItemRenderEventArgs e)
{
var button = (ToolStripButton)e.Item;
if (e.Item.Selected || button.Checked)
DrawButton(e);
}
protected override void OnRenderArrow(ToolStripArrowRenderEventArgs e)
{
var value = e.Direction == ArrowDirection.Down ? 0x36 : 0x34;
var s = Convert.ToChar(value).ToString();
var font = new Font("Marlett", e.Item.Font.Size - 2);
var size = e.Graphics.MeasureString(s, font);
var x = Convert.ToInt32(e.Item.Width - size.Width);
var y = Convert.ToInt32((e.Item.Height - size.Height) / 2.0) + 1;
e.Graphics.DrawString(s, font, Brushes.Black, x, y);
}
protected override void OnRenderItemCheck(ToolStripItemImageRenderEventArgs e)
{
int x = Convert.ToInt32(e.ImageRectangle.Height * 0.2);
e.Graphics.DrawImage(e.Image, new Point(x, x));
}
protected override void OnRenderSeparator(ToolStripSeparatorRenderEventArgs e)
{
if (e.Item.IsOnDropDown)
{
e.Graphics.Clear(ColorBackground);
int right = e.Item.Width - Convert.ToInt32(TextOffset / 5.0);
int top = e.Item.Height / 2;
top -= 1;
using (Pen p = new Pen(Color.Gray))
e.Graphics.DrawLine(p, new Point(TextOffset, top), new Point(right, top));
}
else if (e.Vertical)
{
var bounds = e.Item.Bounds;
using (Pen p = new Pen(SystemColors.ControlDarkDark))
e.Graphics.DrawLine(p,
Convert.ToInt32(bounds.Width / 2.0),
Convert.ToInt32(bounds.Height * 0.15),
Convert.ToInt32(bounds.Width / 2.0),
Convert.ToInt32(bounds.Height * 0.85));
}
}
}
public struct HSLColor
{
public HSLColor(Color color) : this()
{
SetRGB(color.R, color.G, color.B);
}
public HSLColor(int h, int s, int l) : this()
{
Hue = h;
Saturation = s;
Luminosity = l;
}
private double hue;
public int Hue
{
get => System.Convert.ToInt32(hue * 240);
set => hue = CheckRange(value / 240.0);
}
private double saturation;
public int Saturation
{
get => System.Convert.ToInt32(saturation * 240);
set => saturation = CheckRange(value / 240.0);
}
private double luminosity;
public int Luminosity
{
get => System.Convert.ToInt32(luminosity * 240);
set => luminosity = CheckRange(value / 240.0);
}
private double CheckRange(double value)
{
if (value < 0)
value = 0;
else if (value > 1)
value = 1;
return value;
}
public Color ToColorAddLuminosity(int luminosity)
{
Luminosity += luminosity;
return ToColor();
}
public Color ToColorSetLuminosity(int luminosity)
{
Luminosity = luminosity;
return ToColor();
}
public Color ToColor()
{
double r = 0, g = 0, b = 0;
if (luminosity != 0)
{
if (saturation == 0)
{
b = luminosity;
g = luminosity;
r = luminosity;
}
else
{
double temp2 = GetTemp2(this);
double temp1 = 2.0 * luminosity - temp2;
r = GetColorComponent(temp1, temp2, hue + 1.0 / 3.0);
g = GetColorComponent(temp1, temp2, hue);
b = GetColorComponent(temp1, temp2, hue - 1.0 / 3.0);
}
}
return Color.FromArgb(
System.Convert.ToInt32(255 * r),
System.Convert.ToInt32(255 * g),
System.Convert.ToInt32(255 * b));
}
private static double GetColorComponent(double temp1, double temp2, double temp3)
{
temp3 = MoveIntoRange(temp3);
if (temp3 < 1 / 6.0)
return temp1 + (temp2 - temp1) * 6.0 * temp3;
else if (temp3 < 0.5)
return temp2;
else if (temp3 < 2 / 3.0)
return temp1 + ((temp2 - temp1) * (2 / 3.0 - temp3) * 6);
else
return temp1;
}
private static double MoveIntoRange(double temp3)
{
if (temp3 < 0)
temp3 += 1;
else if (temp3 > 1)
temp3 -= 1;
return temp3;
}
private static double GetTemp2(HSLColor hslColor)
{
double temp2;
if (hslColor.luminosity < 0.5)
temp2 = hslColor.luminosity * (1.0 + hslColor.saturation);
else
temp2 = hslColor.luminosity + hslColor.saturation - (hslColor.luminosity * hslColor.saturation);
return temp2;
}
public static HSLColor Convert(Color c)
{
HSLColor r = new HSLColor();
r.hue = c.GetHue() / 360.0;
r.luminosity = c.GetBrightness();
r.saturation = c.GetSaturation();
return r;
}
public void SetRGB(int red, int green, int blue)
{
HSLColor hc = HSLColor.Convert(Color.FromArgb(red, green, blue));
hue = hc.hue;
saturation = hc.saturation;
luminosity = hc.luminosity;
}
}

View File

@@ -1,127 +0,0 @@
using Microsoft.Win32;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace mpvnet
{
public class Misc
{
public static readonly string[] FileTypes = "264 265 3gp aac ac3 avc avi avs bmp divx dts dtshd dtshr dtsma eac3 evo flac flv h264 h265 hevc hvc jpg jpeg m2t m2ts m2v m4a m4v mka mkv mlp mov mp2 mp3 mp4 mpa mpeg mpg mpv mts ogg ogm opus pcm png pva raw rmvb thd thd+ac3 true-hd truehd ts vdr vob vpy w64 wav webm wmv y4m".Split(' ');
public static string GetFilter(IEnumerable<string> values) => "*." +
String.Join(";*.", values) + "|*." + String.Join(";*.", values) + "|All Files|*.*";
}
public class StringLogicalComparer : IComparer, IComparer<string>
{
[DllImport("shlwapi.dll", CharSet = CharSet.Unicode)]
public static extern int StrCmpLogical(string x, string y);
int IComparer_Compare(object x, object y) => StrCmpLogical(x.ToString(), y.ToString());
int IComparer.Compare(object x, object y) => IComparer_Compare(x, y);
int IComparerOfString_Compare(string x, string y) => StrCmpLogical(x, y);
int IComparer<string>.Compare(string x, string y) => IComparerOfString_Compare(x, y);
}
public class OSVersion
{
public static float Windows7 { get; } = 6.1f;
public static float Windows8 { get; } = 6.2f;
public static float Windows81 { get; } = 6.3f;
public static float Windows10 { get; } = 10f;
public static float Current => Environment.OSVersion.Version.Major + Environment.OSVersion.Version.Minor / 10f;
}
public class FileAssociation
{
static string ExePath = Application.ExecutablePath;
static string ExeFilename = Path.GetFileName(Application.ExecutablePath);
static string ExeFilenameNoExt = Path.GetFileNameWithoutExtension(Application.ExecutablePath);
static string[] Types;
public static string[] VideoTypes = "mpg avi vob mp4 mkv avs 264 mov wmv flv h264 asf webm mpeg mpv y4m avc hevc 265 h265 m2v m2ts vpy mts webm m4v".Split(" ".ToCharArray());
public static string[] AudioTypes = "mp2 mp3 ac3 wav w64 m4a dts dtsma dtshr dtshd eac3 thd thd+ac3 ogg mka aac opus flac mpa".Split(" ".ToCharArray());
public static void Register(string[] types)
{
Types = types;
RegistryHelp.SetValue(@"HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\" + ExeFilename, null, ExePath);
RegistryHelp.SetValue($"HKCR\\Applications\\{ExeFilename}", "FriendlyAppName", "mpv.net media player");
RegistryHelp.SetValue($"HKCR\\Applications\\{ExeFilename}\\shell\\open\\command", null, $"\"{ExePath}\" \"%1\"");
RegistryHelp.SetValue(@"HKLM\SOFTWARE\Clients\Media\mpv\Capabilities", "ApplicationDescription", "mpv.net media player");
RegistryHelp.SetValue(@"HKLM\SOFTWARE\Clients\Media\mpv\Capabilities", "ApplicationName", "mpv.net");
RegistryHelp.SetValue($"HKCR\\SystemFileAssociations\\video\\OpenWithList\\{ExeFilename}", null, "");
RegistryHelp.SetValue($"HKCR\\SystemFileAssociations\\audio\\OpenWithList\\{ExeFilename}", null, "");
foreach (string ext in Types)
{
RegistryHelp.SetValue($"HKCR\\Applications\\{ExeFilename}\\SupportedTypes", "." + ext, "");
RegistryHelp.SetValue($"HKCR\\" + "." + ext, null, ExeFilenameNoExt + "." + ext);
RegistryHelp.SetValue($"HKCR\\" + "." + ext + "\\OpenWithProgIDs", ExeFilenameNoExt + "." + ext, "");
if (VideoTypes.Contains(ext))
RegistryHelp.SetValue($"HKCR\\" + "." + ext, "PerceivedType", "video");
if (AudioTypes.Contains(ext))
RegistryHelp.SetValue($"HKCR\\" + "." + ext, "PerceivedType", "audio");
RegistryHelp.SetValue($"HKCR\\" + ExeFilenameNoExt + "." + ext + "\\shell\\open", null, "Play with " + Application.ProductName);
RegistryHelp.SetValue($"HKCR\\" + ExeFilenameNoExt + "." + ext + "\\shell\\open\\command", null, $"\"{ExePath}\" \"%1\"");
RegistryHelp.SetValue(@"HKLM\SOFTWARE\Clients\Media\mpv.net\Capabilities\FileAssociations", "." + ext, ExeFilenameNoExt + "." + ext);
}
}
public static void Unregister()
{
RegistryHelp.RemoveKey(@"HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\" + ExeFilename);
RegistryHelp.RemoveKey($"HKCR\\Applications\\{ExeFilename}");
RegistryHelp.RemoveKey(@"HKLM\SOFTWARE\Clients\Media\mpv.net");
RegistryHelp.RemoveKey($"HKCR\\SystemFileAssociations\\video\\OpenWithList\\{ExeFilename}");
RegistryHelp.RemoveKey($"HKCR\\SystemFileAssociations\\audio\\OpenWithList\\{ExeFilename}");
foreach (string id in Registry.ClassesRoot.GetSubKeyNames())
{
if (id.StartsWith(ExeFilenameNoExt + "."))
Registry.ClassesRoot.DeleteSubKeyTree(id);
RegistryHelp.RemoveValue($"HKCR\\Software\\Classes\\" + id + "\\OpenWithProgIDs", ExeFilenameNoExt + id);
RegistryHelp.RemoveValue($"HKLM\\Software\\Classes\\" + id + "\\OpenWithProgIDs", ExeFilenameNoExt + id);
}
}
}
public class RegistryHelp
{
public static void SetValue(string path, string name, string value)
{
using (RegistryKey rk = GetRootKey(path).CreateSubKey(path.Substring(5), RegistryKeyPermissionCheck.ReadWriteSubTree))
rk.SetValue(name, value);
}
public static void RemoveKey(string path)
{
GetRootKey(path).DeleteSubKeyTree(path.Substring(5), false);
}
public static void RemoveValue(string path, string name)
{
using (RegistryKey rk = GetRootKey(path).OpenSubKey(path.Substring(5), true))
if (!(rk is null))
rk.DeleteValue(name, false);
}
static RegistryKey GetRootKey(string path)
{
switch (path.Substring(0, 4))
{
case "HKLM": return Registry.LocalMachine;
case "HKCU": return Registry.CurrentUser;
case "HKCR": return Registry.ClassesRoot;
default: throw new Exception();
}
}
}
}

View File

@@ -1,65 +0,0 @@
using System;
using System.Drawing;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
namespace mpvnet
{
public class Native
{
[DllImport("kernel32.dll")]
public static extern IntPtr LoadLibrary(string dllToLoad);
[DllImport("user32.dll", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string lclassName, string windowTitle);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern string SendMessage(IntPtr hWnd, int msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern bool PostMessage(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
[DllImport("user32.dll")]
public static extern void ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool AdjustWindowRect(ref RECT lpRect, uint dwStyle, bool bMenu);
[DllImport("user32.dll")]
public static extern IntPtr GetWindowLongPtrW(IntPtr hWnd, int nIndex);
[DllImport("user32.dll", SetLastError = true)]
public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int X, int Y, int cx, int cy, int uFlags);
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
public int Left;
public int Top;
public int Right;
public int Bottom;
public RECT(Rectangle r)
{
Left = r.Left;
Top = r.Top;
Right = r.Right;
Bottom = r.Bottom;
}
public RECT(int left, int top, int right, int bottom)
{
Left = left;
Top = top;
Right = right;
Bottom = bottom;
}
public Rectangle ToRectangle() { return Rectangle.FromLTRB(Left, Top, Right, Bottom); }
public Size Size => new Size(Right - Left, Bottom - Top);
public int Width => Right - Left;
public int Height => Bottom - Top;
}
}
}

View File

@@ -1,38 +0,0 @@
using System;
namespace mpvnet
{
public static class NativeHelp
{
public static int GetResizeBorder(int v)
{
switch (v)
{
case 1 /* WMSZ_LEFT */ : return 3;
case 3 /* WMSZ_TOP */ : return 2;
case 2 /* WMSZ_RIGHT */ : return 3;
case 6 /* WMSZ_BOTTOM */ : return 2;
case 4 /* WMSZ_TOPLEFT */ : return 1;
case 5 /* WMSZ_TOPRIGHT */ : return 1;
case 7 /* WMSZ_BOTTOMLEFT */ : return 3;
case 8 /* WMSZ_BOTTOMRIGHT */: return 3;
default: return -1;
}
}
public static void SubtractWindowBorders(IntPtr hwnd, ref Native.RECT rc)
{
var b = new Native.RECT(0, 0, 0, 0);
AddWindowBorders(hwnd, ref b);
rc.Left -= b.Left;
rc.Top -= b.Top;
rc.Right -= b.Right;
rc.Bottom -= b.Bottom;
}
public static void AddWindowBorders(IntPtr hwnd, ref Native.RECT rc)
{
Native.AdjustWindowRect(ref rc, (uint)Native.GetWindowLongPtrW(hwnd, -16 /* GWL_STYLE */), false);
}
}
}

View File

@@ -1,129 +0,0 @@
using System;
using System.IO;
using System.Threading;
using System.Management.Automation.Runspaces;
using System.Reflection;
using System.Threading.Tasks;
using System.Windows.Forms;
using VBNET;
namespace mpvnet
{
public class PowerShellScript
{
public static object Execute(string code, string[] parameters)
{
using (Runspace runspace = RunspaceFactory.CreateRunspace())
{
runspace.ApartmentState = ApartmentState.STA;
runspace.ThreadOptions = PSThreadOptions.UseCurrentThread;
runspace.Open();
using (Pipeline pipeline = runspace.CreatePipeline())
{
pipeline.Commands.AddScript(
@"Using namespace mpvnet;
Using namespace System;
[System.Reflection.Assembly]::LoadWithPartialName(""mpvnet"")");
pipeline.Commands.AddScript(code);
try
{
var ret = pipeline.Invoke(parameters);
if (ret.Count > 0)
return ret[0];
}
catch (Exception ex)
{
try
{
using (Pipeline pipeline2 = runspace.CreatePipeline())
{
pipeline2.Commands.AddScript("$PSVersionTable.PSVersion.Major * 10 +" +
"$PSVersionTable.PSVersion.Minor");
if (Convert.ToInt32(pipeline2.Invoke()[0].ToString()) < 51)
throw new Exception();
}
}
catch (Exception ex2)
{
Msg.ShowError("PowerShell Setup Problem\n\nEnsure you have at least PowerShell 5.1 installed.", ex2.ToString());
return null;
}
Msg.ShowException(ex);
}
}
}
return null;
}
public static void Init(string filePath)
{
foreach (var eventInfo in typeof(mp).GetEvents())
{
if (eventInfo.Name.ToLower() ==
Path.GetFileNameWithoutExtension(filePath).ToLower().Replace("-", ""))
{
PowerShellEventObject eventObject = new PowerShellEventObject();
MethodInfo mi;
eventObject.FilePath = filePath;
if (eventInfo.EventHandlerType == typeof(Action))
{
mi = eventObject.GetType().GetMethod(nameof(PowerShellEventObject.Invoke));
}
else if (eventInfo.EventHandlerType == typeof(Action<EndFileEventMode>))
{
mi = eventObject.GetType().GetMethod(nameof(PowerShellEventObject.InvokeEndFileEventMode));
}
else if (eventInfo.EventHandlerType == typeof(Action<string[]>))
{
mi = eventObject.GetType().GetMethod(nameof(PowerShellEventObject.InvokeStrings));
}
else
throw new Exception();
eventObject.EventInfo = eventInfo;
Delegate handler = Delegate.CreateDelegate(eventInfo.EventHandlerType, eventObject, mi);
eventObject.Delegate = handler;
eventInfo.AddEventHandler(eventObject, handler);
return;
}
}
Task.Run(() =>
{
PowerShellScript.Execute(File.ReadAllText(filePath), new string[] {});
});
}
}
public class PowerShellEventObject
{
public EventInfo EventInfo { get; set; }
public Delegate Delegate { get; set; }
public string FilePath { get; set; }
public void Invoke()
{
Task.Run(() => { PowerShellScript.Execute(File.ReadAllText(FilePath), new string[] { }); });
}
public void InvokeEndFileEventMode(EndFileEventMode arg)
{
Task.Run(() =>
{
PowerShellScript.Execute(File.ReadAllText(FilePath), new string[] { arg.ToString() });
});
}
public void InvokeStrings(string[] args)
{
Task.Run(() => {
PowerShellScript.Execute(File.ReadAllText(FilePath), args);
});
}
}
}

View File

@@ -1,34 +0,0 @@
using System;
using System.Windows.Forms;
namespace mpvnet
{
static class Program
{
[STAThread]
static void Main()
{
try
{
string[] args = Environment.GetCommandLineArgs();
if (args.Length == 3 && args[1] == "--reg-file-assoc")
{
if (args[2] == "audio") FileAssociation.Register(FileAssociation.AudioTypes);
if (args[2] == "video") FileAssociation.Register(FileAssociation.VideoTypes);
if (args[2] == "unregister") FileAssociation.Unregister();
return;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}

View File

@@ -1,36 +0,0 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("mpv.net")]
[assembly: AssemblyDescription("libmpv based media player")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("mpv.net")]
[assembly: AssemblyCopyright("Copyright © 2017 stax76")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("1751f378-8edf-4b62-be6d-304c7c287089")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.5.0.0")]
[assembly: AssemblyFileVersion("2.5.0.0")]

View File

@@ -1,26 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mpvnet.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

View File

@@ -1,5 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles />
<Settings />
</SettingsFile>

View File

@@ -1,56 +0,0 @@
using System;
using System.Reflection;
using System.Windows.Forms;
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
using VBNET;
using PyRT = IronPython.Runtime;
namespace mpvnet
{
public class PythonScript
{
ScriptEngine engine;
ScriptScope scope;
public PythonScript(string code)
{
try
{
engine = Python.CreateEngine();
scope = engine.CreateScope();
scope.ImportModule("clr");
engine.Execute("import clr", scope);
engine.Execute("clr.AddReference(\"mpvnet\")", scope);
engine.Execute("from mpvnet import *", scope);
engine.Execute(code, scope);
}
catch (Exception ex)
{
Msg.ShowException(ex);
}
}
}
public class PythonEventObject
{
public PyRT.PythonFunction PythonFunction { get; set; }
public EventInfo EventInfo { get; set; }
public Delegate Delegate { get; set; }
public void Invoke()
{
PyRT.Operations.PythonCalls.Call(PythonFunction);
}
public void InvokeEndFileEventMode(EndFileEventMode arg)
{
PyRT.Operations.PythonCalls.Call(PythonFunction, new[] { arg });
}
public void InvokeStrings(string[] arg)
{
PyRT.Operations.PythonCalls.Call(PythonFunction, new[] { arg });
}
}
}

View File

@@ -1,169 +0,0 @@
# This file defines the input (keys and mouse) bindings of mpv and mpv.net
# and it also defines the context menu of mpv.net. mpv.net has an input
# editor and an conf editor as alternatives to editing conf text files.
# The input and conf editors can be found in mpv.net's context menu at:
# Settings > Show Config Editor
# Settings > Show Input Editor
# The defaults of this file can be found at:
# https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt
# the defaults of mpv can be found at:
# https://github.com/mpv-player/mpv/blob/master/etc/input.conf
# mpv.net's defaults of mpv.conf contain: 'input-default-bindings = no'
# which disables mpv's input defaults. Every line in this file begins with a
# space character to make it easier to do a text search, so if you want to know
# if 'o' has already a binding you can make a text search on ' o '.
# mpv input commands: https://github.com/stax76/mpv.net/wiki/mpv-input-commands
# mpv input keys: https://github.com/stax76/mpv.net/wiki/mpv-input-keys
o script-message mpv.net open-files #menu: Open > Open Files...
u script-message mpv.net open-url #menu: Open > Open URL...
_ ignore #menu: Open > -
Alt+a script-message mpv.net load-audio #menu: Open > Load external audio files...
Alt+s script-message mpv.net load-sub #menu: Open > Load external subtitle files...
_ ignore #menu: -
Space cycle pause #menu: Play/Pause
s stop #menu: Stop
_ ignore #menu: -
f cycle fullscreen #menu: Toggle Fullscreen
F11 playlist-prev #menu: Navigate > Previous
F12 playlist-next #menu: Navigate > Next
_ ignore #menu: Navigate > -
PGUP add chapter 1 #menu: Navigate > Next Chapter
PGDWN add chapter -1 #menu: Navigate > Previous Chapter
. frame-step #menu: Seek > Next Frame
, frame-back-step #menu: Seek > Previous Frame
_ ignore #menu: Seek > -
Right no-osd seek 7 #menu: Seek > 7 sec forward
Left no-osd seek -7 #menu: Seek > 7 sec backward
_ ignore #menu: Seek > -
Up no-osd seek 40 #menu: Seek > 40 sec forward
Down no-osd seek -40 #menu: Seek > 40 sec backward
_ ignore #menu: Seek > -
Ctrl+Right no-osd seek 300 #menu: Seek > 5 min forward
Ctrl+Left no-osd seek -300 #menu: Seek > 5 min backward
Ctrl++ add video-zoom 0.1 #menu: Pan & Scan > Increase Size
Ctrl+- add video-zoom -0.1 #menu: Pan & Scan > Decrease Size
_ ignore #menu: Pan & Scan > -
Ctrl+KP4 add video-pan-x -0.01 #menu: Pan & Scan > Move Left
Ctrl+KP6 add video-pan-x 0.01 #menu: Pan & Scan > Move Right
_ ignore #menu: Pan & Scan > -
Ctrl+KP8 add video-pan-y -0.01 #menu: Pan & Scan > Move Up
Ctrl+KP2 add video-pan-y 0.01 #menu: Pan & Scan > Move Down
_ ignore #menu: Pan & Scan > -
w add panscan -0.1 #menu: Pan & Scan > Decrease Height
W add panscan 0.1 #menu: Pan & Scan > Increase Height
_ ignore #menu: Pan & Scan > -
Ctrl+BS set video-zoom 0; set video-pan-x 0; set video-pan-y 0 #menu: Pan & Scan > Reset
Ctrl+1 add contrast -1 #menu: Video > Decrease Contrast
Ctrl+2 add contrast #menu: Video > Increase Contrast
_ ignore #menu: Video > -
Ctrl+3 add brightness -1 #menu: Video > Decrease Brightness
Ctrl+4 add brightness 1 #menu: Video > Increase Brightness
_ ignore #menu: Video > -
Ctrl+5 add gamma -1 #menu: Video > Decrease Gamma
Ctrl+6 add gamma 1 #menu: Video > Increase Gamma
_ ignore #menu: Video > -
Ctrl+7 add saturation -1 #menu: Video > Decrease Saturation
Ctrl+8 add saturation 1 #menu: Video > Increase Saturation
_ ignore #menu: Video > -
Ctrl+s async screenshot #menu: Video > Take Screenshot
d cycle deinterlace #menu: Video > Toggle Deinterlace
a cycle-values video-aspect "16:9" "4:3" "2.35:1" "-1" #menu: Video > Cycle Aspect Ratio
KP7 cycle audio #menu: Audio > Cycle/Next
_ ignore #menu: Audio > -
KP6 add audio-delay 0.100 #menu: Audio > Delay +0.1
KP9 add audio-delay -0.100 #menu: Audio > Delay -0.1
KP8 cycle sub #menu: Subtitle > Cycle/Next
v cycle sub-visibility #menu: Subtitle > Toggle Visibility
_ ignore #menu: Subtitle > -
z add sub-delay -0.1 #menu: Subtitle > Delay -0.1
Z add sub-delay 0.1 #menu: Subtitle > Delay +0.1
_ ignore #menu: Subtitle > -
r add sub-pos -1 #menu: Subtitle > Move Up
R add sub-pos +1 #menu: Subtitle > Move Down
_ ignore #menu: Subtitle > -
_ add sub-scale -0.1 #menu: Subtitle > Decrease Subtitle Font Size
_ add sub-scale 0.1 #menu: Subtitle > Increase Subtitle Font Size
+ add volume 10 #menu: Volume > Up
- add volume -10 #menu: Volume > Down
_ ignore #menu: Volume > -
m cycle mute #menu: Volume > Mute
[ multiply speed 0.9 #menu: Speed > -10%
] multiply speed 1.1 #menu: Speed > +10%
_ ignore #menu: Speed > -
{ multiply speed 0.5 #menu: Speed > Half
} multiply speed 2.0 #menu: Speed > Double
_ ignore #menu: Speed > -
BS set speed 1 #menu: Speed > Reset
KP0 script-message rate-file 0 #menu: Addons > Rating > 0stars
KP1 script-message rate-file 1 #menu: Addons > Rating > 1stars
KP2 script-message rate-file 2 #menu: Addons > Rating > 2stars
KP3 script-message rate-file 3 #menu: Addons > Rating > 3stars
KP4 script-message rate-file 4 #menu: Addons > Rating > 4stars
KP5 script-message rate-file 5 #menu: Addons > Rating > 5stars
Ctrl+t set ontop yes #menu: View > On Top > Enable
Ctrl+T set ontop no #menu: View > On Top > Disable
i script-message mpv.net show-info #menu: View > File Info
t script-binding stats/display-stats #menu: View > Show Statistics
T script-binding stats/display-stats-toggle #menu: View > Toggle Statistics
_ script-message mpv.net set-setting hwdec yes #menu: Settings > Hardware Decoding > Enable
_ script-message mpv.net set-setting hwdec no #menu: Settings > Hardware Decoding > Disable
Ctrl+c script-message mpv.net show-conf-editor #menu: Settings > Show Config Editor
Ctrl+i script-message mpv.net show-input-editor #menu: Settings > Show Input Editor
Ctrl+f script-message mpv.net open-conf-folder #menu: Settings > Open Config Folder
h script-message mpv.net show-history #menu: Tools > Show History
l ab-loop #menu: Tools > Set/clear A-B loop points
L cycle-values loop-file "inf" "no" #menu: Tools > Toggle Infinite Looping
Del script-binding osc/visibility #menu: Tools > Toggle OSC Visibility
Ctrl+h cycle-values hwdec "auto" "no" #menu: Tools > Cycle Hardware Decoding
F8 show-text ${playlist} 5000 #menu: Tools > Show Playlist
F9 show-text ${track-list} 5000 #menu: Tools > Show Audio/Video/Subtitle List
_ script-message mpv.net execute-mpv-command #menu: Tools > Execute mpv command...
_ script-message mpv.net shell-execute https://mpv.io/manual/stable/ #menu: Help > Show mpv manual
_ script-message mpv.net shell-execute https://github.com/mpv-player/mpv/blob/master/etc/input.conf #menu: Help > Show mpv default keys
_ script-message mpv.net shell-execute https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt #menu: Help > Show mpv.net default keys
_ script-message mpv.net shell-execute https://github.com/stax76/mpvnet #menu: Help > Show mpv.net web site
_ ignore #menu: -
Esc quit #menu: Exit
Q quit-watch-later #menu: Exit Watch Later
> playlist-next
< playlist-prev
Enter cycle pause
Power quit
Play cycle pause
Pause cycle pause
PlayPause cycle pause
Stop stop
Forward seek 60
Rewind seek -60
Mute cycle mute
Volume_Up add volume 10
Volume_Down add volume -10
Wheel_Up add volume 10
Wheel_Down add volume -10
Prev playlist-prev
Next playlist-next

View File

@@ -1,14 +0,0 @@
# mpv manual: https://mpv.io/manual/master/
# mpv.net mpv.conf defaults: https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/mpv.conf.txt
input-ar-delay = 500
input-ar-rate = 20
volume = 50
hwdec = yes
keep-open = yes
keep-open-pause = no
osd-playing-msg = ${filename}
screenshot-directory = ~~desktop/
input-default-bindings = no

View File

@@ -1,36 +0,0 @@
using System;
using System.Drawing;
using System.Windows.Forms;
namespace mpvnet
{
public class CursorHelp
{
static bool IsVisible = true;
public static void Show()
{
if (!IsVisible)
{
Cursor.Show();
IsVisible = true;
}
}
public static void Hide()
{
if (IsVisible)
{
Cursor.Hide();
IsVisible = false;
}
}
public static bool IsPosDifferent(Point screenPos)
{
return
Math.Abs(screenPos.X - Control.MousePosition.X) > 10 ||
Math.Abs(screenPos.Y - Control.MousePosition.Y) > 10;
}
}
}

View File

@@ -1,187 +0,0 @@
using System;
using System.Runtime.InteropServices;
namespace mpvnet
{
public class libmpv
{
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr mpv_create();
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int mpv_initialize(IntPtr mpvHandle);
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int mpv_command(IntPtr mpvHandle, IntPtr strings);
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int mpv_command_string(IntPtr mpvHandle, [MarshalAs(UnmanagedType.LPUTF8Str)] string command);
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int mpv_terminate_destroy(IntPtr mpvHandle);
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int mpv_set_option(IntPtr mpvHandle, byte[] name, mpv_format format, ref long data);
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int mpv_set_option_string(IntPtr mpvHandle, byte[] name, byte[] value);
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int mpv_get_property(IntPtr mpvHandle, byte[] name, mpv_format format, out IntPtr data);
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int mpv_get_property(IntPtr mpvHandle, byte[] name, mpv_format format, ref double data);
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int mpv_set_property(IntPtr mpvHandle, byte[] name, mpv_format format, ref byte[] data);
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int mpv_set_property(IntPtr mpvHandle, byte[] name, mpv_format format, ref Int64 data);
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int mpv_observe_property(
IntPtr mpvHandle,
UInt64 reply_userdata,
[MarshalAs(UnmanagedType.LPUTF8Str)] string name,
mpv_format format);
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern int mpv_unobserve_property(IntPtr mpvHandle, UInt64 registered_reply_userdata);
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern void mpv_free(IntPtr data);
[DllImport("mpv-1.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr mpv_wait_event(IntPtr mpvHandle, double timeout);
public enum mpv_error
{
MPV_ERROR_SUCCESS = 0,
MPV_ERROR_EVENT_QUEUE_FULL = -1,
MPV_ERROR_NOMEM = -2,
MPV_ERROR_UNINITIALIZED = -3,
MPV_ERROR_INVALID_PARAMETER = -4,
MPV_ERROR_OPTION_NOT_FOUND = -5,
MPV_ERROR_OPTION_FORMAT = -6,
MPV_ERROR_OPTION_ERROR = -7,
MPV_ERROR_PROPERTY_NOT_FOUND = -8,
MPV_ERROR_PROPERTY_FORMAT = -9,
MPV_ERROR_PROPERTY_UNAVAILABLE = -10,
MPV_ERROR_PROPERTY_ERROR = -11,
MPV_ERROR_COMMAND = -12,
MPV_ERROR_LOADING_FAILED = -13,
MPV_ERROR_AO_INIT_FAILED = -14,
MPV_ERROR_VO_INIT_FAILED = -15,
MPV_ERROR_NOTHING_TO_PLAY = -16,
MPV_ERROR_UNKNOWN_FORMAT = -17,
MPV_ERROR_UNSUPPORTED = -18,
MPV_ERROR_NOT_IMPLEMENTED = -19,
MPV_ERROR_GENERIC = -20
}
public enum mpv_event_id
{
MPV_EVENT_NONE = 0,
MPV_EVENT_SHUTDOWN = 1,
MPV_EVENT_LOG_MESSAGE = 2,
MPV_EVENT_GET_PROPERTY_REPLY = 3,
MPV_EVENT_SET_PROPERTY_REPLY = 4,
MPV_EVENT_COMMAND_REPLY = 5,
MPV_EVENT_START_FILE = 6,
MPV_EVENT_END_FILE = 7,
MPV_EVENT_FILE_LOADED = 8,
MPV_EVENT_TRACKS_CHANGED = 9,
MPV_EVENT_TRACK_SWITCHED = 10,
MPV_EVENT_IDLE = 11,
MPV_EVENT_PAUSE = 12,
MPV_EVENT_UNPAUSE = 13,
MPV_EVENT_TICK = 14,
MPV_EVENT_SCRIPT_INPUT_DISPATCH = 15,
MPV_EVENT_CLIENT_MESSAGE = 16,
MPV_EVENT_VIDEO_RECONFIG = 17,
MPV_EVENT_AUDIO_RECONFIG = 18,
MPV_EVENT_METADATA_UPDATE = 19,
MPV_EVENT_SEEK = 20,
MPV_EVENT_PLAYBACK_RESTART = 21,
MPV_EVENT_PROPERTY_CHANGE = 22,
MPV_EVENT_CHAPTER_CHANGE = 23,
MPV_EVENT_QUEUE_OVERFLOW = 24,
MPV_EVENT_HOOK = 25
}
public enum mpv_format
{
MPV_FORMAT_NONE = 0,
MPV_FORMAT_STRING = 1,
MPV_FORMAT_OSD_STRING = 2,
MPV_FORMAT_FLAG = 3,
MPV_FORMAT_INT64 = 4,
MPV_FORMAT_DOUBLE = 5,
MPV_FORMAT_NODE = 6,
MPV_FORMAT_NODE_ARRAY = 7,
MPV_FORMAT_NODE_MAP = 8,
MPV_FORMAT_BYTE_ARRAY = 9
}
public enum mpv_log_level
{
MPV_LOG_LEVEL_NONE = 0,
MPV_LOG_LEVEL_FATAL = 10,
MPV_LOG_LEVEL_ERROR = 20,
MPV_LOG_LEVEL_WARN = 30,
MPV_LOG_LEVEL_INFO = 40,
MPV_LOG_LEVEL_V = 50,
MPV_LOG_LEVEL_DEBUG = 60,
MPV_LOG_LEVEL_TRACE = 70,
}
public enum mpv_end_file_reason
{
MPV_END_FILE_REASON_EOF = 0,
MPV_END_FILE_REASON_STOP = 2,
MPV_END_FILE_REASON_QUIT = 3,
MPV_END_FILE_REASON_ERROR = 4,
MPV_END_FILE_REASON_REDIRECT = 5
}
[StructLayout(LayoutKind.Sequential)]
public struct mpv_event_log_message
{
public string prefix;
public string level;
public string text;
public mpv_log_level log_level;
}
[StructLayout(LayoutKind.Sequential)]
public struct mpv_event
{
public mpv_event_id event_id;
public int error;
public UInt64 reply_userdata;
public IntPtr data;
}
[StructLayout(LayoutKind.Sequential)]
public struct mpv_event_client_message
{
public int num_args;
public IntPtr args;
}
[StructLayout(LayoutKind.Sequential)]
public struct mpv_event_property
{
public string name;
public mpv_format format;
public IntPtr data;
}
[StructLayout(LayoutKind.Sequential)]
public struct mpv_event_end_file
{
public int reason;
public int error;
}
}
}

View File

@@ -1,568 +0,0 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using VBNET;
using static mpvnet.libmpv;
using static mpvnet.Native;
using PyRT = IronPython.Runtime;
namespace mpvnet
{
public delegate void MpvBoolPropChangeHandler(string propName, bool value);
public class mp
{
public static event Action VideoSizeChanged;
// Lua/JS evens libmpv events
// MPV_EVENT_NONE
public static event Action Shutdown; // shutdown MPV_EVENT_SHUTDOWN
public static event Action LogMessage; // log-message MPV_EVENT_LOG_MESSAGE
public static event Action GetPropertyReply; // get-property-reply MPV_EVENT_GET_PROPERTY_REPLY
public static event Action SetPropertyReply; // set-property-reply MPV_EVENT_SET_PROPERTY_REPLY
public static event Action CommandReply; // command-reply MPV_EVENT_COMMAND_REPLY
public static event Action StartFile; // start-file MPV_EVENT_START_FILE
public static event Action<EndFileEventMode> EndFile; // end-file MPV_EVENT_END_FILE
public static event Action FileLoaded; // file-loaded MPV_EVENT_FILE_LOADED
public static event Action TracksChanged; // MPV_EVENT_TRACKS_CHANGED
public static event Action TrackSwitched; // MPV_EVENT_TRACK_SWITCHED
public static event Action Idle; // idle MPV_EVENT_IDLE
public static event Action Pause; // MPV_EVENT_PAUSE
public static event Action Unpause; // MPV_EVENT_UNPAUSE
public static event Action Tick; // tick MPV_EVENT_TICK
public static event Action ScriptInputDispatch; // MPV_EVENT_SCRIPT_INPUT_DISPATCH
public static event Action<string[]> ClientMessage; // client-message MPV_EVENT_CLIENT_MESSAGE
public static event Action VideoReconfig; // video-reconfig MPV_EVENT_VIDEO_RECONFIG
public static event Action AudioReconfig; // audio-reconfig MPV_EVENT_AUDIO_RECONFIG
public static event Action MetadataUpdate; // MPV_EVENT_METADATA_UPDATE
public static event Action Seek; // seek MPV_EVENT_SEEK
public static event Action PlaybackRestart; // playback-restart MPV_EVENT_PLAYBACK_RESTART
// MPV_EVENT_PROPERTY_CHANGE
public static event Action ChapterChange; // MPV_EVENT_CHAPTER_CHANGE
public static event Action QueueOverflow; // MPV_EVENT_QUEUE_OVERFLOW
public static event Action Hook; // MPV_EVENT_HOOK
public static IntPtr MpvHandle;
public static IntPtr MpvWindowHandle;
public static Addon Addon;
public static List<KeyValuePair<string, Action<bool>>> BoolPropChangeActions = new List<KeyValuePair<string, Action<bool>>>();
public static Size VideoSize = new Size(1920, 1080);
public static string mpvConfFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\mpv\\";
public static string InputConfPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\mpv\\input.conf";
public static string mpvConfPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\mpv\\mpv.conf";
public static List<PythonScript> PythonScripts => new List<PythonScript>();
public static AutoResetEvent AutoResetEvent = new AutoResetEvent(false);
private static Dictionary<string, string> _mpvConf;
public static Dictionary<string, string> mpvConf {
get {
if (_mpvConf == null)
{
_mpvConf = new Dictionary<string, string>();
if (File.Exists(mpvConfPath))
foreach (var i in File.ReadAllLines(mpvConfPath))
if (i.Contains("=") && ! i.StartsWith("#"))
_mpvConf[i.Substring(0, i.IndexOf("=")).Trim()] = i.Substring(i.IndexOf("=") + 1).Trim();
}
return _mpvConf;
}
}
public static void Init()
{
if (!Directory.Exists(mp.mpvConfFolderPath))
Directory.CreateDirectory(mp.mpvConfFolderPath);
if (!File.Exists(mp.mpvConfPath))
File.WriteAllText(mp.mpvConfPath, Properties.Resources.mpv_conf);
if (!File.Exists(mp.InputConfPath))
File.WriteAllText(mp.InputConfPath, Properties.Resources.input_conf);
LoadLibrary("mpv-1.dll");
MpvHandle = mpv_create();
set_property_string("input-default-bindings", "yes");
set_property_string("osc", "yes");
set_property_string("config", "yes");
set_property_string("wid", MainForm.Hwnd.ToString());
set_property_string("force-window", "yes");
set_property_string("input-media-keys", "yes");
mpv_initialize(MpvHandle);
ProcessCommandLine();
Task.Run(() => { LoadScripts(); });
Task.Run(() => { Addon = new Addon(); });
Task.Run(() => { EventLoop(); });
}
public static void LoadScripts()
{
string[] jsLua = { ".lua", ".js" };
string[] startupScripts = Directory.GetFiles(Application.StartupPath + "\\Scripts");
foreach (var scriptPath in startupScripts)
if (jsLua.Contains(Path.GetExtension(scriptPath).ToLower()))
mp.commandv("load-script", $"{scriptPath}");
foreach (var scriptPath in startupScripts)
if (Path.GetExtension(scriptPath) == ".py")
PythonScripts.Add(new PythonScript(File.ReadAllText(scriptPath)));
foreach (var scriptPath in startupScripts)
if (Path.GetExtension(scriptPath) == ".ps1")
PowerShellScript.Init(scriptPath);
foreach (var scriptPath in Directory.GetFiles(mp.mpvConfFolderPath + "Scripts"))
if (Path.GetExtension(scriptPath) == ".py")
PythonScripts.Add(new PythonScript(File.ReadAllText(scriptPath)));
else if (Path.GetExtension(scriptPath) == ".ps1")
PowerShellScript.Init(scriptPath);
}
public static void EventLoop()
{
while (true)
{
IntPtr ptr = mpv_wait_event(MpvHandle, -1);
mpv_event evt = (mpv_event)Marshal.PtrToStructure(ptr, typeof(mpv_event));
if (MpvWindowHandle == IntPtr.Zero)
MpvWindowHandle = FindWindowEx(MainForm.Hwnd, IntPtr.Zero, "mpv", null);
//Debug.WriteLine(evt.event_id.ToString());
try
{
switch (evt.event_id)
{
case mpv_event_id.MPV_EVENT_SHUTDOWN:
Shutdown?.Invoke();
AutoResetEvent.Set();
return;
case mpv_event_id.MPV_EVENT_LOG_MESSAGE:
LogMessage?.Invoke();
break;
case mpv_event_id.MPV_EVENT_GET_PROPERTY_REPLY:
GetPropertyReply?.Invoke();
break;
case mpv_event_id.MPV_EVENT_SET_PROPERTY_REPLY:
SetPropertyReply?.Invoke();
break;
case mpv_event_id.MPV_EVENT_COMMAND_REPLY:
CommandReply?.Invoke();
break;
case mpv_event_id.MPV_EVENT_START_FILE:
StartFile?.Invoke();
break;
case mpv_event_id.MPV_EVENT_END_FILE:
var end_fileData = (mpv_event_end_file)Marshal.PtrToStructure(evt.data, typeof(mpv_event_end_file));
EndFile?.Invoke((EndFileEventMode)end_fileData.reason);
break;
case mpv_event_id.MPV_EVENT_FILE_LOADED:
FileLoaded?.Invoke();
LoadFolder();
break;
case mpv_event_id.MPV_EVENT_TRACKS_CHANGED:
TracksChanged?.Invoke();
break;
case mpv_event_id.MPV_EVENT_TRACK_SWITCHED:
TrackSwitched?.Invoke();
break;
case mpv_event_id.MPV_EVENT_IDLE:
Idle?.Invoke();
break;
case mpv_event_id.MPV_EVENT_PAUSE:
Pause?.Invoke();
break;
case mpv_event_id.MPV_EVENT_UNPAUSE:
Unpause?.Invoke();
break;
case mpv_event_id.MPV_EVENT_TICK:
Tick?.Invoke();
break;
case mpv_event_id.MPV_EVENT_SCRIPT_INPUT_DISPATCH:
ScriptInputDispatch?.Invoke();
break;
case mpv_event_id.MPV_EVENT_CLIENT_MESSAGE:
if (ClientMessage != null)
{
var client_messageData = (mpv_event_client_message)Marshal.PtrToStructure(evt.data, typeof(mpv_event_client_message));
string[] args = NativeUtf8StrArray2ManagedStrArray(client_messageData.args, client_messageData.num_args);
if (args != null && args.Length > 1 && args[0] == "mpv.net")
{
bool found = false;
foreach (var i in mpvnet.Command.Commands)
{
if (args[1] == i.Name)
{
found = true;
i.Action.Invoke(args.Skip(2).ToArray());
}
}
if (!found)
{
List<string> names = mpvnet.Command.Commands.Select((item) => item.Name).ToList();
names.Sort();
Msg.ShowError($"No command '{args[1]}' found.", $"Available commands are:\n\n{string.Join("\n", names)}\n\nHow to bind these commands can be seen in the [https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/input.conf.txt default input bindings and menu definition].");
}
}
ClientMessage?.Invoke(args);
}
break;
case mpv_event_id.MPV_EVENT_VIDEO_RECONFIG:
VideoReconfig?.Invoke();
break;
case mpv_event_id.MPV_EVENT_AUDIO_RECONFIG:
AudioReconfig?.Invoke();
break;
case mpv_event_id.MPV_EVENT_METADATA_UPDATE:
MetadataUpdate?.Invoke();
break;
case mpv_event_id.MPV_EVENT_SEEK:
Seek?.Invoke();
break;
case mpv_event_id.MPV_EVENT_PROPERTY_CHANGE:
var event_propertyData = (mpv_event_property)Marshal.PtrToStructure(evt.data, typeof(mpv_event_property));
if (event_propertyData.format == mpv_format.MPV_FORMAT_FLAG)
foreach (var i in BoolPropChangeActions)
if (i.Key== event_propertyData.name)
i.Value.Invoke(Marshal.PtrToStructure<int>(event_propertyData.data) == 1);
break;
case mpv_event_id.MPV_EVENT_PLAYBACK_RESTART:
PlaybackRestart?.Invoke();
Size s = new Size(get_property_int("dwidth"), get_property_int("dheight"));
if (VideoSize != s && s != Size.Empty)
{
VideoSize = s;
VideoSizeChanged?.Invoke();
}
break;
case mpv_event_id.MPV_EVENT_CHAPTER_CHANGE:
ChapterChange?.Invoke();
break;
case mpv_event_id.MPV_EVENT_QUEUE_OVERFLOW:
QueueOverflow?.Invoke();
break;
case mpv_event_id.MPV_EVENT_HOOK:
Hook?.Invoke();
break;
}
}
catch (Exception ex)
{
Msg.ShowException(ex);
}
}
}
private static List<PythonEventObject> PythonEventObjects = new List<PythonEventObject>();
public static void register_event(string name, PyRT.PythonFunction pyFunc)
{
foreach (var eventInfo in typeof(mp).GetEvents())
{
if (eventInfo.Name.ToLower() == name.Replace("-", ""))
{
PythonEventObject eventObject = new PythonEventObject();
PythonEventObjects.Add(eventObject);
eventObject.PythonFunction = pyFunc;
MethodInfo mi;
if (eventInfo.EventHandlerType == typeof(Action))
{
mi = eventObject.GetType().GetMethod(nameof(PythonEventObject.Invoke));
}
else if (eventInfo.EventHandlerType == typeof(Action<EndFileEventMode>))
{
mi = eventObject.GetType().GetMethod(nameof(PythonEventObject.InvokeEndFileEventMode));
}
else if (eventInfo.EventHandlerType == typeof(Action<string[]>))
{
mi = eventObject.GetType().GetMethod(nameof(PythonEventObject.InvokeStrings));
}
else
throw new Exception();
eventObject.EventInfo = eventInfo;
Delegate handler = Delegate.CreateDelegate(eventInfo.EventHandlerType, eventObject, mi);
eventObject.Delegate = handler;
eventInfo.AddEventHandler(eventObject, handler);
break;
}
}
}
public static void unregister_event(PyRT.PythonFunction pyFunc)
{
foreach (var eventObjects in PythonEventObjects)
if (eventObjects.PythonFunction == pyFunc)
eventObjects.EventInfo.RemoveEventHandler(eventObjects, eventObjects.Delegate);
}
public static void commandv(params string[] args)
{
if (MpvHandle == IntPtr.Zero)
return;
IntPtr mainPtr = AllocateUtf8IntPtrArrayWithSentinel(args, out IntPtr[] byteArrayPointers);
int err = mpv_command(MpvHandle, mainPtr);
if (err < 0)
throw new Exception($"{(mpv_error)err}");
foreach (var ptr in byteArrayPointers)
Marshal.FreeHGlobal(ptr);
Marshal.FreeHGlobal(mainPtr);
}
public static void command_string(string command, bool throwException = false)
{
if (MpvHandle == IntPtr.Zero)
return;
int err = mpv_command_string(MpvHandle, command);
if (err < 0 && throwException)
throw new Exception($"{(mpv_error)err}\r\n\r\n" + command);
}
public static void set_property_string(string name, string value, bool throwOnException = false)
{
byte[] bytes = GetUtf8Bytes(value);
int err = mpv_set_property(MpvHandle, GetUtf8Bytes(name), mpv_format.MPV_FORMAT_STRING, ref bytes);
if (err < 0 && throwOnException)
throw new Exception($"{name}: {(mpv_error)err}");
}
public static string get_property_string(string name, bool throwOnException = false)
{
try
{
int err = mpv_get_property(MpvHandle, GetUtf8Bytes(name), mpv_format.MPV_FORMAT_STRING, out IntPtr lpBuffer);
if (err < 0 && throwOnException)
throw new Exception($"{name}: {(mpv_error)err}");
var ret = StringFromNativeUtf8(lpBuffer);
mpv_free(lpBuffer);
return ret;
}
catch (Exception ex)
{
if (throwOnException) throw ex;
return "";
}
}
public static int get_property_int(string name, bool throwOnException = false)
{
int err = mpv_get_property(MpvHandle, GetUtf8Bytes(name), mpv_format.MPV_FORMAT_INT64, out IntPtr lpBuffer);
if (err < 0 && throwOnException)
throw new Exception($"{name}: {(mpv_error)err}");
else
return lpBuffer.ToInt32();
}
public static double get_property_number(string name, bool throwOnException = false)
{
double val = 0;
int err = mpv_get_property(MpvHandle, GetUtf8Bytes(name), mpv_format.MPV_FORMAT_DOUBLE, ref val);
if (err < 0 && throwOnException)
throw new Exception($"{name}: {(mpv_error)err}");
else
return val;
}
public static bool get_property_bool(string name, bool throwOnException = false)
{
int err = mpv_get_property(MpvHandle, GetUtf8Bytes(name), mpv_format.MPV_FORMAT_FLAG, out IntPtr lpBuffer);
if (err < 0 && throwOnException)
throw new Exception($"{name}: {(mpv_error)err}");
else
return lpBuffer.ToInt32() == 1;
}
public static void set_property_int(string name, int value, bool throwOnException = false)
{
Int64 val = value;
int err = mpv_set_property(MpvHandle, GetUtf8Bytes(name), mpv_format.MPV_FORMAT_INT64, ref val);
if (err < 0 && throwOnException)
throw new Exception($"{name}: {(mpv_error)err}");
}
public static void observe_property_bool(string name, Action<bool> action)
{
int err = mpv_observe_property(MpvHandle, (ulong)action.GetHashCode(), name, mpv_format.MPV_FORMAT_FLAG);
if (err < 0)
throw new Exception($"{name}: {(mpv_error)err}");
else
BoolPropChangeActions.Add(new KeyValuePair<string, Action<bool>>(name, action));
}
public static void unobserve_property_bool(string name, Action<bool> action)
{
foreach (var i in BoolPropChangeActions.ToArray())
if (i.Value == action)
BoolPropChangeActions.Remove(i);
int err = mpv_unobserve_property(MpvHandle, (ulong)action.GetHashCode());
if (err < 0)
throw new Exception($"{name}: {(mpv_error)err}");
}
protected static void ProcessCommandLine()
{
var args = Environment.GetCommandLineArgs().Skip(1);
foreach (string i in args)
if (!i.StartsWith("--") && File.Exists(i))
mp.commandv("loadfile", i, "append");
else if (!i.StartsWith("--") && i.StartsWith("http"))
mp.LoadURL(i);
mp.set_property_string("playlist-pos", "0");
foreach (string i in args)
{
if (i.StartsWith("--"))
{
if (i.Contains("="))
{
string left = i.Substring(2, i.IndexOf("=") - 2);
string right = i.Substring(left.Length + 3);
mp.set_property_string(left, right);
}
else
mp.set_property_string(i.Substring(2), "yes");
}
}
}
public static void LoadURL(string url)
{
int count = mp.get_property_int("playlist-count");
mp.commandv("loadfile", url, "append");
mp.set_property_int("playlist-pos", count);
for (int i = 0; i < count; i++)
mp.commandv("playlist-remove", "0");
}
public static void LoadFiles(string[] files)
{
int count = mp.get_property_int("playlist-count");
foreach (string file in files)
mp.commandv("loadfile", file, "append");
mp.set_property_int("playlist-pos", count);
for (int i = 0; i < count; i++)
mp.commandv("playlist-remove", "0");
mp.LoadFolder();
}
private static bool WasFolderLoaded;
public static void LoadFolder()
{
if (WasFolderLoaded)
return;
if (get_property_int("playlist-count") == 1)
{
string[] types = "264 265 3gp aac ac3 avc avi avs bmp divx dts dtshd dtshr dtsma eac3 evo flac flv h264 h265 hevc hvc jpg jpeg m2t m2ts m2v m4a m4v mka mkv mlp mov mp2 mp3 mp4 mpa mpeg mpg mpv mts ogg ogm opus pcm png pva raw rmvb thd thd+ac3 true-hd truehd ts vdr vob vpy w64 wav webm wmv y4m".Split(' ');
string path = get_property_string("path");
if (!Directory.Exists(Path.GetDirectoryName(path))) return;
List<string> files = Directory.GetFiles(Path.GetDirectoryName(path)).ToList();
files = files.Where((file) => types.Contains(Path.GetExtension(file).TrimStart(".".ToCharArray()).ToLower())).ToList();
files.Sort(new StringLogicalComparer());
int index = files.IndexOf(path);
files.Remove(path);
foreach (string i in files)
commandv("loadfile", i, "append");
if (index > 0)
commandv("playlist-move", "0", (index + 1).ToString());
}
WasFolderLoaded = true;
}
public static IntPtr AllocateUtf8IntPtrArrayWithSentinel(string[] arr, out IntPtr[] byteArrayPointers)
{
int numberOfStrings = arr.Length + 1; // add extra element for extra null pointer last (sentinel)
byteArrayPointers = new IntPtr[numberOfStrings];
IntPtr rootPointer = Marshal.AllocCoTaskMem(IntPtr.Size * numberOfStrings);
for (int index = 0; index < arr.Length; index++)
{
var bytes = GetUtf8Bytes(arr[index]);
IntPtr unmanagedPointer = Marshal.AllocHGlobal(bytes.Length);
Marshal.Copy(bytes, 0, unmanagedPointer, bytes.Length);
byteArrayPointers[index] = unmanagedPointer;
}
Marshal.Copy(byteArrayPointers, 0, rootPointer, numberOfStrings);
return rootPointer;
}
public static string[] NativeUtf8StrArray2ManagedStrArray(IntPtr pUnmanagedStringArray, int StringCount)
{
IntPtr[] pIntPtrArray = new IntPtr[StringCount];
string[] ManagedStringArray = new string[StringCount];
Marshal.Copy(pUnmanagedStringArray, pIntPtrArray, 0, StringCount);
for (int i = 0; i < StringCount; i++)
ManagedStringArray[i] = StringFromNativeUtf8(pIntPtrArray[i]);
return ManagedStringArray;
}
public static string StringFromNativeUtf8(IntPtr nativeUtf8)
{
int len = 0;
while (Marshal.ReadByte(nativeUtf8, len) != 0) ++len;
byte[] buffer = new byte[len];
Marshal.Copy(nativeUtf8, buffer, 0, buffer.Length);
return Encoding.UTF8.GetString(buffer);
}
public static byte[] GetUtf8Bytes(string s) => Encoding.UTF8.GetBytes(s + "\0");
}
public enum EndFileEventMode
{
Eof,
Stop,
Quit,
Error,
Redirect,
Unknown
}
}

View File

@@ -1,210 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{1751F378-8EDF-4B62-BE6D-304C7C287089}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>mpvnet</RootNamespace>
<AssemblyName>mpvnet</AssemblyName>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
<GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
<LangVersion>7.3</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup />
<PropertyGroup />
<PropertyGroup>
<StartupObject>mpvnet.Program</StartupObject>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
<OutputPath>bin\x86\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x86</PlatformTarget>
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup />
<PropertyGroup />
<PropertyGroup />
<PropertyGroup />
<PropertyGroup />
<PropertyGroup />
<PropertyGroup />
<PropertyGroup />
<PropertyGroup>
<ApplicationIcon>mpv.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup>
<ApplicationManifest>app.manifest</ApplicationManifest>
</PropertyGroup>
<ItemGroup>
<Reference Include="IKVM.Reflection, Version=7.2.4630.5, Culture=neutral, PublicKeyToken=13235d27fcbfff58, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>IronPython\IKVM.Reflection.dll</HintPath>
</Reference>
<Reference Include="IronPython, Version=2.7.9.0, Culture=neutral, PublicKeyToken=7f709c5b713576e1, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>IronPython\IronPython.dll</HintPath>
</Reference>
<Reference Include="IronPython.Modules, Version=2.7.9.0, Culture=neutral, PublicKeyToken=7f709c5b713576e1, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>IronPython\IronPython.Modules.dll</HintPath>
</Reference>
<Reference Include="IronPythonAddon">
<HintPath>IronPython\IronPythonAddon.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Dynamic, Version=1.2.2.0, Culture=neutral, PublicKeyToken=7f709c5b713576e1, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>IronPython\Microsoft.Dynamic.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Scripting, Version=1.2.2.0, Culture=neutral, PublicKeyToken=7f709c5b713576e1, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>IronPython\Microsoft.Scripting.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualBasic" />
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.PowerShell.5.ReferenceAssemblies.1.1.0\lib\net4\System.Management.Automation.dll</HintPath>
</Reference>
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Addon.cs" />
<Compile Include="MediaInfo.cs" />
<Compile Include="Menu.cs">
<SubType>Component</SubType>
</Compile>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="PowerShellScript.cs" />
<Compile Include="PythonScript.cs" />
<Compile Include="libmpv.cs" />
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Misc.cs" />
<Compile Include="mp.cs" />
<Compile Include="Command.cs" />
<Compile Include="Native.cs" />
<Compile Include="NativeHelp.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="trash.cs" />
<Compile Include="UI.cs" />
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<SubType>Designer</SubType>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<None Include="..\README.md">
<Link>README.md</Link>
</None>
<None Include="app.manifest" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Content Include="Resources\mpv.conf.txt" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Content Include="mpv.ico" />
<Content Include="screenshot.jpg" />
<Content Include="Resources\input.conf.txt" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\VBNET\VBNET.vbproj">
<Project>{a1d11294-05bf-4d77-b008-aecf1aa93c9f}</Project>
<Name>VBNET</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.PowerShell.5.ReferenceAssemblies" version="1.1.0" targetFramework="net472" />
</packages>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 497 KiB

View File

@@ -1,22 +0,0 @@
//public static string GetAssociatedApplication(string ext)
//{
// uint returnValue = 0U;
// // ASSOCF_VERIFY, ASSOCSTR_EXECUTABLE
// if (1 == Native.AssocQueryString(0x40, 2, ext, null, null, ref returnValue))
// {
// if (returnValue > 0)
// {
// StringBuilder sb = new StringBuilder(Convert.ToInt32(returnValue));
// // ASSOCF_VERIFY, ASSOCSTR_EXECUTABLE
// if (0 == Native.AssocQueryString(0x40, 2, ext, null, sb, ref returnValue))
// {
// var ret = sb.ToString();
// if (File.Exists(ret)) return ret;
// }
// }
// }
// return "";
//}
//[DllImport("Shlwapi.dll", SetLastError = true, CharSet = CharSet.Unicode)]
//public static extern uint AssocQueryString(uint flags, uint str, string pszAssoc, string pszExtra, StringBuilder pszOut, ref uint pcchOut);

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
</startup>
</configuration>

View File

@@ -1,30 +0,0 @@
<Application x:Class="DynamicGUI.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:DynamicGUI"
StartupUri="MainWindow.xaml">
<Application.Resources>
<Style TargetType="TextBox">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TextBox}">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Opacity" TargetName="border" Value="0.56"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="BorderBrush" TargetName="border" Value="#FF7EB4EA"/>
</Trigger>
<Trigger Property="IsFocused" Value="true">
<Setter Property="BorderBrush" TargetName="border" Value="{x:Static SystemParameters.WindowGlassBrush}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Application.Resources>
</Application>

View File

@@ -1,8 +0,0 @@
using System.Windows;
namespace DynamicGUI
{
public partial class App : Application
{
}
}

View File

@@ -1,136 +0,0 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Windows.Documents;
using System.Windows.Navigation;
using Tommy;
namespace DynamicGUI
{
public class Settings
{
public static List<SettingBase> LoadSettings(string filepath)
{
TomlTable table;
using (StreamReader reader = new StreamReader(File.OpenRead(filepath)))
table = TOML.Parse(reader);
List<SettingBase> settingsList = new List<SettingBase>();
foreach (TomlTable setting in table["settings"])
{
SettingBase baseSetting = null;
if (setting.HasKey("options"))
{
OptionSetting optionSetting = new OptionSetting();
baseSetting = optionSetting;
optionSetting.Default = setting["default"];
optionSetting.Value = optionSetting.Default;
foreach (TomlTable option in setting["options"])
{
var opt = new OptionSettingOption();
opt.Name = option["name"];
if (option.HasKey("help"))
opt.Help = option["help"];
if (option.HasKey("text"))
opt.Text = option["text"];
else if (opt.Name == optionSetting.Default)
opt.Text = opt.Name + " (Default)";
opt.OptionSetting = optionSetting;
optionSetting.Options.Add(opt);
}
}
else if (setting["default"].IsString)
{
StringSetting stringSetting = new StringSetting();
baseSetting = stringSetting;
stringSetting.Default = setting["default"];
if (setting.HasKey("folder")) stringSetting.IsFolder = true;
}
baseSetting.Name = setting["name"];
baseSetting.Filter = setting["filter"];
if (setting.HasKey("help")) baseSetting.Help = setting["help"];
if (setting.HasKey("helpurl")) baseSetting.HelpURL = setting["helpurl"];
if (setting.HasKey("alias")) baseSetting.Alias = setting["alias"];
if (setting.HasKey("width")) baseSetting.Width = setting["width"];
settingsList.Add(baseSetting);
}
return settingsList;
}
}
public abstract class SettingBase
{
public string Name { get; set; }
public string Alias { get; set; }
public string Help { get; set; }
public string HelpURL { get; set; }
public string Filter { get; set; }
public int Width { get; set; }
}
public class StringSetting : SettingBase
{
public string Default { get; set; }
public string Value { get; set; }
public bool IsFolder { get; set; }
}
public class OptionSetting : SettingBase
{
public string Default { get; set; }
public string Value { get; set; }
public List<OptionSettingOption> Options = new List<OptionSettingOption>();
}
public class OptionSettingOption
{
public string Name { get; set; }
public string Help { get; set; }
public OptionSetting OptionSetting { get; set; }
private string _Text;
public string Text
{
get => string.IsNullOrEmpty(_Text) ? Name : _Text;
set => _Text = value;
}
public bool IsChecked
{
get => OptionSetting.Value == Name ;
set {
if (value)
OptionSetting.Value = Name;
}
}
}
interface ISettingControl
{
bool Contains(string searchString);
SettingBase SettingBase { get; }
}
public class HyperlinkEx : Hyperlink
{
private void HyperLinkEx_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
Process.Start(e.Uri.AbsoluteUri);
}
public void SetURL(string url)
{
if (string.IsNullOrEmpty(url)) return;
NavigateUri = new Uri(url);
RequestNavigate += HyperLinkEx_RequestNavigate;
Inlines.Clear();
Inlines.Add(url);
}
}
}

View File

@@ -1,28 +0,0 @@
<UserControl x:Name="OptionSettingControl1" x:Class="DynamicGUI.OptionSettingControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DynamicGUI"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid Margin="20,0">
<StackPanel>
<TextBox x:Name="TitleTextBox" FontSize="24" Margin="0,10" BorderThickness="0" IsReadOnly="True" Foreground="{x:Static SystemParameters.WindowGlassBrush}"></TextBox>
<ItemsControl x:Name="ItemsControl">
<ItemsControl.ItemTemplate>
<DataTemplate>
<WrapPanel Orientation="Vertical">
<RadioButton x:Name="RadioButton" VerticalContentAlignment="Center" IsChecked="{Binding IsChecked}" GroupName="{Binding OptionSetting.Name}" Content="{Binding Text}" FontSize="16" FontWeight="Normal" VerticalAlignment="Top"></RadioButton>
<TextBox x:Name="ItemHelpTextBox" TextWrapping="WrapWithOverflow" Text="{Binding Help}" Margin="10,0,0,0" BorderThickness="0" IsReadOnly="True" Padding="7,0,0,0" MinHeight="0"></TextBox>
</WrapPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<TextBox x:Name="HelpTextBox" TextWrapping="WrapWithOverflow" BorderThickness="0" IsReadOnly="True" Margin="0,10,0,0"></TextBox>
<TextBlock x:Name="LinkTextBlock" Margin="0,10">
<local:HyperlinkEx x:Name="Link"></local:HyperlinkEx>
</TextBlock>
</StackPanel>
</Grid>
</UserControl>

View File

@@ -1,41 +0,0 @@
using System.Windows;
using System.Windows.Controls;
namespace DynamicGUI
{
public partial class OptionSettingControl : UserControl, ISettingControl
{
private OptionSetting OptionSetting;
public OptionSettingControl(OptionSetting optionSetting)
{
OptionSetting = optionSetting;
InitializeComponent();
TitleTextBox.Text = optionSetting.Name;
HelpTextBox.Text = optionSetting.Help;
ItemsControl.ItemsSource = optionSetting.Options;
Link.SetURL(optionSetting.HelpURL);
if (string.IsNullOrEmpty(optionSetting.HelpURL))
LinkTextBlock.Visibility = Visibility.Collapsed;
}
private string _SearchableText;
public string SearchableText {
get {
if (_SearchableText is null)
{
_SearchableText = TitleTextBox.Text + HelpTextBox.Text;
foreach (var i in OptionSetting.Options)
_SearchableText += i.Text + i.Help + i.Name;
_SearchableText = _SearchableText.ToLower();
}
return _SearchableText;
}
}
public SettingBase SettingBase => OptionSetting;
public bool Contains(string searchString) => SearchableText.Contains(searchString.ToLower());
}
}

View File

@@ -1,27 +0,0 @@
<UserControl x:Name="StringSettingControl1" x:Class="DynamicGUI.StringSettingControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:DynamicGUI"
mc:Ignorable="d"
d:DesignHeight="450"
d:DesignWidth="800" >
<Grid Margin="20,0">
<StackPanel>
<TextBox x:Name="TitleTextBox" FontSize="24" Margin="0,10" BorderThickness="0" IsReadOnly="True" Foreground="{x:Static SystemParameters.WindowGlassBrush}"></TextBox>
<Grid Margin="0,0,0,10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBox x:Name="ValueTextBox" Text="{Binding Path=Text, ElementName=StringSettingControl1, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Width="150" HorizontalAlignment="Left" Height="20"/>
<Button x:Name="Button" Height="20" Grid.Column="1" Visibility="{Binding Path=Text, ElementName=StringSettingControl1}" Margin="5,0,0,0" Width="20" Click="Button_Click">...</Button>
</Grid>
<TextBox x:Name="HelpTextBox" TextWrapping="WrapWithOverflow" Margin="0,0,0,10" BorderThickness="0" IsReadOnly="True"></TextBox>
<TextBlock x:Name="LinkTextBlock" Margin="0,10">
<local:HyperlinkEx x:Name="Link"></local:HyperlinkEx>
</TextBlock>
</StackPanel>
</Grid>
</UserControl>

View File

@@ -1,58 +0,0 @@
using System.Windows;
using System.Windows.Controls;
namespace DynamicGUI
{
public partial class StringSettingControl : UserControl, ISettingControl
{
private StringSetting StringSetting;
public StringSettingControl(StringSetting stringSetting)
{
StringSetting = stringSetting;
InitializeComponent();
TitleTextBox.Text = stringSetting.Name;
HelpTextBox.Text = stringSetting.Help;
ValueTextBox.Text = stringSetting.Value;
if (stringSetting.Width > 0)
ValueTextBox.Width = stringSetting.Width;
if (!StringSetting.IsFolder)
Button.Visibility = Visibility.Hidden;
Link.SetURL(StringSetting.HelpURL);
if (string.IsNullOrEmpty(stringSetting.HelpURL))
LinkTextBlock.Visibility = Visibility.Collapsed;
}
private string _SearchableText;
public string SearchableText {
get {
if (_SearchableText is null)
_SearchableText = (TitleTextBox.Text + HelpTextBox.Text +ValueTextBox.Text).ToLower();
return _SearchableText;
}
}
public bool Contains(string searchString) => SearchableText.Contains(searchString.ToLower());
public SettingBase SettingBase => StringSetting;
public string Text
{
get => StringSetting.Value;
set => StringSetting.Value = value;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
using (var d = new System.Windows.Forms.FolderBrowserDialog())
{
d.Description = "Choose a folder.";
d.SelectedPath = ValueTextBox.Text;
if (d.ShowDialog() == System.Windows.Forms.DialogResult.OK)
ValueTextBox.Text = d.SelectedPath;
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,10 +0,0 @@
MIT License
Copyright (c) 2017 stax76
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and ssociated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -1,37 +0,0 @@
<Window xmlns:Controls="clr-namespace:Controls" x:Name="MainWindow1" x:Class="mpvConfEdit.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Height="600" Width="800" Loaded="MainWindow1_Loaded" WindowStartupLocation="CenterScreen">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="4*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="10*" />
<ColumnDefinition Width="60*" />
</Grid.ColumnDefinitions>
<Controls:SearchTextBoxUserControl x:Name="SearchControl" Width="300" Margin="0,20,0,10" Grid.ColumnSpan="2" />
<ScrollViewer x:Name="MainScrollViewer" VerticalScrollBarVisibility="Auto" Grid.Row="1" Grid.Column="1" Margin="0,0,0,10">
<StackPanel x:Name="MainStackPanel"></StackPanel>
</ScrollViewer>
<StackPanel Margin="20,0,0,0" Grid.Row="1">
<ListBox x:Name="FilterListBox" ItemsSource="{Binding FilterStrings}" BorderThickness="0" SelectionChanged="ListBox_SelectionChanged" Foreground="{x:Static SystemParameters.WindowGlassBrush}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding}" FontSize="16" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<TextBlock x:Name="OpenSettingsTextBlock" Margin="0,30,0,0" Cursor="Hand" TextWrapping="WrapWithOverflow" Foreground="{x:Static SystemParameters.WindowGlassBrush}" MouseUp="OpenSettingsTextBlock_MouseUp">Open settings folder</TextBlock>
<TextBlock x:Name="ShowManualTextBlock" Margin="0,15,0,0" Cursor="Hand" TextWrapping="WrapWithOverflow" Foreground="{x:Static SystemParameters.WindowGlassBrush}" MouseUp="ShowManualTextBlock_MouseUp">Show mpv manual</TextBlock>
<TextBlock x:Name="SupportTextBlock" Margin="0,15,0,0" Cursor="Hand" TextWrapping="WrapWithOverflow" Foreground="{x:Static SystemParameters.WindowGlassBrush}" MouseUp="SupportTextBlock_MouseUp">Show support forum</TextBlock>
<TextBlock x:Name="ApplyTextBlock" Margin="0,15,0,0" Cursor="Hand" TextWrapping="WrapWithOverflow" Foreground="{x:Static SystemParameters.WindowGlassBrush}" MouseUp="ApplyTextBlock_MouseUp">Write config to mpv.conf</TextBlock>
</StackPanel>
</Grid>
</Window>

View File

@@ -1,215 +0,0 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using DynamicGUI;
namespace mpvConfEdit
{
public partial class MainWindow : Window
{
public string mpvConfPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\mpv\\mpv.conf";
private List<SettingBase> DynamicSettings = Settings.LoadSettings(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location) + "\\mpvConfEdit.toml");
public MainWindow()
{
InitializeComponent();
DataContext = this;
Title = (Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), true)[0] as AssemblyProductAttribute).Product + " " + Assembly.GetExecutingAssembly().GetName().Version.ToString();
SearchControl.SearchTextBox.TextChanged += SearchTextBox_TextChanged;
foreach (var setting in DynamicSettings)
{
if (!FilterStrings.Contains(setting.Filter))
FilterStrings.Add(setting.Filter);
foreach (var pair in mpvConf)
{
if (setting.Name == pair.Key || setting.Alias == pair.Key)
switch (setting)
{
case StringSetting s:
s.Value = pair.Value;
continue;
case OptionSetting s:
s.Value = pair.Value;
break;
}
}
switch (setting)
{
case StringSetting s:
MainStackPanel.Children.Add(new StringSettingControl(s));
break;
case OptionSetting s:
MainStackPanel.Children.Add(new OptionSettingControl(s));
break;
}
}
}
private Dictionary<string, string> _mpvConf;
public Dictionary<string, string> mpvConf {
get {
if (_mpvConf == null)
{
_mpvConf = new Dictionary<string, string>();
if (File.Exists(mpvConfPath))
foreach (var i in File.ReadAllLines(mpvConfPath))
if (i.Contains("=") && !i.Trim().StartsWith("#"))
{
int pos = i.IndexOf("=");
_mpvConf[i.Substring(0, pos).Trim()] = i.Substring(pos + 1).Trim();
}
}
return _mpvConf;
}
}
public ObservableCollection<string> FilterStrings { get; } = new ObservableCollection<string>();
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
WriteToDisk();
}
void WriteToDisk()
{
foreach (var mpvSetting in DynamicSettings)
{
switch (mpvSetting)
{
case StringSetting s:
if ((s.Value ?? "") != s.Default || mpvConf.ContainsKey(s.Name) || mpvConf.ContainsKey(s.Alias ?? ""))
mpvConf[s.Name] = s.Value;
break;
case OptionSetting s:
if ((s.Value ?? "") != s.Default || mpvConf.ContainsKey(s.Name) || mpvConf.ContainsKey(s.Alias ?? ""))
mpvConf[s.Name] = s.Value;
break;
}
}
if (!File.Exists(mpvConfPath))
File.WriteAllText(mpvConfPath, "");
List<string> lines = File.ReadAllLines(mpvConfPath).ToList();
foreach (var mpvSetting in DynamicSettings)
{
foreach (var line in lines.ToArray())
{
string test = line.Replace("#", "").Replace(" ", "");
if (test.StartsWith(mpvSetting.Alias + "="))
{
lines.Remove(line);
foreach (var pair in mpvConf.ToArray())
if (test.StartsWith(pair.Key + "="))
mpvConf.Remove(pair.Key);
}
}
}
foreach (var pair in mpvConf)
{
bool changed = false;
for (int i = 0; i < lines.Count; i++)
{
if (lines[i].Contains("=") &&
lines[i].Substring(0, lines[i].IndexOf("=")).Trim("# ".ToCharArray()) == pair.Key)
{
lines[i] = pair.Key + " = " + pair.Value;
changed = true;
}
}
if (!changed)
lines.Add(pair.Key + " = " + pair.Value);
}
foreach (var mpvSetting in DynamicSettings)
{
foreach (var line in lines.ToArray())
{
string test = line.Replace("#", "").Replace(" ", "");
if (test.StartsWith(mpvSetting.Name + "=") && !mpvConf.ContainsKey(mpvSetting.Name))
lines.Remove(line);
}
}
File.WriteAllText(mpvConfPath, String.Join(Environment.NewLine, lines));
MessageBox.Show("Changes will be available on next startup of mpv(.net).",
Title, MessageBoxButton.OK, MessageBoxImage.Information);
}
private void SearchTextBox_TextChanged(object sender, TextChangedEventArgs e)
{
string activeFilter = "";
foreach (var i in FilterStrings)
if (SearchControl.Text == i + ":")
activeFilter = i;
if (activeFilter == "")
{
foreach (UIElement i in MainStackPanel.Children)
if ((i as ISettingControl).Contains(SearchControl.Text))
i.Visibility = Visibility.Visible;
else
i.Visibility = Visibility.Collapsed;
FilterListBox.SelectedItem = null;
}
else
foreach (UIElement i in MainStackPanel.Children)
if ((i as ISettingControl).SettingBase.Filter == activeFilter)
i.Visibility = Visibility.Visible;
else
i.Visibility = Visibility.Collapsed;
MainScrollViewer.ScrollToTop();
}
private void MainWindow1_Loaded(object sender, RoutedEventArgs e)
{
Keyboard.Focus(SearchControl.SearchTextBox);
}
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (e.AddedItems.Count > 0)
SearchControl.Text = e.AddedItems[0].ToString() + ":";
}
private void OpenSettingsTextBlock_MouseUp(object sender, MouseButtonEventArgs e)
{
Process.Start(Path.GetDirectoryName(mpvConfPath));
}
private void ShowManualTextBlock_MouseUp(object sender, MouseButtonEventArgs e)
{
Process.Start("https://mpv.io/manual/master/");
}
private void SupportTextBlock_MouseUp(object sender, MouseButtonEventArgs e)
{
Process.Start("https://github.com/stax76/mpv.net#Support");
}
private void ApplyTextBlock_MouseUp(object sender, MouseButtonEventArgs e)
{
WriteToDisk();
}
}
}

View File

@@ -1,55 +0,0 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("mpv(.net) conf edit")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("mpv(.net) conf edit")]
[assembly: AssemblyCopyright("Copyright © 2017 stax76")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
//In order to begin building localizable applications, set
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
//inside a <PropertyGroup>. For example, if you are using US english
//in your source files, set the <UICulture> to en-US. Then uncomment
//the NeutralResourceLanguage attribute below. Update the "en-US" in
//the line below to match the UICulture setting in the project file.
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.3.0.0")]
[assembly: AssemblyFileVersion("1.3.0.0")]

View File

@@ -1,63 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mpvConfEdit.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("mpvConfEdit.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
}
}

View File

@@ -1,117 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -1,26 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace mpvConfEdit.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

Some files were not shown because too many files have changed in this diff Show More