mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-08 04:07:40 +02:00
Support data URI as Icon
This commit is contained in:
72
Wox/Helper/DataWebRequestFactory.cs
Normal file
72
Wox/Helper/DataWebRequestFactory.cs
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace Wox.Helper
|
||||||
|
{
|
||||||
|
public class DataWebRequestFactory : IWebRequestCreate
|
||||||
|
{
|
||||||
|
class DataWebRequest : WebRequest
|
||||||
|
{
|
||||||
|
private readonly Uri m_uri;
|
||||||
|
|
||||||
|
public DataWebRequest(Uri uri)
|
||||||
|
{
|
||||||
|
m_uri = uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override WebResponse GetResponse()
|
||||||
|
{
|
||||||
|
return new DataWebResponse(m_uri);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class DataWebResponse : WebResponse
|
||||||
|
{
|
||||||
|
private readonly string m_contentType;
|
||||||
|
private readonly byte[] m_data;
|
||||||
|
|
||||||
|
public DataWebResponse(Uri uri)
|
||||||
|
{
|
||||||
|
string uriString = uri.AbsoluteUri;
|
||||||
|
|
||||||
|
int commaIndex = uriString.IndexOf(',');
|
||||||
|
var headers = uriString.Substring(0, commaIndex).Split(';');
|
||||||
|
m_contentType = headers[0];
|
||||||
|
string dataString = uriString.Substring(commaIndex + 1);
|
||||||
|
m_data = Convert.FromBase64String(dataString);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ContentType
|
||||||
|
{
|
||||||
|
get { return m_contentType; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
throw new NotSupportedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override long ContentLength
|
||||||
|
{
|
||||||
|
get { return m_data.Length; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
throw new NotSupportedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Stream GetResponseStream()
|
||||||
|
{
|
||||||
|
return new MemoryStream(m_data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public WebRequest Create(Uri uri)
|
||||||
|
{
|
||||||
|
return new DataWebRequest(uri);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,6 +8,7 @@ using System.Windows.Data;
|
|||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
namespace Wox
|
namespace Wox
|
||||||
{
|
{
|
||||||
@@ -40,6 +41,11 @@ namespace Wox
|
|||||||
if (values[0] == null) return null;
|
if (values[0] == null) return null;
|
||||||
|
|
||||||
string path = values[0].ToString();
|
string path = values[0].ToString();
|
||||||
|
if (path.StartsWith("data:", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
return new System.Windows.Media.Imaging.BitmapImage(new Uri(path));
|
||||||
|
}
|
||||||
|
|
||||||
string pluginDirectory = values[1].ToString();
|
string pluginDirectory = values[1].ToString();
|
||||||
string fullPath = Path.Combine(pluginDirectory, path);
|
string fullPath = Path.Combine(pluginDirectory, path);
|
||||||
string ext = Path.GetExtension(path).ToLower();
|
string ext = Path.GetExtension(path).ToLower();
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ namespace Wox
|
|||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
initialized = true;
|
initialized = true;
|
||||||
|
|
||||||
|
System.Net.WebRequest.RegisterPrefix("data", new DataWebRequestFactory());
|
||||||
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
||||||
|
|
||||||
progressBar.ToolTip = toolTip;
|
progressBar.ToolTip = toolTip;
|
||||||
|
|||||||
@@ -107,6 +107,7 @@
|
|||||||
<Compile Include="Commands\CommandFactory.cs" />
|
<Compile Include="Commands\CommandFactory.cs" />
|
||||||
<Compile Include="Commands\PluginCommand.cs" />
|
<Compile Include="Commands\PluginCommand.cs" />
|
||||||
<Compile Include="Commands\SystemCommand.cs" />
|
<Compile Include="Commands\SystemCommand.cs" />
|
||||||
|
<Compile Include="Helper\DataWebRequestFactory.cs" />
|
||||||
<Compile Include="Helper\WindowIntelopHelper.cs" />
|
<Compile Include="Helper\WindowIntelopHelper.cs" />
|
||||||
<Compile Include="ProgramSourceSetting.xaml.cs">
|
<Compile Include="ProgramSourceSetting.xaml.cs">
|
||||||
<DependentUpon>ProgramSourceSetting.xaml</DependentUpon>
|
<DependentUpon>ProgramSourceSetting.xaml</DependentUpon>
|
||||||
|
|||||||
Reference in New Issue
Block a user