diff --git a/Plugins/Wox.Plugin.PluginIndicator/PluginIndicator.cs b/Plugins/Wox.Plugin.PluginIndicator/PluginIndicator.cs
index 531b6732db..011d3bde0c 100644
--- a/Plugins/Wox.Plugin.PluginIndicator/PluginIndicator.cs
+++ b/Plugins/Wox.Plugin.PluginIndicator/PluginIndicator.cs
@@ -19,7 +19,7 @@ namespace Wox.Plugin.PluginIndicator
Title = keyword,
SubTitle = $"Activate {metadata.Name} plugin",
Score = 100,
- IcoPath = metadata.FullIcoPath,
+ IcoPath = metadata.IcoPath,
Action = c =>
{
context.API.ChangeQuery($"{keyword}{Plugin.Query.TermSeperater}");
diff --git a/Plugins/Wox.Plugin.PluginManagement/Main.cs b/Plugins/Wox.Plugin.PluginManagement/Main.cs
index 216157a1c7..93841eb82f 100644
--- a/Plugins/Wox.Plugin.PluginManagement/Main.cs
+++ b/Plugins/Wox.Plugin.PluginManagement/Main.cs
@@ -189,7 +189,7 @@ namespace Wox.Plugin.PluginManagement
{
Title = plugin.Name,
SubTitle = plugin.Description,
- IcoPath = plugin.FullIcoPath,
+ IcoPath = plugin.IcoPath,
Action = e =>
{
UnInstallPlugin(plugin);
@@ -229,7 +229,7 @@ namespace Wox.Plugin.PluginManagement
{
Title = $"{plugin.Name} - Action Keywords: {actionKeywordString}",
SubTitle = plugin.Description,
- IcoPath = plugin.FullIcoPath
+ IcoPath = plugin.IcoPath
});
}
return results;
diff --git a/Plugins/Wox.Plugin.WebSearch/Images/baidu.png b/Plugins/Wox.Plugin.WebSearch/Images/baidu.png
new file mode 100644
index 0000000000..2d30b504eb
Binary files /dev/null and b/Plugins/Wox.Plugin.WebSearch/Images/baidu.png differ
diff --git a/Plugins/Wox.Plugin.WebSearch/Settings.cs b/Plugins/Wox.Plugin.WebSearch/Settings.cs
index c1fb1dda02..aebec99c2e 100644
--- a/Plugins/Wox.Plugin.WebSearch/Settings.cs
+++ b/Plugins/Wox.Plugin.WebSearch/Settings.cs
@@ -1,6 +1,4 @@
using System.Collections.Generic;
-using Newtonsoft.Json;
-using Wox.Infrastructure.Storage;
namespace Wox.Plugin.WebSearch
{
@@ -12,23 +10,31 @@ namespace Wox.Plugin.WebSearch
{
Title = "Google",
ActionKeyword = "g",
- IconPath = "google.png",
+ Icon = "google.png",
Url = "https://www.google.com/search?q={q}",
Enabled = true
},
new WebSearch
+ {
+ Title = "Google Scholar",
+ ActionKeyword = "sc",
+ Icon = "google.png",
+ Url = "https://scholar.google.com/scholar?q={q}",
+ Enabled = true
+ },
+ new WebSearch
{
Title = "Wikipedia",
ActionKeyword = "wiki",
- IconPath = "wiki.png",
- Url = "http://en.wikipedia.org/wiki/{q}",
+ Icon = "wiki.png",
+ Url = "https://en.wikipedia.org/wiki/{q}",
Enabled = true
},
new WebSearch
{
Title = "FindIcon",
ActionKeyword = "findicon",
- IconPath = "pictures.png",
+ Icon = "pictures.png",
Url = "http://findicons.com/search/{q}",
Enabled = true
},
@@ -36,39 +42,39 @@ namespace Wox.Plugin.WebSearch
{
Title = "Facebook",
ActionKeyword = "facebook",
- IconPath = "facebook.png",
- Url = "http://www.facebook.com/search/?q={q}",
+ Icon = "facebook.png",
+ Url = "https://www.facebook.com/search/?q={q}",
Enabled = true
},
new WebSearch
{
Title = "Twitter",
ActionKeyword = "twitter",
- IconPath = "twitter.png",
- Url = "http://twitter.com/search?q={q}",
+ Icon = "twitter.png",
+ Url = "https://twitter.com/search?q={q}",
Enabled = true
},
new WebSearch
{
Title = "Google Maps",
ActionKeyword = "maps",
- IconPath = "google_maps.png",
- Url = "http://maps.google.com/maps?q={q}",
+ Icon = "google_maps.png",
+ Url = "https://maps.google.com/maps?q={q}",
Enabled = true
},
new WebSearch
{
Title = "Google Translate",
ActionKeyword = "translate",
- IconPath = "google_translate.png",
- Url = "http://translate.google.com/#auto|en|{q}",
+ Icon = "google_translate.png",
+ Url = "https://translate.google.com/#auto|en|{q}",
Enabled = true
},
new WebSearch
{
Title = "Duckduckgo",
ActionKeyword = "duckduckgo",
- IconPath = "duckduckgo.png",
+ Icon = "duckduckgo.png",
Url = "https://duckduckgo.com/?q={q}",
Enabled = true
},
@@ -76,7 +82,7 @@ namespace Wox.Plugin.WebSearch
{
Title = "Github",
ActionKeyword = "github",
- IconPath = "github.png",
+ Icon = "github.png",
Url = "https://github.com/search?q={q}",
Enabled = true
},
@@ -84,7 +90,7 @@ namespace Wox.Plugin.WebSearch
{
Title = "Github Gist",
ActionKeyword = "gist",
- IconPath = "gist.png",
+ Icon = "gist.png",
Url = "https://gist.github.com/search?q={q}",
Enabled = true
},
@@ -92,7 +98,7 @@ namespace Wox.Plugin.WebSearch
{
Title = "Gmail",
ActionKeyword = "gmail",
- IconPath = "gmail.png",
+ Icon = "gmail.png",
Url = "https://mail.google.com/mail/ca/u/0/#apps/{q}",
Enabled = true
},
@@ -100,39 +106,39 @@ namespace Wox.Plugin.WebSearch
{
Title = "Google Drive",
ActionKeyword = "drive",
- IconPath = "google_drive.png",
- Url = "http://drive.google.com/?hl=en&tab=bo#search/{q}",
+ Icon = "google_drive.png",
+ Url = "https://drive.google.com/?hl=en&tab=bo#search/{q}",
Enabled = true
},
new WebSearch
{
Title = "Wolframalpha",
ActionKeyword = "wolframalpha",
- IconPath = "wolframalpha.png",
- Url = "http://www.wolframalpha.com/input/?i={q}",
+ Icon = "wolframalpha.png",
+ Url = "https://www.wolframalpha.com/input/?i={q}",
Enabled = true
},
new WebSearch
{
Title = "Stackoverflow",
ActionKeyword = "stackoverflow",
- IconPath = "stackoverflow.png",
- Url = "http://stackoverflow.com/search?q={q}",
+ Icon = "stackoverflow.png",
+ Url = "https://stackoverflow.com/search?q={q}",
Enabled = true
},
new WebSearch
{
Title = "I'm Feeling Lucky",
ActionKeyword = "lucky",
- IconPath = "google.png",
- Url = "http://google.com/search?q={q}&btnI=I",
+ Icon = "google.png",
+ Url = "https://google.com/search?q={q}&btnI=I",
Enabled = true
},
new WebSearch
{
Title = "Google Image",
ActionKeyword = "image",
- IconPath = "google.png",
+ Icon = "google.png",
Url = "https://www.google.com/search?q={q}&tbm=isch",
Enabled = true
},
@@ -140,15 +146,15 @@ namespace Wox.Plugin.WebSearch
{
Title = "Youtube",
ActionKeyword = "youtube",
- IconPath = "youtube.png",
- Url = "http://www.youtube.com/results?search_query={q}",
+ Icon = "youtube.png",
+ Url = "https://www.youtube.com/results?search_query={q}",
Enabled = true
},
new WebSearch
{
Title = "Bing",
ActionKeyword = "bing",
- IconPath = "bing.png",
+ Icon = "bing.png",
Url = "https://www.bing.com/search?q={q}",
Enabled = true
},
@@ -156,9 +162,17 @@ namespace Wox.Plugin.WebSearch
{
Title = "Yahoo",
ActionKeyword = "yahoo",
- IconPath = "yahoo.png",
- Url = "http://www.search.yahoo.com/search?p={q}",
+ Icon = "yahoo.png",
+ Url = "https://www.search.yahoo.com/search?p={q}",
Enabled = true
+ },
+ new WebSearch
+ {
+ Title= "Baidu",
+ ActionKeyword= "bd",
+ Icon= "baidu.png",
+ Url="https://www.baidu.com/#ie=UTF-8&wd={q}",
+ Enabled= true
}
};
diff --git a/Plugins/Wox.Plugin.WebSearch/WebSearch.cs b/Plugins/Wox.Plugin.WebSearch/WebSearch.cs
index 0ce1692bd0..5b4b734a1e 100644
--- a/Plugins/Wox.Plugin.WebSearch/WebSearch.cs
+++ b/Plugins/Wox.Plugin.WebSearch/WebSearch.cs
@@ -1,12 +1,35 @@
-using System;
+using System.IO;
+using JetBrains.Annotations;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Serialization;
namespace Wox.Plugin.WebSearch
{
public class WebSearch
{
+ public const string DefaultIcon = "web_search.png";
public string Title { get; set; }
public string ActionKeyword { get; set; }
- public string IconPath { get; set; }
+ [NotNull]
+ private string _icon = DefaultIcon;
+
+ [NotNull]
+ public string Icon
+ {
+ get { return _icon; }
+ set
+ {
+ _icon = value;
+ IconPath = Path.Combine(WebSearchPlugin.PluginDirectory, WebSearchPlugin.ImageDirectory, value);
+ }
+ }
+ ///
+ /// All icon should be put under Images directory
+ ///
+ [NotNull]
+ [JsonIgnore]
+ internal string IconPath { get; private set; }
+
public string Url { get; set; }
public bool Enabled { get; set; }
}
diff --git a/Plugins/Wox.Plugin.WebSearch/WebSearchPlugin.cs b/Plugins/Wox.Plugin.WebSearch/WebSearchPlugin.cs
index 2bb2ee877d..8232c7f28e 100644
--- a/Plugins/Wox.Plugin.WebSearch/WebSearchPlugin.cs
+++ b/Plugins/Wox.Plugin.WebSearch/WebSearchPlugin.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
+using System.IO;
using System.Linq;
using System.Windows.Controls;
using JetBrains.Annotations;
@@ -13,14 +14,10 @@ namespace Wox.Plugin.WebSearch
{
public PluginInitContext Context { get; private set; }
- private readonly PluginJsonStorage _storage;
- private readonly Settings _settings;
-
- public WebSearchPlugin()
- {
- _storage = new PluginJsonStorage();
- _settings = _storage.Load();
- }
+ private PluginJsonStorage _storage;
+ private Settings _settings;
+ public const string ImageDirectory = "Images";
+ public static string PluginDirectory;
public void Save()
{
@@ -48,7 +45,7 @@ namespace Wox.Plugin.WebSearch
Title = title,
SubTitle = subtitle,
Score = 6,
- IcoPath = webSearch.IconPath,
+ IcoPath = webSearch.IconPath,
Action = c =>
{
Process.Start(webSearch.Url.Replace("{q}", Uri.EscapeDataString(keyword ?? string.Empty)));
@@ -92,6 +89,9 @@ namespace Wox.Plugin.WebSearch
public void Init(PluginInitContext context)
{
Context = context;
+ PluginDirectory = Context.CurrentPluginMetadata.PluginDirectory;
+ _storage = new PluginJsonStorage();
+ _settings = _storage.Load();
}
#region ISettingProvider Members
diff --git a/Plugins/Wox.Plugin.WebSearch/WebSearchSetting.xaml.cs b/Plugins/Wox.Plugin.WebSearch/WebSearchSetting.xaml.cs
index a359378e73..e3f3bbfbbd 100644
--- a/Plugins/Wox.Plugin.WebSearch/WebSearchSetting.xaml.cs
+++ b/Plugins/Wox.Plugin.WebSearch/WebSearchSetting.xaml.cs
@@ -2,20 +2,14 @@
using System.IO;
using System.Linq;
using System.Windows;
-using System.Windows.Media;
-using System.Windows.Media.Imaging;
using Microsoft.Win32;
-using Wox.Infrastructure;
using Wox.Infrastructure.Exception;
using Wox.Infrastructure.Image;
namespace Wox.Plugin.WebSearch
{
- public partial class WebSearchSetting : Window
+ public partial class WebSearchSetting
{
- private const string ImageDirectory = "Images";
- private const string DefaultIcon = "web_search.png";
- private readonly string _pluginDirectory;
private readonly WebSearchesSetting _settingWindow;
private bool _isUpdate;
private WebSearch _webSearch;
@@ -30,7 +24,6 @@ namespace Wox.Plugin.WebSearch
_context = settingWidow.Context;
_settingWindow = settingWidow;
_settings = settings;
- _pluginDirectory = _settingWindow.Context.CurrentPluginMetadata.PluginDirectory;
}
public void UpdateItem(WebSearch webSearch)
@@ -47,21 +40,17 @@ namespace Wox.Plugin.WebSearch
_isUpdate = true;
ConfirmButton.Content = "Update";
- WebSearchIcon.Source = LoadIcon(webSearch.IconPath);
+ WebSearchIcon.Source = ImageLoader.Load(webSearch.IconPath);
EnableCheckBox.IsChecked = webSearch.Enabled;
WebSearchName.Text = webSearch.Title;
Url.Text = webSearch.Url;
Actionword.Text = webSearch.ActionKeyword;
}
- public void AddItem(WebSearch websearch)
+ public void AddItem(WebSearch webSearch)
{
- _webSearch = websearch;
- if (string.IsNullOrEmpty(_webSearch.IconPath))
- {
- _webSearch.IconPath = DefaultIcon;
- WebSearchIcon.Source = LoadIcon(_webSearch.IconPath);
- }
+ _webSearch = webSearch;
+ WebSearchIcon.Source = ImageLoader.Load(webSearch.IconPath);
}
private void CancelButtonOnClick(object sender, RoutedEventArgs e)
@@ -69,32 +58,6 @@ namespace Wox.Plugin.WebSearch
Close();
}
- private ImageSource LoadIcon(string path)
- {
- if (path != null)
- {
- var releativePath = Path.Combine(_pluginDirectory, ImageDirectory, Path.GetFileName(path));
- if (File.Exists(releativePath))
- {
- _webSearch.IconPath = path;
- var source = ImageLoader.Load(releativePath);
- return source;
- }
- else
- {
- _webSearch.IconPath = path;
- var source = ImageLoader.Load(path);
- return source;
- }
- }
- else
- {
- var source = ImageLoader.Load(Path.Combine(_pluginDirectory, ImageDirectory, DefaultIcon));
- return source;
- }
-
- }
-
///
/// Confirm button for both add and update
///
@@ -156,9 +119,10 @@ namespace Wox.Plugin.WebSearch
private void SelectIconButtonOnClick(object sender, RoutedEventArgs e)
{
+ var directory = Path.Combine(WebSearchPlugin.PluginDirectory, WebSearchPlugin.ImageDirectory);
var dlg = new OpenFileDialog
{
- InitialDirectory = Path.Combine(_pluginDirectory, ImageDirectory),
+ InitialDirectory = directory,
Filter = "Image files (*.jpg, *.jpeg, *.gif, *.png, *.bmp) |*.jpg; *.jpeg; *.gif; *.png; *.bmp"
};
@@ -168,7 +132,16 @@ namespace Wox.Plugin.WebSearch
string fullpath = dlg.FileName;
if (fullpath != null)
{
- WebSearchIcon.Source = LoadIcon(fullpath);
+ _webSearch.Icon = Path.GetFileName(fullpath);
+ if (File.Exists(_webSearch.IconPath))
+ {
+ WebSearchIcon.Source = ImageLoader.Load(_webSearch.IconPath);
+ }
+ else
+ {
+ _webSearch.Icon = WebSearch.DefaultIcon;
+ MessageBox.Show($"The file should be put under {directory}");
+ }
}
}
}
diff --git a/Plugins/Wox.Plugin.WebSearch/Wox.Plugin.WebSearch.csproj b/Plugins/Wox.Plugin.WebSearch/Wox.Plugin.WebSearch.csproj
index c32cf95632..3d52d10179 100644
--- a/Plugins/Wox.Plugin.WebSearch/Wox.Plugin.WebSearch.csproj
+++ b/Plugins/Wox.Plugin.WebSearch/Wox.Plugin.WebSearch.csproj
@@ -124,6 +124,9 @@
PreserveNewest
+
+ PreserveNewest
+
MSBuild:Compile
Designer
diff --git a/Plugins/Wox.Plugin.WebSearch/plugin.json b/Plugins/Wox.Plugin.WebSearch/plugin.json
index 751208bc75..115fb21e61 100644
--- a/Plugins/Wox.Plugin.WebSearch/plugin.json
+++ b/Plugins/Wox.Plugin.WebSearch/plugin.json
@@ -19,7 +19,8 @@
"image",
"youtube",
"bing",
- "yahoo"
+ "yahoo",
+ "bd"
],
"Name": "Web Searches",
"Description": "Provide the web search ability",
diff --git a/Wox.Infrastructure/Image/ImageLoader.cs b/Wox.Infrastructure/Image/ImageLoader.cs
index f823452e2c..bbea213101 100644
--- a/Wox.Infrastructure/Image/ImageLoader.cs
+++ b/Wox.Infrastructure/Image/ImageLoader.cs
@@ -5,6 +5,7 @@ using System.Drawing;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
+using System.Threading.Tasks;
using System.Windows;
using System.Windows.Interop;
using System.Windows.Media;
@@ -57,7 +58,6 @@ namespace Wox.Infrastructure.Image
{
try
{
- if (File.Exists(fileName) == false) return null;
Icon icon = GetFileIcon(fileName) ?? Icon.ExtractAssociatedIcon(fileName);
if (icon != null)
{
@@ -65,96 +65,93 @@ namespace Wox.Infrastructure.Image
new Int32Rect(0, 0, icon.Width, icon.Height), BitmapSizeOptions.FromEmptyOptions());
}
}
- catch { }
+ catch (System.Exception e)
+ {
+ Log.Error(e);
+ }
return null;
}
public static void PreloadImages()
{
- Stopwatch.Debug("Preload images from cache", () =>
+ var path = Path.Combine(Wox.ProgramPath, "Images", "app.png");
+ _imageSources[path] = new BitmapImage(new Uri(path));
+ Task.Factory.StartNew(() =>
{
- _cache.TopUsedImages.AsParallel().Where(i => !_imageSources.ContainsKey(i.Key)).ForAll(i =>
- {
- var img = Load(i.Key, false);
- if (img != null)
- {
- // todo happlebao magic
- // the image created on other threads can be accessed from main ui thread,
- // this line made it possible
- // should be changed the Dispatcher.InvokeAsync in the future
- img.Freeze();
- _imageSources[i.Key] = img;
- }
- });
+ Stopwatch.Debug("Preload images from cache", () =>
+ {
+ _cache.TopUsedImages.AsParallel().Where(i => !_imageSources.ContainsKey(i.Key)).ForAll(i =>
+ {
+ var img = Load(i.Key);
+ if (img != null)
+ {
+ // todo happlebao magic
+ // the image created on other threads can be accessed from main ui thread,
+ // this line made it possible
+ // should be changed the Dispatcher.InvokeAsync in the future
+ img.Freeze();
+ _imageSources[i.Key] = img;
+ }
+ });
+ });
});
Log.Info($"Preload {_cache.TopUsedImages.Count} images from cache");
}
- public static ImageSource Load(string path, bool addToCache = true)
- {
- ImageSource image = null;
+ public static ImageSource Load(string path)
+ {
+ ImageSource image;
if (string.IsNullOrEmpty(path))
{
path = Path.Combine(Wox.ProgramPath, "Images", "app.png");
- image = new BitmapImage(new Uri(path));
- return image;
+ image = _imageSources[path];
}
- Stopwatch.Debug($"Loading image path: {path}", () =>
+ else if (_imageSources.ContainsKey(path))
{
+ image = _imageSources[path];
+ }
+ else
+ {
+ string ext = Path.GetExtension(path).ToLower();
- if (addToCache)
+ if (path.StartsWith("data:", StringComparison.OrdinalIgnoreCase))
{
- _cache.Add(path);
+ image = new BitmapImage(new Uri(path));
+ _imageSources[path] = image;
}
-
-
- if (_imageSources.ContainsKey(path))
+ else if (File.Exists(path) && Path.IsPathRooted(path))
{
- image = _imageSources[path];
+ if (SelfExts.Contains(ext))
+ {
+ image = GetIcon(path);
+ _imageSources[path] = image;
+ }
+ else if (ImageExts.Contains(ext))
+ {
+ image = new BitmapImage(new Uri(path));
+ _imageSources[path] = image;
+ }
+ else
+ {
+ path = Path.Combine(Wox.ProgramPath, "Images", "app.png");
+ image = _imageSources[path];
+ }
}
else
{
- string ext = Path.GetExtension(path).ToLower();
-
- if (path.StartsWith("data:", StringComparison.OrdinalIgnoreCase))
+ path = Path.Combine(Wox.ProgramPath, "Images", Path.GetFileName(path));
+ if (File.Exists(path))
{
image = new BitmapImage(new Uri(path));
}
- else if (SelfExts.Contains(ext) && File.Exists(path))
+ else
{
- image = GetIcon(path);
- }
- else if (!string.IsNullOrEmpty(path) && ImageExts.Contains(ext))
- {
- if (File.Exists(path))
- {
- image = new BitmapImage(new Uri(path));
- }
- else
- {
- path = Path.Combine(Wox.ProgramPath, "Images", Path.GetFileName(path));
- if (File.Exists(path))
- {
- image = new BitmapImage(new Uri(path));
- }
- else
- {
- path = Path.Combine(Wox.ProgramPath, "Images", "app.png");
- image = new BitmapImage(new Uri(path));
- }
- }
- }
-
- if (image != null && addToCache)
- {
- if (!_imageSources.ContainsKey(path))
- {
- _imageSources[path] = image;
- }
+ path = Path.Combine(Wox.ProgramPath, "Images", "app.png");
+ image = _imageSources[path];
}
}
- });
+ }
return image;
}
diff --git a/Wox.Infrastructure/Image/ImagePathConverter.cs b/Wox.Infrastructure/Image/ImagePathConverter.cs
index 77747fbc92..0fd99c3719 100644
--- a/Wox.Infrastructure/Image/ImagePathConverter.cs
+++ b/Wox.Infrastructure/Image/ImagePathConverter.cs
@@ -2,9 +2,8 @@ using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
-using Wox.Infrastructure.Image;
-namespace Wox.Converters
+namespace Wox.Infrastructure.Image
{
public class ImagePathConverter : IValueConverter
{
diff --git a/Wox.Infrastructure/Wox.Infrastructure.csproj b/Wox.Infrastructure/Wox.Infrastructure.csproj
index 093b682489..55e750155e 100644
--- a/Wox.Infrastructure/Wox.Infrastructure.csproj
+++ b/Wox.Infrastructure/Wox.Infrastructure.csproj
@@ -77,6 +77,7 @@
+
diff --git a/Wox.Plugin/PluginMetadata.cs b/Wox.Plugin/PluginMetadata.cs
index 6c6dc5136e..bdf51d4030 100644
--- a/Wox.Plugin/PluginMetadata.cs
+++ b/Wox.Plugin/PluginMetadata.cs
@@ -6,6 +6,7 @@ namespace Wox.Plugin
{
public class PluginMetadata
{
+ private string _pluginDirectory;
public string ID { get; set; }
public string Name { get; set; }
public string Author { get; set; }
@@ -15,39 +16,34 @@ namespace Wox.Plugin
public string Website { get; set; }
- public string ExecuteFilePath => Path.Combine(PluginDirectory, ExecuteFileName);
+ public string ExecuteFilePath { get; private set;}
public string ExecuteFileName { get; set; }
- public string PluginDirectory { get; set; }
+ public string PluginDirectory
+ {
+ get { return _pluginDirectory; }
+ internal set
+ {
+ _pluginDirectory = value;
+ ExecuteFilePath = Path.Combine(value, ExecuteFileName);
+ IcoPath = Path.Combine(value, IcoPath);
+ }
+ }
[Obsolete("Use ActionKeywords instead, because Wox now support multiple action keywords. This will be remove in v1.3.0")]
public string ActionKeyword { get; set; }
public List ActionKeywords { get; set; }
- public string IcoPath { get; set; }
+ public string IcoPath { get; set;}
public override string ToString()
{
return Name;
}
- public string FullIcoPath
- {
- get
- {
- // Return the default icon if IcoPath is empty
- if (string.IsNullOrEmpty(IcoPath))
- return Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Images\\work.png");
-
- if (IcoPath.StartsWith("data:"))
- {
- return IcoPath;
- }
-
- return Path.Combine(PluginDirectory, IcoPath);
- }
- }
+ [Obsolete("Use IcoPath")]
+ public string FullIcoPath => IcoPath;
}
}
diff --git a/Wox.Plugin/Result.cs b/Wox.Plugin/Result.cs
index 53f0658d91..aba637b01a 100644
--- a/Wox.Plugin/Result.cs
+++ b/Wox.Plugin/Result.cs
@@ -7,21 +7,24 @@ namespace Wox.Plugin
public class Result
{
+ private string _pluginDirectory;
+ private string _icoPath;
public string Title { get; set; }
public string SubTitle { get; set; }
- public string IcoPath { get; set; }
- public string FullIcoPath
+ public string IcoPath
{
- get
+ get { return _icoPath; }
+ set
{
- if (string.IsNullOrEmpty(IcoPath)) return string.Empty;
- if (IcoPath.StartsWith("data:"))
+ if (!string.IsNullOrEmpty(PluginDirectory) && !Path.IsPathRooted(value))
{
- return IcoPath;
+ _icoPath = Path.Combine(value, IcoPath);
+ }
+ else
+ {
+ _icoPath = value;
}
-
- return Path.Combine(PluginDirectory, IcoPath);
}
}
@@ -40,7 +43,18 @@ namespace Wox.Plugin
///
/// Plugin directory
///
- public string PluginDirectory { get; set; }
+ public string PluginDirectory
+ {
+ get { return _pluginDirectory; }
+ set
+ {
+ _pluginDirectory = value;
+ if (!string.IsNullOrEmpty(IcoPath) && Path.IsPathRooted(IcoPath))
+ {
+ IcoPath = Path.Combine(value, IcoPath);
+ }
+ }
+ }
public override bool Equals(object obj)
{
diff --git a/Wox/App.xaml.cs b/Wox/App.xaml.cs
index caa00246b5..9fc782a359 100644
--- a/Wox/App.xaml.cs
+++ b/Wox/App.xaml.cs
@@ -39,7 +39,7 @@ namespace Wox
base.OnStartup(e);
RegisterUnhandledException();
- Task.Factory.StartNew(ImageLoader.PreloadImages);
+ ImageLoader.PreloadImages();
MainViewModel mainVM = new MainViewModel();
API = new PublicAPIInstance(mainVM, mainVM._settings);
diff --git a/Wox/Converters/ConvertorBase.cs b/Wox/Converters/ConvertorBase.cs
deleted file mode 100644
index d07965b0b3..0000000000
--- a/Wox/Converters/ConvertorBase.cs
+++ /dev/null
@@ -1,30 +0,0 @@
-using System;
-using System.Globalization;
-using System.Windows.Data;
-using System.Windows.Markup;
-
-namespace Wox.Converters
-{
- public abstract class ConvertorBase : MarkupExtension, IValueConverter where T : class, new()
- {
- private static T converter;
-
- ///
- /// Must be implemented in inheritor.
- ///
- public abstract object Convert(object value, Type targetType, object parameter, CultureInfo culture);
-
- ///
- /// Override if needed.
- ///
- public virtual object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
- {
- throw new NotImplementedException();
- }
-
- public override object ProvideValue(IServiceProvider serviceProvider)
- {
- return converter ?? (converter = new T());
- }
- }
-}
\ No newline at end of file
diff --git a/Wox/ResultListBox.xaml b/Wox/ResultListBox.xaml
index e39899babb..5d73ee306b 100644
--- a/Wox/ResultListBox.xaml
+++ b/Wox/ResultListBox.xaml
@@ -3,7 +3,7 @@
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:converters="clr-namespace:Wox.Converters"
+ xmlns:image="clr-namespace:Wox.Infrastructure.Image;assembly=Wox.Infrastructure"
xmlns:vm="clr-namespace:Wox.ViewModel"
mc:Ignorable="d" d:DesignWidth="100" d:DesignHeight="100"
d:DataContext="{d:DesignInstance vm:ResultsViewModel}"
@@ -27,7 +27,7 @@
-
+
@@ -35,7 +35,7 @@
+ Source="{Binding IcoPath,Converter={StaticResource ImageConverter},IsAsync=True}" />
diff --git a/Wox/SettingWindow.xaml b/Wox/SettingWindow.xaml
index 6df47ccd25..b0fc8b93e1 100644
--- a/Wox/SettingWindow.xaml
+++ b/Wox/SettingWindow.xaml
@@ -4,9 +4,7 @@
xmlns:wox="clr-namespace:Wox"
x:Class="Wox.SettingWindow"
xmlns:woxPlugin="clr-namespace:Wox.Plugin;assembly=Wox.Plugin"
- xmlns:converters="clr-namespace:Wox.Converters"
- xmlns:userSettings="clr-namespace:Wox.Core.UserSettings;assembly=Wox.Core"
- xmlns:sys="clr-namespace:System;assembly=mscorlib"
+ xmlns:image="clr-namespace:Wox.Infrastructure.Image;assembly=Wox.Infrastructure"
Icon="Images\app.png"
Title="{DynamicResource woxsettings}"
ResizeMode="NoResize"
@@ -18,7 +16,7 @@
IsHitTestVisible="False" x:Key="FeatureBoxSeperator">
-
+
@@ -70,7 +68,7 @@
+ Source="{Binding Metadata.IcoPath,Converter={StaticResource ImageConverter},IsAsync=True}" />
diff --git a/Wox/SettingWindow.xaml.cs b/Wox/SettingWindow.xaml.cs
index c1cbd59d07..02f8f0d5c9 100644
--- a/Wox/SettingWindow.xaml.cs
+++ b/Wox/SettingWindow.xaml.cs
@@ -551,7 +551,7 @@ namespace Wox
pluginAuthor.Text = InternationalizationManager.Instance.GetTranslation("author") + ": " + pair.Metadata.Author;
pluginSubTitle.Text = pair.Metadata.Description;
pluginId = pair.Metadata.ID;
- pluginIcon.Source = ImageLoader.Load(pair.Metadata.FullIcoPath);
+ pluginIcon.Source = ImageLoader.Load(pair.Metadata.IcoPath);
var customizedPluginConfig = _settings.PluginSettings[pluginId];
cbDisablePlugin.IsChecked = customizedPluginConfig != null && customizedPluginConfig.Disabled;
diff --git a/Wox/ViewModel/ResultViewModel.cs b/Wox/ViewModel/ResultViewModel.cs
index 35fb206ff8..d23af16d90 100644
--- a/Wox/ViewModel/ResultViewModel.cs
+++ b/Wox/ViewModel/ResultViewModel.cs
@@ -35,9 +35,10 @@ namespace Wox.ViewModel
public string SubTitle => RawResult.SubTitle;
- public string FullIcoPath => RawResult.FullIcoPath;
-
public string PluginID => RawResult.PluginID;
+
+ public string IcoPath => RawResult.IcoPath;
+
public int Score
{
get { return RawResult.Score; }
diff --git a/Wox/Wox.csproj b/Wox/Wox.csproj
index 4c1098898e..c9f4be0224 100644
--- a/Wox/Wox.csproj
+++ b/Wox/Wox.csproj
@@ -122,8 +122,6 @@
Properties\SolutionAssemblyInfo.cs
-
-
@@ -378,9 +376,7 @@
PreserveNewest
-
-
-
+
xcopy /Y $(ProjectDir)Themes\* $(TargetDir)Themes\