changelog and update check

This commit is contained in:
Frank Skare
2019-11-10 23:22:20 +01:00
parent eddb95e791
commit a5f4d848d4
16 changed files with 283 additions and 166 deletions

View File

@@ -1,5 +1,8 @@
- new: install via Scoop and Chocolatey added to readme/website (Restia666Ashdoll)
- fix: often the OSC was shown when fullscreen was entered - fix: often the OSC was shown when fullscreen was entered
or on app startup, this is now suppressed
### 5.4.3.0 ### 5.4.3.0

View File

@@ -29,6 +29,7 @@ namespace mpvnet
public static bool RememberVolume { get; set; } = true; public static bool RememberVolume { get; set; } = true;
public static bool AutoLoadFolder { get; set; } = true; public static bool AutoLoadFolder { get; set; } = true;
public static bool Queue { get; set; } public static bool Queue { get; set; }
public static bool UpdateCheck { get; set; }
public static int StartThreshold { get; set; } = 1500; public static int StartThreshold { get; set; } = 1500;
public static int RecentCount { get; set; } = 15; public static int RecentCount { get; set; } = 15;
@@ -83,8 +84,8 @@ namespace mpvnet
{ {
if (RememberVolume) if (RememberVolume)
{ {
mp.set_property_int("volume", RegHelp.GetInt(App.RegPath, "Volume", 70)); mp.set_property_int("volume", RegistryHelp.GetInt(App.RegPath, "Volume", 70));
mp.set_property_string("mute", RegHelp.GetString(App.RegPath, "Mute", "no")); mp.set_property_string("mute", RegistryHelp.GetString(App.RegPath, "Mute", "no"));
} }
} }
@@ -92,8 +93,8 @@ namespace mpvnet
{ {
if (RememberVolume) if (RememberVolume)
{ {
RegHelp.SetObject(App.RegPath, "Volume", mp.get_property_int("volume")); RegistryHelp.SetValue(App.RegPath, "Volume", mp.get_property_int("volume"));
RegHelp.SetObject(App.RegPath, "Mute", mp.get_property_string("mute")); RegistryHelp.SetValue(App.RegPath, "Mute", mp.get_property_string("mute"));
} }
} }
@@ -120,16 +121,17 @@ namespace mpvnet
{ {
case "remember-position": RememberPosition = value == "yes"; return true; case "remember-position": RememberPosition = value == "yes"; return true;
case "maximized": Maximized = value == "yes"; return true; case "maximized": Maximized = value == "yes"; return true;
case "debug-mode": DebugMode = value == "yes"; return true;
case "remember-volume": RememberVolume = value == "yes"; return true;
case "queue": Queue = value == "yes"; return true;
case "auto-load-folder": AutoLoadFolder = value == "yes"; return true;
case "update-check": UpdateCheck = value == "yes"; return true;
case "start-size": RememberHeight = value == "previous"; return true; case "start-size": RememberHeight = value == "previous"; return true;
case "process-instance": ProcessInstance = value; return true; case "process-instance": ProcessInstance = value; return true;
case "dark-mode": DarkMode = value; return true; case "dark-mode": DarkMode = value; return true;
case "debug-mode": DebugMode = value == "yes"; return true;
case "remember-volume": RememberVolume = value == "yes"; return true;
case "start-threshold": StartThreshold = value.Int(); return true; case "start-threshold": StartThreshold = value.Int(); return true;
case "minimum-aspect-ratio": MinimumAspectRatio = value.Float(); return true;
case "auto-load-folder": AutoLoadFolder = value == "yes"; return true;
case "recent-count": RecentCount = value.Int(); return true; case "recent-count": RecentCount = value.Int(); return true;
case "queue": Queue = value == "yes"; return true; case "minimum-aspect-ratio": MinimumAspectRatio = value.Float(); return true;
case "dark-theme": DarkTheme = value.Trim('\'', '"'); return true; case "dark-theme": DarkTheme = value.Trim('\'', '"'); return true;
case "light-theme": LightTheme = value.Trim('\'', '"'); return true; case "light-theme": LightTheme = value.Trim('\'', '"'); return true;
} }

View File

@@ -1,4 +1,5 @@
using System; 
using System;
using System.Diagnostics; using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
@@ -17,6 +18,7 @@ namespace mpvnet
switch (id) switch (id)
{ {
case "open-files": OpenFiles(args); break; case "open-files": OpenFiles(args); break;
case "update-check": UpdateCheck.CheckOnline(true); break;
case "open-url": OpenURL(); break; case "open-url": OpenURL(); break;
case "open-optical-media": Open_DVD_Or_BD_Folder(); break; case "open-optical-media": Open_DVD_Or_BD_Folder(); break;
case "manage-file-associations": // deprecated 2019 case "manage-file-associations": // deprecated 2019
@@ -201,9 +203,9 @@ namespace mpvnet
public static void ExecuteMpvCommand() // deprecated 2019 public static void ExecuteMpvCommand() // deprecated 2019
{ {
InvokeOnMainThread(new Action(() => { InvokeOnMainThread(new Action(() => {
string command = VB.Interaction.InputBox("Enter a mpv command to be executed.", "Execute Command", RegHelp.GetString(App.RegPath, "RecentExecutedCommand")); string command = VB.Interaction.InputBox("Enter a mpv command to be executed.", "Execute Command", RegistryHelp.GetString(App.RegPath, "RecentExecutedCommand"));
if (string.IsNullOrEmpty(command)) return; if (string.IsNullOrEmpty(command)) return;
RegHelp.SetObject(App.RegPath, "RecentExecutedCommand", command); RegistryHelp.SetValue(App.RegPath, "RecentExecutedCommand", command);
mp.command(command, false); mp.command(command, false);
})); }));
} }

View File

@@ -66,108 +66,52 @@ namespace mpvnet
{ {
Types = types; Types = types;
RegHelp.SetObject(@"HKCU\Software\Microsoft\Windows\CurrentVersion\App Paths\" + ExeFilename, null, ExePath); RegistryHelp.SetValue(@"HKCU\Software\Microsoft\Windows\CurrentVersion\App Paths\" + ExeFilename, null, ExePath);
RegHelp.SetObject(@"HKCR\Applications\" + ExeFilename, "FriendlyAppName", "mpv.net media player"); RegistryHelp.SetValue(@"HKCR\Applications\" + ExeFilename, "FriendlyAppName", "mpv.net media player");
RegHelp.SetObject($@"HKCR\Applications\{ExeFilename}\shell\open\command", null, $"\"{ExePath}\" \"%1\""); RegistryHelp.SetValue($@"HKCR\Applications\{ExeFilename}\shell\open\command", null, $"\"{ExePath}\" \"%1\"");
RegHelp.SetObject(@"HKLM\SOFTWARE\Clients\Media\mpv.net\Capabilities", "ApplicationDescription", "mpv.net media player"); RegistryHelp.SetValue(@"HKLM\SOFTWARE\Clients\Media\mpv.net\Capabilities", "ApplicationDescription", "mpv.net media player");
RegHelp.SetObject(@"HKLM\SOFTWARE\Clients\Media\mpv.net\Capabilities", "ApplicationName", "mpv.net"); RegistryHelp.SetValue(@"HKLM\SOFTWARE\Clients\Media\mpv.net\Capabilities", "ApplicationName", "mpv.net");
RegHelp.SetObject(@"HKCR\SystemFileAssociations\video\OpenWithList\" + ExeFilename, null, ""); RegistryHelp.SetValue(@"HKCR\SystemFileAssociations\video\OpenWithList\" + ExeFilename, null, "");
RegHelp.SetObject(@"HKCR\SystemFileAssociations\audio\OpenWithList\" + ExeFilename, null, ""); RegistryHelp.SetValue(@"HKCR\SystemFileAssociations\audio\OpenWithList\" + ExeFilename, null, "");
RegHelp.SetObject(@"HKLM\SOFTWARE\RegisteredApplications", "mpv.net", @"SOFTWARE\Clients\Media\mpv.net\Capabilities"); RegistryHelp.SetValue(@"HKLM\SOFTWARE\RegisteredApplications", "mpv.net", @"SOFTWARE\Clients\Media\mpv.net\Capabilities");
foreach (string ext in Types) foreach (string ext in Types)
{ {
RegHelp.SetObject($@"HKCR\Applications\{ExeFilename}\SupportedTypes", "." + ext, ""); RegistryHelp.SetValue($@"HKCR\Applications\{ExeFilename}\SupportedTypes", "." + ext, "");
RegHelp.SetObject($@"HKCR\" + "." + ext, null, ExeFilenameNoExt + "." + ext); RegistryHelp.SetValue($@"HKCR\" + "." + ext, null, ExeFilenameNoExt + "." + ext);
RegHelp.SetObject($@"HKCR\" + "." + ext + @"\OpenWithProgIDs", ExeFilenameNoExt + "." + ext, ""); RegistryHelp.SetValue($@"HKCR\" + "." + ext + @"\OpenWithProgIDs", ExeFilenameNoExt + "." + ext, "");
if (App.VideoTypes.Contains(ext)) if (App.VideoTypes.Contains(ext))
RegHelp.SetObject(@"HKCR\" + "." + ext, "PerceivedType", "video"); RegistryHelp.SetValue(@"HKCR\" + "." + ext, "PerceivedType", "video");
if (App.AudioTypes.Contains(ext)) if (App.AudioTypes.Contains(ext))
RegHelp.SetObject(@"HKCR\" + "." + ext, "PerceivedType", "audio"); RegistryHelp.SetValue(@"HKCR\" + "." + ext, "PerceivedType", "audio");
if (App.ImageTypes.Contains(ext)) if (App.ImageTypes.Contains(ext))
RegHelp.SetObject(@"HKCR\" + "." + ext, "PerceivedType", "image"); RegistryHelp.SetValue(@"HKCR\" + "." + ext, "PerceivedType", "image");
RegHelp.SetObject($@"HKCR\" + ExeFilenameNoExt + "." + ext + @"\shell\open", null, "Play with " + Application.ProductName); RegistryHelp.SetValue($@"HKCR\" + ExeFilenameNoExt + "." + ext + @"\shell\open", null, "Play with " + Application.ProductName);
RegHelp.SetObject($@"HKCR\" + ExeFilenameNoExt + "." + ext + @"\shell\open\command", null, $"\"{ExePath}\" \"%1\""); RegistryHelp.SetValue($@"HKCR\" + ExeFilenameNoExt + "." + ext + @"\shell\open\command", null, $"\"{ExePath}\" \"%1\"");
RegHelp.SetObject(@"HKLM\SOFTWARE\Clients\Media\mpv.net\Capabilities\FileAssociations", "." + ext, ExeFilenameNoExt + "." + ext); RegistryHelp.SetValue(@"HKLM\SOFTWARE\Clients\Media\mpv.net\Capabilities\FileAssociations", "." + ext, ExeFilenameNoExt + "." + ext);
} }
} }
public static void Unregister() public static void Unregister()
{ {
RegHelp.RemoveKey($@"HKCU\Software\Microsoft\Windows\CurrentVersion\App Paths\" + ExeFilename); RegistryHelp.RemoveKey($@"HKCU\Software\Microsoft\Windows\CurrentVersion\App Paths\" + ExeFilename);
RegHelp.RemoveKey($@"HKCR\Applications\" + ExeFilename); RegistryHelp.RemoveKey($@"HKCR\Applications\" + ExeFilename);
RegHelp.RemoveKey($@"HKLM\SOFTWARE\Clients\Media\mpv.net"); RegistryHelp.RemoveKey($@"HKLM\SOFTWARE\Clients\Media\mpv.net");
RegHelp.RemoveKey($@"HKCR\SystemFileAssociations\video\OpenWithList\" + ExeFilename); RegistryHelp.RemoveKey($@"HKCR\SystemFileAssociations\video\OpenWithList\" + ExeFilename);
RegHelp.RemoveKey($@"HKCR\SystemFileAssociations\audio\OpenWithList\" + ExeFilename); RegistryHelp.RemoveKey($@"HKCR\SystemFileAssociations\audio\OpenWithList\" + ExeFilename);
RegHelp.RemoveValue(@"HKLM\SOFTWARE\RegisteredApplications", "mpv.net"); RegistryHelp.RemoveValue(@"HKLM\SOFTWARE\RegisteredApplications", "mpv.net");
foreach (string id in Registry.ClassesRoot.GetSubKeyNames()) foreach (string id in Registry.ClassesRoot.GetSubKeyNames())
{ {
if (id.StartsWith(ExeFilenameNoExt + ".")) if (id.StartsWith(ExeFilenameNoExt + "."))
Registry.ClassesRoot.DeleteSubKeyTree(id); Registry.ClassesRoot.DeleteSubKeyTree(id);
RegHelp.RemoveValue($@"HKCR\Software\Classes\{id}\OpenWithProgIDs", ExeFilenameNoExt + id); RegistryHelp.RemoveValue($@"HKCR\Software\Classes\{id}\OpenWithProgIDs", ExeFilenameNoExt + id);
RegHelp.RemoveValue($@"HKLM\Software\Classes\{id}\OpenWithProgIDs", ExeFilenameNoExt + id); RegistryHelp.RemoveValue($@"HKLM\Software\Classes\{id}\OpenWithProgIDs", ExeFilenameNoExt + id);
}
}
}
public class RegHelp
{
public static void SetObject(string path, string name, object value)
{
using (RegistryKey regKey = GetRootKey(path).CreateSubKey(path.Substring(5), RegistryKeyPermissionCheck.ReadWriteSubTree))
regKey.SetValue(name, value);
}
public static string GetString(string path, string name, string defaultValue = "")
{
object value = GetObject(path, name, defaultValue);
return !(value is string) ? defaultValue : value.ToString();
}
public static int GetInt(string path, string name, int defaultValue = 0)
{
object value = GetObject(path, name, defaultValue);
return !(value is int) ? defaultValue : (int)value;
}
public static object GetObject(string path, string name, object defaultValue = null)
{
using (RegistryKey regKey = GetRootKey(path).OpenSubKey(path.Substring(5)))
return regKey == null ? null : regKey.GetValue(name, defaultValue);
}
public static void RemoveKey(string path)
{
try
{
GetRootKey(path).DeleteSubKeyTree(path.Substring(5), false);
} catch { }
}
public static void RemoveValue(string path, string name)
{
try
{
using (RegistryKey regKey = GetRootKey(path).OpenSubKey(path.Substring(5), true))
if (regKey != null)
regKey.DeleteValue(name, false);
} catch {}
}
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();
} }
} }
} }
@@ -316,7 +260,7 @@ namespace mpvnet
public class Folder public class Folder
{ {
public static string Startup { get; } = Application.StartupPath + "\\"; public static string Startup { get; } = Application.StartupPath + @"\";
} }
public class PathHelp public class PathHelp

View File

@@ -1,4 +1,5 @@
using System; 
using System;
using System.Windows.Forms; using System.Windows.Forms;
using System.Linq; using System.Linq;
using System.Collections.Generic; using System.Collections.Generic;

View File

@@ -0,0 +1,70 @@

using System;
using Microsoft.Win32;
using System.Windows.Forms;
public class RegistryHelp
{
public static string ApplicationKey { get; } = @"HKCU\Software\" + Application.ProductName;
public static void SetValue(string path, string name, object value)
{
using (RegistryKey regKey = GetRootKey(path).CreateSubKey(path.Substring(5), RegistryKeyPermissionCheck.ReadWriteSubTree))
regKey.SetValue(name, value);
}
public static string GetString(string path, string name, string defaultValue = "")
{
object value = GetValue(path, name, defaultValue);
return !(value is string) ? defaultValue : value.ToString();
}
public static int GetInt(string path, string name, int defaultValue = 0)
{
object value = GetValue(path, name, defaultValue);
return !(value is int) ? defaultValue : (int)value;
}
public static bool GetBool(string path, string name, bool defaultValue = false)
{
object val = GetValue(path, name, defaultValue);
return val is bool ? (bool)val : defaultValue;
}
public static object GetValue(string path, string name, object defaultValue = null)
{
using (RegistryKey regKey = GetRootKey(path).OpenSubKey(path.Substring(5)))
return regKey == null ? null : regKey.GetValue(name, defaultValue);
}
public static void RemoveKey(string path)
{
try
{
GetRootKey(path).DeleteSubKeyTree(path.Substring(5), false);
}
catch { }
}
public static void RemoveValue(string path, string name)
{
try
{
using (RegistryKey regKey = GetRootKey(path).OpenSubKey(path.Substring(5), true))
if (regKey != null)
regKey.DeleteValue(name, false);
}
catch { }
}
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

@@ -0,0 +1,78 @@

using System;
using System.Diagnostics;
using System.IO;
using System.Net.Http;
using System.Reflection;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace mpvnet
{
class UpdateCheck
{
public static void DailyCheck()
{
if (App.UpdateCheck && RegistryHelp.GetInt(RegistryHelp.ApplicationKey, "LastUpdateCheck")
!= DateTime.Now.DayOfYear)
CheckOnline();
}
public static async void CheckOnline(bool showUpToDateMessage = false)
{
try
{
using (HttpClient client = new HttpClient())
{
RegistryHelp.SetValue(RegistryHelp.ApplicationKey, "LastUpdateCheck", DateTime.Now.DayOfYear);
client.DefaultRequestHeaders.Add("User-Agent", "mpv.net");
var response = await client.GetAsync("https://api.github.com/repos/stax76/mpv.net/releases/latest");
response.EnsureSuccessStatusCode();
string content = await response.Content.ReadAsStringAsync();
Match match = Regex.Match(content, $@"""mpv\.net-portable-x64-([\d\.]+)\.7z""");
Version onlineVersion = Version.Parse(match.Groups[1].Value);
Version currentVersion = Assembly.GetEntryAssembly().GetName().Version;
//if (onlineVersion == currentVersion)
//{
// if (showUpToDateMessage)
// Msg.Show($"{Application.ProductName} is up to date.");
// return;
//}
if (Msg.ShowQuestion($"New version {onlineVersion} is available, update now?") == MsgResult.OK)
{
string arch = IntPtr.Size == 8 ? "64" : "86";
string url = $"https://github.com/stax76/mpv.net/releases/download/{onlineVersion}/mpv.net-portable-x{arch}-{onlineVersion}.7z";
bool asAdmin = false;
try {
File.WriteAllText(Folder.Startup + @"write access test", "");
} catch {
asAdmin = true;
}
//using (Process proc = new Process())
//{
// proc.StartInfo.FileName = "PowerShell";
// proc.StartInfo.Arguments = $"-File \"{Folder.Startup + "Update.ps1"}\" \"{url}\" \"{Application.StartupPath}\"";
// if (asAdmin)
// proc.StartInfo.Verb = "runas";
// proc.Start();
//}
//mp.command("quit");
}
}
}
catch (Exception ex)
{
if (showUpToDateMessage)
Msg.ShowException(ex);
}
}
}
}

View File

@@ -1,4 +1,5 @@
using System; 
using System;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Text; using System.Text;
using System.Collections.Generic; using System.Collections.Generic;

View File

@@ -6,11 +6,11 @@ using System.Runtime.InteropServices;
// set of attributes. Change these attribute values to modify the information // set of attributes. Change these attribute values to modify the information
// associated with an assembly. // associated with an assembly.
[assembly: AssemblyTitle("mpv.net")] [assembly: AssemblyTitle("mpv.net")]
[assembly: AssemblyDescription("media player")] [assembly: AssemblyDescription("mpv based media player")]
[assembly: AssemblyConfiguration("")] [assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Frank Skare (stax76)")] [assembly: AssemblyCompany("Frank Skare (stax76)")]
[assembly: AssemblyProduct("mpv.net")] [assembly: AssemblyProduct("mpv.net")]
[assembly: AssemblyCopyright("Copyright 2017-2019 Frank Skare (stax76)")] [assembly: AssemblyCopyright("Copyright © 2017-2019 Frank Skare (stax76)")]
[assembly: AssemblyTrademark("")] [assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")] [assembly: AssemblyCulture("")]

View File

@@ -502,6 +502,15 @@ file = "mpv"
filter = "Input" filter = "Input"
help = "Number of key presses to generate per second on autorepeat." help = "Number of key presses to generate per second on autorepeat."
[[settings]]
name = "update-check"
file = "mpvnet"
default = "no"
filter = "General"
help = "Daily check for new version. (mpv.net specific setting)"
options = [{ name = "yes" },
{ name = "no" }]
[[settings]] [[settings]]
name = "process-instance" name = "process-instance"
file = "mpvnet" file = "mpvnet"

View File

@@ -14,7 +14,7 @@
# space character to make it easier to do a text search, so if you want to know # 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 '. # 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 commands: https://mpv.io/manual/master/#list-of-input-commands
# mpv input keys: https://github.com/stax76/mpv.net/wiki/mpv-input-keys # mpv input keys: https://github.com/stax76/mpv.net/wiki/mpv-input-keys
@@ -157,20 +157,13 @@
Ctrl+h cycle-values hwdec "auto" "no" #menu: Tools > Toggle Hardware Decoding Ctrl+h cycle-values hwdec "auto" "no" #menu: Tools > Toggle Hardware Decoding
_ script-message mpv.net show-setup-dialog #menu: Tools > OS Setup... _ script-message mpv.net show-setup-dialog #menu: Tools > OS Setup...
_ script-message mpv.net shell-execute https://github.com/stax76/mpv.net/blob/master/Manual.md #menu: Help > mpv.net Manual _ script-message mpv.net shell-execute https://mpv.io #menu: Help > Website mpv
_ script-message mpv.net shell-execute https://github.com/stax76/mpv.net #menu: Help > mpv.net GitHub _ script-message mpv.net shell-execute https://github.com/stax76/mpv.net #menu: Help > Website mpv.net
_ script-message mpv.net shell-execute https://github.com/stax76/mpv.net/wiki #menu: Help > mpv.net Wiki
_ script-message mpv.net shell-execute https://github.com/stax76/mpv.net#support #menu: Help > mpv.net Support
_ script-message mpv.net shell-execute https://github.com/stax76/mpv.net/releases #menu: Help > mpv.net Download
_ script-message mpv.net shell-execute https://github.com/stax76/mpv.net/blob/master/mpv.net/Resources/inputConf.txt #menu: Help > mpv.net Default Key Bindings
_ ignore #menu: Help > - _ ignore #menu: Help > -
_ script-message mpv.net shell-execute https://mpv.io/manual/stable/ #menu: Help > mpv Manual _ script-message mpv.net shell-execute https://mpv.io/manual/stable/ #menu: Help > Manual mpv
_ script-message mpv.net shell-execute https://github.com/mpv-player/mpv/wiki #menu: Help > mpv Wiki _ script-message mpv.net shell-execute https://github.com/stax76/mpv.net/blob/master/Manual.md #menu: Help > Manual mpv.net
_ script-message mpv.net shell-execute https://github.com/mpv-player/mpv/wiki/User-Scripts #menu: Help > mpv User Scripts
_ script-message mpv.net shell-execute https://mpv.io/bug-reports/ #menu: Help > mpv Bugs and Requests
_ script-message mpv.net shell-execute https://mpv.io/installation/ #menu: Help > mpv Download
_ script-message mpv.net shell-execute https://github.com/mpv-player/mpv/blob/master/etc/input.conf #menu: Help > mpv Default Key Bindings
_ ignore #menu: Help > - _ ignore #menu: Help > -
_ script-message mpv.net update-check #menu: Help > Check for Updates
_ script-message mpv.net show-about #menu: Help > About mpv.net _ script-message mpv.net show-about #menu: Help > About mpv.net
_ ignore #menu: - _ ignore #menu: -

View File

@@ -30,7 +30,7 @@ namespace mpvnet
LoadConf(App.ConfPath); LoadConf(App.ConfPath);
LoadSettings(); LoadSettings();
InitialContent = GetCompareString(); InitialContent = GetCompareString();
SearchControl.Text = RegHelp.GetString(App.RegPath, "ConfigEditorSearch"); SearchControl.Text = RegistryHelp.GetString(App.RegPath, "ConfigEditorSearch");
} }
private void LoadSettings() private void LoadSettings()
@@ -68,7 +68,7 @@ namespace mpvnet
protected override void OnClosed(EventArgs e) protected override void OnClosed(EventArgs e)
{ {
base.OnClosed(e); base.OnClosed(e);
RegHelp.SetObject(App.RegPath, "ConfigEditorSearch", SearchControl.Text); RegistryHelp.SetValue(App.RegPath, "ConfigEditorSearch", SearchControl.Text);
if (InitialContent == GetCompareString()) if (InitialContent == GetCompareString())
return; return;

View File

@@ -15,7 +15,7 @@ namespace mpvnet
{ {
try try
{ {
using (var proc = new Process()) using (Process proc = new Process())
{ {
proc.StartInfo.FileName = WinForms.Application.ExecutablePath; proc.StartInfo.FileName = WinForms.Application.ExecutablePath;
proc.StartInfo.Arguments = "--reg-file-assoc " + value; proc.StartInfo.Arguments = "--reg-file-assoc " + value;

View File

@@ -34,7 +34,7 @@ namespace mpvnet
try try
{ {
object recent = RegHelp.GetObject(App.RegPath, "Recent"); object recent = RegistryHelp.GetValue(App.RegPath, "Recent");
if (recent is string[] r) if (recent is string[] r)
RecentFiles = new List<string>(r); RecentFiles = new List<string>(r);
@@ -91,8 +91,8 @@ namespace mpvnet
Left = target.X + (target.Width - Width) / 2; Left = target.X + (target.Width - Width) / 2;
Top = target.Y + (target.Height - Height) / 2; Top = target.Y + (target.Height - Height) / 2;
int posX = RegHelp.GetInt(App.RegPath, "PosX"); int posX = RegistryHelp.GetInt(App.RegPath, "PosX");
int posY = RegHelp.GetInt(App.RegPath, "PosY"); int posY = RegistryHelp.GetInt(App.RegPath, "PosY");
if (posX != 0 && posY != 0 && App.RememberPosition) if (posX != 0 && posY != 0 && App.RememberPosition)
{ {
@@ -472,7 +472,7 @@ namespace mpvnet
break; break;
case 0x0200: // WM_MOUSEMOVE case 0x0200: // WM_MOUSEMOVE
{ {
if ((DateTime.Now - LastCycleFullscreen).TotalMilliseconds > 100) if ((DateTime.Now - LastCycleFullscreen).TotalMilliseconds > 500)
{ {
Point pos = PointToClient(Cursor.Position); Point pos = PointToClient(Cursor.Position);
mp.command($"mouse {pos.X} {pos.Y}"); mp.command($"mouse {pos.X} {pos.Y}");
@@ -483,21 +483,26 @@ namespace mpvnet
} }
break; break;
case 0x2a3: // WM_MOUSELEAVE case 0x2a3: // WM_MOUSELEAVE
mp.command("mouse 1 1"); // osc won't always auto hide // osc won't always auto hide
mp.command("mouse 1 1");
break; break;
case 0x203: // Native.WM.LBUTTONDBLCLK case 0x203: // WM_LBUTTONDBLCLK
{ {
Point pos = PointToClient(Cursor.Position); Point pos = PointToClient(Cursor.Position);
mp.command($"mouse {pos.X} {pos.Y} 0 double"); mp.command($"mouse {pos.X} {pos.Y} 0 double");
} }
break; break;
case 0x02E0: // WM_DPICHANGED case 0x02E0: // WM_DPICHANGED
{
if (!WasShown) if (!WasShown)
break; break;
var r2 = Marshal.PtrToStructure<Native.RECT>(m.LParam);
Native.SetWindowPos(Handle, IntPtr.Zero, r2.Left, r2.Top, r2.Width, r2.Height, 0); Native.RECT rect = Marshal.PtrToStructure<Native.RECT>(m.LParam);
Native.SetWindowPos(Handle, IntPtr.Zero, rect.Left, rect.Top, rect.Width, rect.Height, 0);
}
break; break;
case 0x0214: // WM_SIZING case 0x0214: // WM_SIZING
{
var rc = Marshal.PtrToStructure<Native.RECT>(m.LParam); var rc = Marshal.PtrToStructure<Native.RECT>(m.LParam);
var r = rc; var r = rc;
NativeHelp.SubtractWindowBorders(Handle, ref r); NativeHelp.SubtractWindowBorders(Handle, ref r);
@@ -519,8 +524,10 @@ namespace mpvnet
Marshal.StructureToPtr<Native.RECT>(new Native.RECT(corners[0], corners[1], corners[2], corners[3]), m.LParam, false); Marshal.StructureToPtr<Native.RECT>(new Native.RECT(corners[0], corners[1], corners[2], corners[3]), m.LParam, false);
m.Result = new IntPtr(1); m.Result = new IntPtr(1);
}
return; return;
case 0x004A: // WM_COPYDATA case 0x004A: // WM_COPYDATA
{
var copyData = (Native.COPYDATASTRUCT)m.GetLParam(typeof(Native.COPYDATASTRUCT)); var copyData = (Native.COPYDATASTRUCT)m.GetLParam(typeof(Native.COPYDATASTRUCT));
string[] files = copyData.lpData.Split('\n'); string[] files = copyData.lpData.Split('\n');
string mode = files[0]; string mode = files[0];
@@ -538,6 +545,7 @@ namespace mpvnet
} }
Activate(); Activate();
}
return; return;
} }
@@ -624,6 +632,7 @@ namespace mpvnet
if (mp.GPUAPI != "vulkan") if (mp.GPUAPI != "vulkan")
mp.VideoSizeAutoResetEvent.WaitOne(App.StartThreshold); mp.VideoSizeAutoResetEvent.WaitOne(App.StartThreshold);
LastCycleFullscreen = DateTime.Now;
SetFormPosAndSize(); SetFormPosAndSize();
} }
@@ -645,9 +654,10 @@ namespace mpvnet
WPF.WPF.Init(); WPF.WPF.Init();
System.Windows.Application.Current.ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown; System.Windows.Application.Current.ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown;
Cursor.Position = new Point(Cursor.Position.X + 1, Cursor.Position.Y); Cursor.Position = new Point(Cursor.Position.X + 1, Cursor.Position.Y);
WasShown = true; UpdateCheck.DailyCheck();
mp.LoadScripts(); mp.LoadScripts();
Task.Run(() => App.Extension = new Extension()); Task.Run(() => App.Extension = new Extension());
WasShown = true;
} }
protected override void OnResize(EventArgs e) protected override void OnResize(EventArgs e)
@@ -664,11 +674,11 @@ namespace mpvnet
if (WindowState == FormWindowState.Normal) if (WindowState == FormWindowState.Normal)
{ {
RegHelp.SetObject(App.RegPath, "PosX", Left + Width / 2); RegistryHelp.SetValue(App.RegPath, "PosX", Left + Width / 2);
RegHelp.SetObject(App.RegPath, "PosY", Top + Height / 2); RegistryHelp.SetValue(App.RegPath, "PosY", Top + Height / 2);
} }
RegHelp.SetObject(App.RegPath, "Recent", RecentFiles.ToArray()); RegistryHelp.SetValue(App.RegPath, "Recent", RecentFiles.ToArray());
if (mp.IsQuitNeeded) if (mp.IsQuitNeeded)
mp.commandv("quit"); mp.commandv("quit");

View File

@@ -108,6 +108,7 @@
<Reference Include="System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <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> <HintPath>..\packages\Microsoft.PowerShell.5.ReferenceAssemblies.1.1.0\lib\net4\System.Management.Automation.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Xaml" /> <Reference Include="System.Xaml" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
@@ -142,6 +143,8 @@
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
<Compile Include="Misc\Help.cs" /> <Compile Include="Misc\Help.cs" />
<Compile Include="Misc\UpdateCheck.cs" />
<Compile Include="Misc\RegistryHelp.cs" />
<Compile Include="Misc\Theme.cs" /> <Compile Include="Misc\Theme.cs" />
<Compile Include="WPF\SearchTextBoxUserControl.xaml.cs"> <Compile Include="WPF\SearchTextBoxUserControl.xaml.cs">
<DependentUpon>SearchTextBoxUserControl.xaml</DependentUpon> <DependentUpon>SearchTextBoxUserControl.xaml</DependentUpon>

View File

@@ -1,4 +1,5 @@
using System; 
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Drawing; using System.Drawing;
@@ -155,7 +156,7 @@ namespace mpvnet
_ConfigFolder = portableFolder; _ConfigFolder = portableFolder;
if (!Directory.Exists(_ConfigFolder)) if (!Directory.Exists(_ConfigFolder))
_ConfigFolder = RegHelp.GetString(App.RegPath, "ConfigFolder"); _ConfigFolder = RegistryHelp.GetString(App.RegPath, "ConfigFolder");
if (!Directory.Exists(_ConfigFolder)) if (!Directory.Exists(_ConfigFolder))
{ {
@@ -202,7 +203,7 @@ namespace mpvnet
Directory.CreateDirectory(_ConfigFolder); Directory.CreateDirectory(_ConfigFolder);
if (!_ConfigFolder.Contains("portable_config")) if (!_ConfigFolder.Contains("portable_config"))
RegHelp.SetObject(App.RegPath, "ConfigFolder", _ConfigFolder); RegistryHelp.SetValue(App.RegPath, "ConfigFolder", _ConfigFolder);
if (!File.Exists(_ConfigFolder + "input.conf")) if (!File.Exists(_ConfigFolder + "input.conf"))
File.WriteAllText(_ConfigFolder + "input.conf", Properties.Resources.inputConf); File.WriteAllText(_ConfigFolder + "input.conf", Properties.Resources.inputConf);