From 3beebd42a8d0cee3b4e9af9a29f99bc24527e4de Mon Sep 17 00:00:00 2001 From: bao-qian Date: Sun, 13 Dec 2015 13:16:33 +0000 Subject: [PATCH 01/15] delete junk --- Wox/ias03vpr.pm0 | 850 ----------------------------------------------- Wox/su54u2mz.xrz | 850 ----------------------------------------------- 2 files changed, 1700 deletions(-) delete mode 100644 Wox/ias03vpr.pm0 delete mode 100644 Wox/su54u2mz.xrz diff --git a/Wox/ias03vpr.pm0 b/Wox/ias03vpr.pm0 deleted file mode 100644 index 2bf2868f8c..0000000000 --- a/Wox/ias03vpr.pm0 +++ /dev/null @@ -1,850 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Diagnostics; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Net; -using System.Reflection; -using System.Threading; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Forms; -using System.Windows.Input; -using System.Windows.Media.Animation; -using NHotkey; -using NHotkey.Wpf; -using Wox.Core.i18n; -using Wox.Core.Plugin; -using Wox.Core.Theme; -using Wox.Core.Updater; -using Wox.Core.UserSettings; -using Wox.Helper; -using Wox.Infrastructure; -using Wox.Infrastructure.Hotkey; -using Wox.Plugin; -using Wox.Storage; -using ContextMenu = System.Windows.Forms.ContextMenu; -using DataFormats = System.Windows.DataFormats; -using DragEventArgs = System.Windows.DragEventArgs; -using IDataObject = System.Windows.IDataObject; -using KeyEventArgs = System.Windows.Input.KeyEventArgs; -using MenuItem = System.Windows.Forms.MenuItem; -using MessageBox = System.Windows.MessageBox; -using ToolTip = System.Windows.Controls.ToolTip; - -namespace Wox -{ - public partial class MainWindow : IPublicAPI - { - - #region Properties - - private readonly Storyboard progressBarStoryboard = new Storyboard(); - private NotifyIcon notifyIcon; - private bool queryHasReturn; - private string lastQuery; - private ToolTip toolTip = new ToolTip(); - - private bool ignoreTextChange = false; - - #endregion - - #region Public API - - public void ChangeQuery(string query, bool requery = false) - { - Dispatcher.Invoke(new Action(() => - { - tbQuery.Text = query; - tbQuery.CaretIndex = tbQuery.Text.Length; - if (requery) - { - TextBoxBase_OnTextChanged(null, null); - } - })); - } - - public void CloseApp() - { - Dispatcher.Invoke(new Action(() => - { - notifyIcon.Visible = false; - Close(); - Environment.Exit(0); - })); - } - - public void HideApp() - { - Dispatcher.Invoke(new Action(HideWox)); - } - - public void ShowApp() - { - Dispatcher.Invoke(new Action(() => ShowWox())); - } - - public void ShowMsg(string title, string subTitle, string iconPath) - { - Dispatcher.Invoke(new Action(() => - { - var m = new Msg { Owner = GetWindow(this) }; - m.Show(title, subTitle, iconPath); - })); - } - - public void OpenSettingDialog() - { - Dispatcher.Invoke(new Action(() => WindowOpener.Open(this))); - } - - public void StartLoadingBar() - { - Dispatcher.Invoke(new Action(StartProgress)); - } - - public void StopLoadingBar() - { - Dispatcher.Invoke(new Action(StopProgress)); - } - - public void InstallPlugin(string path) - { - Dispatcher.Invoke(new Action(() => PluginManager.InstallPlugin(path))); - } - - public void ReloadPlugins() - { - Dispatcher.Invoke(new Action(() => PluginManager.Init(this))); - } - - public string GetTranslation(string key) - { - return InternationalizationManager.Instance.GetTranslation(key); - } - - public List GetAllPlugins() - { - return PluginManager.AllPlugins; - } - - public event WoxKeyDownEventHandler BackKeyDownEvent; - public event WoxGlobalKeyboardEventHandler GlobalKeyboardEvent; - public event AfterWoxQueryEventHandler AfterWoxQueryEvent; - public event AfterWoxQueryEventHandler BeforeWoxQueryEvent; - public event ResultItemDropEventHandler ResultItemDropEvent; - - public void PushResults(Query query, PluginMetadata plugin, List results) - { - results.ForEach(o => - { - o.PluginDirectory = plugin.PluginDirectory; - o.PluginID = plugin.ID; - o.OriginQuery = query; - if (o.ContextMenu != null) - { - o.ContextMenu.ForEach(t => - { - t.PluginDirectory = plugin.PluginDirectory; - t.PluginID = plugin.ID; - }); - } - }); - UpdateResultView(results); - } - - public void ShowContextMenu(PluginMetadata plugin, List results) - { - if (results != null && results.Count > 0) - { - results.ForEach(o => - { - o.PluginDirectory = plugin.PluginDirectory; - o.PluginID = plugin.ID; - o.ContextMenu = null; - }); - pnlContextMenu.Clear(); - pnlContextMenu.AddResults(results); - pnlContextMenu.Visibility = Visibility.Visible; - pnlResult.Visibility = Visibility.Collapsed; - } - } - - #endregion - - public MainWindow() - { - InitializeComponent(); - ThreadPool.SetMaxThreads(30, 10); - ThreadPool.SetMinThreads(10, 5); - - WebRequest.RegisterPrefix("data", new DataWebRequestFactory()); - GlobalHotkey.Instance.hookedKeyboardCallback += KListener_hookedKeyboardCallback; - progressBar.ToolTip = toolTip; - InitialTray(); - pnlResult.LeftMouseClickEvent += SelectResult; - pnlResult.ItemDropEvent += pnlResult_ItemDropEvent; - pnlContextMenu.LeftMouseClickEvent += SelectResult; - pnlResult.RightMouseClickEvent += pnlResult_RightMouseClickEvent; - - ThemeManager.Theme.ChangeTheme(UserSettingStorage.Instance.Theme); - InternationalizationManager.Instance.ChangeLanguage(UserSettingStorage.Instance.Language); - - SetHotkey(UserSettingStorage.Instance.Hotkey, OnHotkey); - SetCustomPluginHotkey(); - - Closing += MainWindow_Closing; - //since MainWIndow implement IPublicAPI, so we need to finish ctor MainWindow object before - //PublicAPI invoke in plugin init methods. E.g FolderPlugin - ThreadPool.QueueUserWorkItem(o => - { - Thread.Sleep(50); - PluginManager.Init(this); - }); - ThreadPool.QueueUserWorkItem(o => - { - Thread.Sleep(50); - PreLoadImages(); - }); - } - - void pnlResult_ItemDropEvent(Result result, IDataObject dropDataObject, DragEventArgs args) - { - PluginPair pluginPair = PluginManager.AllPlugins.FirstOrDefault(o => o.Metadata.ID == result.PluginID); - if (ResultItemDropEvent != null && pluginPair != null) - { - foreach (var delegateHandler in ResultItemDropEvent.GetInvocationList()) - { - if (delegateHandler.Target == pluginPair.Plugin) - { - delegateHandler.DynamicInvoke(result, dropDataObject, args); - } - } - } - } - - private bool KListener_hookedKeyboardCallback(KeyEvent keyevent, int vkcode, SpecialKeyState state) - { - if (GlobalKeyboardEvent != null) - { - return GlobalKeyboardEvent((int)keyevent, vkcode, state); - } - return true; - } - - private void PreLoadImages() - { - ImageLoader.ImageLoader.PreloadImages(); - } - - void pnlResult_RightMouseClickEvent(Result result) - { - ShowContextMenuFromResult(result); - } - - void MainWindow_Closing(object sender, CancelEventArgs e) - { - UserSettingStorage.Instance.WindowLeft = Left; - UserSettingStorage.Instance.WindowTop = Top; - UserSettingStorage.Instance.Save(); - this.HideWox(); - e.Cancel = true; - } - - private void MainWindow_OnLoaded(object sender, RoutedEventArgs e) - { - if (UserSettingStorage.Instance.WindowLeft == 0 - && UserSettingStorage.Instance.WindowTop == 0) - { - Left = UserSettingStorage.Instance.WindowLeft - = (SystemParameters.PrimaryScreenWidth - ActualWidth) / 2; - Top = UserSettingStorage.Instance.WindowTop - = (SystemParameters.PrimaryScreenHeight - ActualHeight) / 5; - } - else - { - Left = UserSettingStorage.Instance.WindowLeft; - Top = UserSettingStorage.Instance.WindowTop; - } - - InitProgressbarAnimation(); - WindowIntelopHelper.DisableControlBox(this); - CheckUpdate(); - } - - private void CheckUpdate() - { - UpdaterManager.Instance.PrepareUpdateReady += OnPrepareUpdateReady; - UpdaterManager.Instance.UpdateError += OnUpdateError; - UpdaterManager.Instance.CheckUpdate(); - } - - void OnUpdateError(object sender, EventArgs e) - { - string updateError = InternationalizationManager.Instance.GetTranslation("update_wox_update_error"); - MessageBox.Show(updateError); - } - - private void OnPrepareUpdateReady(object sender, EventArgs e) - { - Dispatcher.Invoke(new Action(() => - { - new WoxUpdate().ShowDialog(); - })); - } - - public void SetHotkey(string hotkeyStr, EventHandler action) - { - var hotkey = new HotkeyModel(hotkeyStr); - try - { - HotkeyManager.Current.AddOrReplace(hotkeyStr, hotkey.CharKey, hotkey.ModifierKeys, action); - } - catch (Exception) - { - string errorMsg = string.Format(InternationalizationManager.Instance.GetTranslation("registerHotkeyFailed"), hotkeyStr); - MessageBox.Show(errorMsg); - } - } - - public void RemoveHotkey(string hotkeyStr) - { - if (!string.IsNullOrEmpty(hotkeyStr)) - { - HotkeyManager.Current.Remove(hotkeyStr); - } - } - - private void SetCustomPluginHotkey() - { - if (UserSettingStorage.Instance.CustomPluginHotkeys == null) return; - foreach (CustomPluginHotkey hotkey in UserSettingStorage.Instance.CustomPluginHotkeys) - { - CustomPluginHotkey hotkey1 = hotkey; - SetHotkey(hotkey.Hotkey, delegate - { - ShowApp(); - ChangeQuery(hotkey1.ActionKeyword, true); - }); - } - } - - private void OnHotkey(object sender, HotkeyEventArgs e) - { - ToggleWox(); - e.Handled = true; - } - - public void ToggleWox() - { - if (!IsVisible) - { - ShowWox(); - } - else - { - HideWox(); - } - } - - private void InitProgressbarAnimation() - { - var da = new DoubleAnimation(progressBar.X2, ActualWidth + 100, new Duration(new TimeSpan(0, 0, 0, 0, 1600))); - var da1 = new DoubleAnimation(progressBar.X1, ActualWidth, new Duration(new TimeSpan(0, 0, 0, 0, 1600))); - Storyboard.SetTargetProperty(da, new PropertyPath("(Line.X2)")); - Storyboard.SetTargetProperty(da1, new PropertyPath("(Line.X1)")); - progressBarStoryboard.Children.Add(da); - progressBarStoryboard.Children.Add(da1); - progressBarStoryboard.RepeatBehavior = RepeatBehavior.Forever; - progressBar.Visibility = Visibility.Hidden; - progressBar.BeginStoryboard(progressBarStoryboard); - } - - private void InitialTray() - { - notifyIcon = new NotifyIcon { Text = "Wox", Icon = Properties.Resources.app, Visible = true }; - notifyIcon.Click += (o, e) => ShowWox(); - var open = new MenuItem("Open"); - open.Click += (o, e) => ShowWox(); - var setting = new MenuItem("Settings"); - setting.Click += (o, e) => OpenSettingDialog(); - var exit = new MenuItem("Exit"); - exit.Click += (o, e) => CloseApp(); - MenuItem[] childen = { open, setting, exit }; - notifyIcon.ContextMenu = new ContextMenu(childen); - } - - private void TextBoxBase_OnTextChanged(object sender, TextChangedEventArgs e) - { - if (ignoreTextChange) { ignoreTextChange = false; return; } - - lastQuery = tbQuery.Text; - toolTip.IsOpen = false; - pnlResult.Dirty = true; - int searchDelay = GetSearchDelay(lastQuery); - - Dispatcher.DelayInvoke("UpdateSearch", - o => - { - Dispatcher.DelayInvoke("ClearResults", i => - { - // first try to use clear method inside pnlResult, which is more closer to the add new results - // and this will not bring splash issues.After waiting 100ms, if there still no results added, we - // must clear the result. otherwise, it will be confused why the query changed, but the results - // didn't. - if (pnlResult.Dirty) pnlResult.Clear(); - }, TimeSpan.FromMilliseconds(100), null); - queryHasReturn = false; - Query query = new Query(lastQuery); - query.IsIntantQuery = searchDelay == 0; - FireBeforeWoxQueryEvent(query); - Query(query); - Dispatcher.DelayInvoke("ShowProgressbar", originQuery => - { - if (!queryHasReturn && originQuery == tbQuery.Text && !string.IsNullOrEmpty(lastQuery)) - { - StartProgress(); - } - }, TimeSpan.FromMilliseconds(150), tbQuery.Text); - FireAfterWoxQueryEvent(query); - }, TimeSpan.FromMilliseconds(searchDelay)); - } - - private int GetSearchDelay(string query) - { - if (!string.IsNullOrEmpty(query) && PluginManager.IsInstantQuery(query)) - { - DebugHelper.WriteLine("execute query without delay"); - return 0; - } - - DebugHelper.WriteLine("execute query with 200ms delay"); - return 200; - } - - private void FireAfterWoxQueryEvent(Query q) - { - if (AfterWoxQueryEvent != null) - { - //We shouldn't let those events slow down real query - //so I put it in the new thread - ThreadPool.QueueUserWorkItem(o => - { - AfterWoxQueryEvent(new WoxQueryEventArgs() - { - Query = q - }); - }); - } - } - - private void FireBeforeWoxQueryEvent(Query q) - { - if (BeforeWoxQueryEvent != null) - { - //We shouldn't let those events slow down real query - //so I put it in the new thread - ThreadPool.QueueUserWorkItem(o => - { - BeforeWoxQueryEvent(new WoxQueryEventArgs() - { - Query = q - }); - }); - } - } - - private void Query(Query q) - { - PluginManager.Query(q); - StopProgress(); - BackToResultMode(); - } - - private void BackToResultMode() - { - pnlResult.Visibility = Visibility.Visible; - pnlContextMenu.Visibility = Visibility.Collapsed; - } - - private void Border_OnMouseDown(object sender, MouseButtonEventArgs e) - { - if (e.ChangedButton == MouseButton.Left) DragMove(); - } - - private void StartProgress() - { - progressBar.Visibility = Visibility.Visible; - } - - private void StopProgress() - { - progressBar.Visibility = Visibility.Hidden; - } - - private void HideWox() - { - Hide(); - } - - private void ShowWox(bool selectAll = true) - { - UserSettingStorage.Instance.IncreaseActivateTimes(); - if (!double.IsNaN(Left) && !double.IsNaN(Top)) - { - var origScreen = Screen.FromRectangle(new Rectangle((int)Left, (int)Top, (int)ActualWidth, (int)ActualHeight)); - var screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position); - var coordX = (Left - origScreen.WorkingArea.Left) / (origScreen.WorkingArea.Width - ActualWidth); - var coordY = (Top - origScreen.WorkingArea.Top) / (origScreen.WorkingArea.Height - ActualHeight); - Left = (screen.WorkingArea.Width - ActualWidth) * coordX + screen.WorkingArea.Left; - Top = (screen.WorkingArea.Height - ActualHeight) * coordY + screen.WorkingArea.Top; - } - - Show(); - Activate(); - Focus(); - tbQuery.Focus(); - if (selectAll) tbQuery.SelectAll(); - } - - private void MainWindow_OnDeactivated(object sender, EventArgs e) - { - if (UserSettingStorage.Instance.HideWhenDeactive) - { - HideWox(); - } - } - - private void TbQuery_OnPreviewKeyDown(object sender, KeyEventArgs e) - { - //when alt is pressed, the real key should be e.SystemKey - Key key = (e.Key == Key.System ? e.SystemKey : e.Key); - switch (key) - { - case Key.Escape: - if (IsInContextMenuMode) - { - BackToResultMode(); - } - else - { - HideWox(); - } - e.Handled = true; - break; - - case Key.Tab: - if (GlobalHotkey.Instance.CheckModifiers().ShiftPressed) - { - SelectPrevItem(); - } - else - { - SelectNextItem(); - } - e.Handled = true; - break; - - case Key.N: - case Key.J: - if (GlobalHotkey.Instance.CheckModifiers().CtrlPressed) - { - SelectNextItem(); - } - break; - - case Key.P: - case Key.K: - if (GlobalHotkey.Instance.CheckModifiers().CtrlPressed) - { - SelectPrevItem(); - } - break; - - case Key.O: - if (GlobalHotkey.Instance.CheckModifiers().CtrlPressed) - { - if (IsInContextMenuMode) - { - BackToResultMode(); - } - else - { - ShowContextMenuFromResult(GetActiveResult()); - } - } - break; - - case Key.Down: - SelectNextItem(); - e.Handled = true; - break; - - case Key.Up: - SelectPrevItem(); - e.Handled = true; - break; - - case Key.D: - if (GlobalHotkey.Instance.CheckModifiers().CtrlPressed) - { - pnlResult.SelectNextPage(); - } - break; - - case Key.PageDown: - pnlResult.SelectNextPage(); - e.Handled = true; - break; - - case Key.U: - if (GlobalHotkey.Instance.CheckModifiers().CtrlPressed) - { - pnlResult.SelectPrevPage(); - } - break; - - case Key.PageUp: - pnlResult.SelectPrevPage(); - e.Handled = true; - break; - - case Key.Back: - if (BackKeyDownEvent != null) - { - BackKeyDownEvent(new WoxKeyDownEventArgs() - { - Query = tbQuery.Text, - keyEventArgs = e - }); - } - break; - - case Key.F1: - Process.Start("http://doc.getwox.com"); - break; - - case Key.Enter: - Result activeResult = GetActiveResult(); - if (GlobalHotkey.Instance.CheckModifiers().ShiftPressed) - { - ShowContextMenuFromResult(activeResult); - } - else - { - SelectResult(activeResult); - } - e.Handled = true; - break; - - case Key.D1: - SelectItem(1); - break; - - case Key.D2: - SelectItem(2); - break; - - case Key.D3: - SelectItem(3); - break; - - case Key.D4: - SelectItem(4); - break; - - case Key.D5: - SelectItem(5); - break; - case Key.D6: - SelectItem(6); - break; - - } - } - - private void SelectItem(int index) - { - int zeroBasedIndex = index - 1; - SpecialKeyState keyState = GlobalHotkey.Instance.CheckModifiers(); - if (keyState.AltPressed || keyState.CtrlPressed) - { - List visibleResults = pnlResult.GetVisibleResults(); - if (zeroBasedIndex < visibleResults.Count) - { - SelectResult(visibleResults[zeroBasedIndex]); - } - } - } - - private bool IsInContextMenuMode - { - get { return pnlContextMenu.Visibility == Visibility.Visible; } - } - - private Result GetActiveResult() - { - if (IsInContextMenuMode) - { - return pnlContextMenu.GetActiveResult(); - } - else - { - return pnlResult.GetActiveResult(); - } - } - - private void SelectPrevItem() - { - if (IsInContextMenuMode) - { - pnlContextMenu.SelectPrev(); - } - else - { - pnlResult.SelectPrev(); - } - toolTip.IsOpen = false; - } - - private void SelectNextItem() - { - if (IsInContextMenuMode) - { - pnlContextMenu.SelectNext(); - } - else - { - pnlResult.SelectNext(); - } - toolTip.IsOpen = false; - } - - private void SelectResult(Result result) - { - if (result != null) - { - if (result.Action != null) - { - bool hideWindow = result.Action(new ActionContext() - { - SpecialKeyState = GlobalHotkey.Instance.CheckModifiers() - }); - if (hideWindow) - { - HideWox(); - } - UserSelectedRecordStorage.Instance.Add(result); - } - } - } - - private void UpdateResultView(List list) - { - queryHasReturn = true; - progressBar.Dispatcher.Invoke(new Action(StopProgress)); - if (list == null || list.Count == 0) return; - - if (list.Count > 0) - { - list.ForEach(o => - { - o.Score += UserSelectedRecordStorage.Instance.GetSelectedCount(o) * 5; - if (o.ContextMenu == null) - { - o.ContextMenu = new List(); - } - HanleTopMost(o); - }); - List l = list.Where(o => o.OriginQuery != null && o.OriginQuery.RawQuery == lastQuery).ToList(); - Dispatcher.Invoke(new Action(() => - { - pnlResult.AddResults(l); - })); - } - } - - private void HanleTopMost(Result result) - { - if (TopMostRecordStorage.Instance.IsTopMost(result)) - { - result.ContextMenu.Add(new Result("Remove top most in this query", "Images\\down.png") - { - PluginDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), - Action = _ => - { - TopMostRecordStorage.Instance.Remove(result); - ShowMsg("Succeed", "", ""); - return false; - } - }); - } - else - { - result.ContextMenu.Add(new Result("Set as top most in this query", "Images\\up.png") - { - PluginDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), - Action = _ => - { - TopMostRecordStorage.Instance.Add(result); - ShowMsg("Succeed", "", ""); - return false; - } - }); - } - } - - private void ShowContextMenuFromResult(Result result) - { - if (result.ContextMenu != null && result.ContextMenu.Count > 0) - { - pnlContextMenu.Clear(); - pnlContextMenu.AddResults(result.ContextMenu); - pnlContextMenu.Visibility = Visibility.Visible; - pnlResult.Visibility = Visibility.Collapsed; - } - } - - public bool ShellRun(string cmd, bool runAsAdministrator = false) - { - try - { - if (string.IsNullOrEmpty(cmd)) - throw new ArgumentNullException(); - - WindowsShellRun.Start(cmd, runAsAdministrator); - return true; - } - catch (Exception ex) - { - string errorMsg = string.Format(InternationalizationManager.Instance.GetTranslation("couldnotStartCmd"), cmd); - ShowMsg(errorMsg, ex.Message, null); - } - return false; - } - - private void MainWindow_OnDrop(object sender, DragEventArgs e) - { - if (e.Data.GetDataPresent(DataFormats.FileDrop)) - { - // Note that you can have more than one file. - string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); - if (files[0].ToLower().EndsWith(".wox")) - { - PluginManager.InstallPlugin(files[0]); - } - else - { - MessageBox.Show(InternationalizationManager.Instance.GetTranslation("invalidWoxPluginFileFormat")); - } - } - } - - private void TbQuery_OnPreviewDragOver(object sender, DragEventArgs e) - { - e.Handled = true; - } - } -} \ No newline at end of file diff --git a/Wox/su54u2mz.xrz b/Wox/su54u2mz.xrz deleted file mode 100644 index b83197e8fe..0000000000 --- a/Wox/su54u2mz.xrz +++ /dev/null @@ -1,850 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Diagnostics; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Net; -using System.Reflection; -using System.Threading; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Forms; -using System.Windows.Input; -using System.Windows.Media.Animation; -using NHotkey; -using NHotkey.Wpf; -using Wox.Core.i18n; -using Wox.Core.Plugin; -using Wox.Core.Theme; -using Wox.Core.Updater; -using Wox.Core.UserSettings; -using Wox.Helper; -using Wox.Infrastructure; -using Wox.Infrastructure.Hotkey; -using Wox.Plugin; -using Wox.Storage; -using ContextMenu = System.Windows.Forms.ContextMenu; -using DataFormats = System.Windows.DataFormats; -using DragEventArgs = System.Windows.DragEventArgs; -using IDataObject = System.Windows.IDataObject; -using KeyEventArgs = System.Windows.Input.KeyEventArgs; -using MenuItem = System.Windows.Forms.MenuItem; -using MessageBox = System.Windows.MessageBox; -using ToolTip = System.Windows.Controls.ToolTip; - -namespace Wox -{ - public partial class MainWindow : IPublicAPI - { - - #region Properties - - private readonly Storyboard progressBarStoryboard = new Storyboard(); - private NotifyIcon notifyIcon; - private bool queryHasReturn; - private string lastQuery; - private ToolTip toolTip = new ToolTip(); - - private bool ignoreTextChange = false; - - #endregion - - #region Public API - - public void ChangeQuery(string query, bool requery = false) - { - Dispatcher.Invoke(new Action(() => - { - tbQuery.Text = query; - tbQuery.CaretIndex = tbQuery.Text.Length; - if (requery) - { - TextBoxBase_OnTextChanged(null, null); - } - })); - } - - public void CloseApp() - { - Dispatcher.Invoke(new Action(() => - { - notifyIcon.Visible = false; - Close(); - Environment.Exit(0); - })); - } - - public void HideApp() - { - Dispatcher.Invoke(new Action(HideWox)); - } - - public void ShowApp() - { - Dispatcher.Invoke(new Action(() => ShowWox())); - } - - public void ShowMsg(string title, string subTitle, string iconPath) - { - Dispatcher.Invoke(new Action(() => - { - var m = new Msg { Owner = GetWindow(this) }; - m.Show(title, subTitle, iconPath); - })); - } - - public void OpenSettingDialog() - { - Dispatcher.Invoke(new Action(() => WindowOpener.Open(this))); - } - - public void StartLoadingBar() - { - Dispatcher.Invoke(new Action(StartProgress)); - } - - public void StopLoadingBar() - { - Dispatcher.Invoke(new Action(StopProgress)); - } - - public void InstallPlugin(string path) - { - Dispatcher.Invoke(new Action(() => PluginManager.InstallPlugin(path))); - } - - public void ReloadPlugins() - { - Dispatcher.Invoke(new Action(() => PluginManager.Init(this))); - } - - public string GetTranslation(string key) - { - return InternationalizationManager.Instance.GetTranslation(key); - } - - public List GetAllPlugins() - { - return PluginManager.AllPlugins; - } - - public event WoxKeyDownEventHandler BackKeyDownEvent; - public event WoxGlobalKeyboardEventHandler GlobalKeyboardEvent; - public event AfterWoxQueryEventHandler AfterWoxQueryEvent; - public event AfterWoxQueryEventHandler BeforeWoxQueryEvent; - public event ResultItemDropEventHandler ResultItemDropEvent; - - public void PushResults(Query query, PluginMetadata plugin, List results) - { - results.ForEach(o => - { - o.PluginDirectory = plugin.PluginDirectory; - o.PluginID = plugin.ID; - o.OriginQuery = query; - if (o.ContextMenu != null) - { - o.ContextMenu.ForEach(t => - { - t.PluginDirectory = plugin.PluginDirectory; - t.PluginID = plugin.ID; - }); - } - }); - UpdateResultView(results); - } - - public void ShowContextMenu(PluginMetadata plugin, List results) - { - if (results != null && results.Count > 0) - { - results.ForEach(o => - { - o.PluginDirectory = plugin.PluginDirectory; - o.PluginID = plugin.ID; - o.ContextMenu = null; - }); - pnlContextMenu.Clear(); - pnlContextMenu.AddResults(results); - pnlContextMenu.Visibility = Visibility.Visible; - pnlResult.Visibility = Visibility.Collapsed; - } - } - - #endregion - - public MainWindow() - { - InitializeComponent(); - ThreadPool.SetMaxThreads(30, 10); - ThreadPool.SetMinThreads(10, 5); - - WebRequest.RegisterPrefix("data", new DataWebRequestFactory()); - GlobalHotkey.Instance.hookedKeyboardCallback += KListener_hookedKeyboardCallback; - progressBar.ToolTip = toolTip; - InitialTray(); - pnlResult.LeftMouseClickEvent += SelectResult; - pnlResult.ItemDropEvent += pnlResult_ItemDropEvent; - pnlContextMenu.LeftMouseClickEvent += SelectResult; - pnlResult.RightMouseClickEvent += pnlResult_RightMouseClickEvent; - - ThemeManager.Theme.ChangeTheme(UserSettingStorage.Instance.Theme); - InternationalizationManager.Instance.ChangeLanguage(UserSettingStorage.Instance.Language); - - SetHotkey(UserSettingStorage.Instance.Hotkey, OnHotkey); - SetCustomPluginHotkey(); - - Closing += MainWindow_Closing; - //since MainWIndow implement IPublicAPI, so we need to finish ctor MainWindow object before - //PublicAPI invoke in plugin init methods. E.g FolderPlugin - ThreadPool.QueueUserWorkItem(o => - { - Thread.Sleep(50); - PluginManager.Init(this); - }); - ThreadPool.QueueUserWorkItem(o => - { - Thread.Sleep(50); - PreLoadImages(); - }); - } - - void pnlResult_ItemDropEvent(Result result, IDataObject dropDataObject, DragEventArgs args) - { - PluginPair pluginPair = PluginManager.AllPlugins.FirstOrDefault(o => o.Metadata.ID == result.PluginID); - if (ResultItemDropEvent != null && pluginPair != null) - { - foreach (var delegateHandler in ResultItemDropEvent.GetInvocationList()) - { - if (delegateHandler.Target == pluginPair.Plugin) - { - delegateHandler.DynamicInvoke(result, dropDataObject, args); - } - } - } - } - - private bool KListener_hookedKeyboardCallback(KeyEvent keyevent, int vkcode, SpecialKeyState state) - { - if (GlobalKeyboardEvent != null) - { - return GlobalKeyboardEvent((int)keyevent, vkcode, state); - } - return true; - } - - private void PreLoadImages() - { - ImageLoader.ImageLoader.PreloadImages(); - } - - void pnlResult_RightMouseClickEvent(Result result) - { - ShowContextMenuFromResult(result); - } - - void MainWindow_Closing(object sender, CancelEventArgs e) - { - UserSettingStorage.Instance.WindowLeft = Left; - UserSettingStorage.Instance.WindowTop = Top; - UserSettingStorage.Instance.Save(); - this.HideWox(); - e.Cancel = true; - } - - private void MainWindow_OnLoaded(object sender, RoutedEventArgs e) - { - if (UserSettingStorage.Instance.WindowLeft == 0 - && UserSettingStorage.Instance.WindowTop == 0) - { - Left = UserSettingStorage.Instance.WindowLeft - = (SystemParameters.PrimaryScreenWidth - ActualWidth) / 2; - Top = UserSettingStorage.Instance.WindowTop - = (SystemParameters.PrimaryScreenHeight - ActualHeight) / 5; - } - else - { - Left = UserSettingStorage.Instance.WindowLeft; - Top = UserSettingStorage.Instance.WindowTop; - } - - InitProgressbarAnimation(); - WindowIntelopHelper.DisableControlBox(this); - CheckUpdate(); - } - - private void CheckUpdate() - { - UpdaterManager.Instance.PrepareUpdateReady += OnPrepareUpdateReady; - UpdaterManager.Instance.UpdateError += OnUpdateError; - UpdaterManager.Instance.CheckUpdate(); - } - - void OnUpdateError(object sender, EventArgs e) - { - string updateError = InternationalizationManager.Instance.GetTranslation("update_wox_update_error"); - MessageBox.Show(updateError); - } - - private void OnPrepareUpdateReady(object sender, EventArgs e) - { - Dispatcher.Invoke(new Action(() => - { - new WoxUpdate().ShowDialog(); - })); - } - - public void SetHotkey(string hotkeyStr, EventHandler action) - { - var hotkey = new HotkeyModel(hotkeyStr); - try - { - HotkeyManager.Current.AddOrReplace(hotkeyStr, hotkey.CharKey, hotkey.ModifierKeys, action); - } - catch (Exception) - { - string errorMsg = string.Format(InternationalizationManager.Instance.GetTranslation("registerHotkeyFailed"), hotkeyStr); - MessageBox.Show(errorMsg); - } - } - - public void RemoveHotkey(string hotkeyStr) - { - if (!string.IsNullOrEmpty(hotkeyStr)) - { - HotkeyManager.Current.Remove(hotkeyStr); - } - } - - private void SetCustomPluginHotkey() - { - if (UserSettingStorage.Instance.CustomPluginHotkeys == null) return; - foreach (CustomPluginHotkey hotkey in UserSettingStorage.Instance.CustomPluginHotkeys) - { - CustomPluginHotkey hotkey1 = hotkey; - SetHotkey(hotkey.Hotkey, delegate - { - ShowApp(); - ChangeQuery(hotkey1.ActionKeyword, true); - }); - } - } - - private void OnHotkey(object sender, HotkeyEventArgs e) - { - ToggleWox(); - e.Handled = true; - } - - public void ToggleWox() - { - if (!IsVisible) - { - ShowWox(); - } - else - { - HideWox(); - } - } - - private void InitProgressbarAnimation() - { - var da = new DoubleAnimation(progressBar.X2, ActualWidth + 100, new Duration(new TimeSpan(0, 0, 0, 0, 1600))); - var da1 = new DoubleAnimation(progressBar.X1, ActualWidth, new Duration(new TimeSpan(0, 0, 0, 0, 1600))); - Storyboard.SetTargetProperty(da, new PropertyPath("(Line.X2)")); - Storyboard.SetTargetProperty(da1, new PropertyPath("(Line.X1)")); - progressBarStoryboard.Children.Add(da); - progressBarStoryboard.Children.Add(da1); - progressBarStoryboard.RepeatBehavior = RepeatBehavior.Forever; - progressBar.Visibility = Visibility.Hidden; - progressBar.BeginStoryboard(progressBarStoryboard); - } - - private void InitialTray() - { - notifyIcon = new NotifyIcon { Text = "Wox", Icon = Properties.Resources.app, Visible = true }; - notifyIcon.Click += (o, e) => ShowWox(); - var open = new MenuItem("Open"); - open.Click += (o, e) => ShowWox(); - var setting = new MenuItem("Settings"); - setting.Click += (o, e) => OpenSettingDialog(); - var exit = new MenuItem("Exit"); - exit.Click += (o, e) => CloseApp(); - MenuItem[] childen = { open, setting, exit }; - notifyIcon.ContextMenu = new ContextMenu(childen); - } - - private void TextBoxBase_OnTextChanged(object sender, TextChangedEventArgs e) - { - if (ignoreTextChange) { ignoreTextChange = false; return; } - - lastQuery = tbQuery.Text; - toolTip.IsOpen = false; - pnlResult.Dirty = true; - int searchDelay = GetSearchDelay(lastQuery); - - Dispatcher.DelayInvoke("UpdateSearch", - o => - { - Dispatcher.DelayInvoke("ClearResults", i => - { - // first try to use clear method inside pnlResult, which is more closer to the add new results - // and this will not bring splash issues.After waiting 100ms, if there still no results added, we - // must clear the result. otherwise, it will be confused why the query changed, but the results - // didn't. - if (pnlResult.Dirty) pnlResult.Clear(); - }, TimeSpan.FromMilliseconds(100), null); - queryHasReturn = false; - Query query = new Query(lastQuery); - query.IsIntantQuery = searchDelay == 0; - FireBeforeWoxQueryEvent(query); - Query(query); - Dispatcher.DelayInvoke("ShowProgressbar", originQuery => - { - if (!queryHasReturn && originQuery == tbQuery.Text && !string.IsNullOrEmpty(lastQuery)) - { - StartProgress(); - } - }, TimeSpan.FromMilliseconds(150), tbQuery.Text); - FireAfterWoxQueryEvent(query); - }, TimeSpan.FromMilliseconds(searchDelay)); - } - - private int GetSearchDelay(string query) - { - if (!string.IsNullOrEmpty(query) && PluginManager.IsInstantQuery(query)) - { - DebugHelper.WriteLine("execute query without delay"); - return 0; - } - - DebugHelper.WriteLine("execute query with 200ms delay"); - return 200; - } - - private void FireAfterWoxQueryEvent(Query q) - { - if (AfterWoxQueryEvent != null) - { - //We shouldn't let those events slow down real query - //so I put it in the new thread - ThreadPool.QueueUserWorkItem(o => - { - AfterWoxQueryEvent(new WoxQueryEventArgs() - { - Query = q - }); - }); - } - } - - private void FireBeforeWoxQueryEvent(Query q) - { - if (BeforeWoxQueryEvent != null) - { - //We shouldn't let those events slow down real query - //so I put it in the new thread - ThreadPool.QueueUserWorkItem(o => - { - BeforeWoxQueryEvent(new WoxQueryEventArgs() - { - Query = q - }); - }); - } - } - - private void Query(Query q) - { - PluginManager.Query(q); - StopProgress(); - BackToResultMode(); - } - - private void BackToResultMode() - { - pnlResult.Visibility = Visibility.Visible; - pnlContextMenu.Visibility = Visibility.Collapsed; - } - - private void Border_OnMouseDown(object sender, MouseButtonEventArgs e) - { - if (e.ChangedButton == MouseButton.Left) DragMove(); - } - - private void StartProgress() - { - progressBar.Visibility = Visibility.Visible; - } - - private void StopProgress() - { - progressBar.Visibility = Visibility.Hidden; - } - - private void HideWox() - { - Hide(); - } - - private void ShowWox(bool selectAll = true) - { - UserSettingStorage.Instance.IncreaseActivateTimes(); - if (!double.IsNaN(Left) && !double.IsNaN(Top)) - { - var origScreen = Screen.FromRectangle(new Rectangle((int)Left, (int)Top, (int)ActualWidth, (int)ActualHeight)); - var screen = Screen.FromPoint(System.Windows.Forms.Cursor.Position); - var coordX = (Left - origScreen.WorkingArea.Left) / (origScreen.WorkingArea.Width - ActualWidth); - var coordY = (Top - origScreen.WorkingArea.Top) / (origScreen.WorkingArea.Height - ActualHeight); - Left = (screen.WorkingArea.Width - ActualWidth) * coordX + screen.WorkingArea.Left; - Top = (screen.WorkingArea.Height - ActualHeight) * coordY + screen.WorkingArea.Top; - } - - Show(); - Activate(); - Focus(); - tbQuery.Focus(); - if (selectAll) tbQuery.SelectAll(); - } - - private void MainWindow_OnDeactivated(object sender, EventArgs e) - { - if (UserSettingStorage.Instance.HideWhenDeactive) - { - HideWox(); - } - } - - private void TbQuery_OnPreviewKeyDown(object sender, KeyEventArgs e) - { - //when alt is pressed, the real key should be e.SystemKey - Key key = (e.Key == Key.System ? e.SystemKey : e.Key); - switch (key) - { - case Key.Escape: - if (IsInContextMenuMode) - { - BackToResultMode(); - } - else - { - HideWox(); - } - e.Handled = true; - break; - - case Key.Tab: - if (GlobalHotkey.Instance.CheckModifiers().ShiftPressed) - { - SelectPrevItem(); - } - else - { - SelectNextItem(); - } - e.Handled = true; - break; - - case Key.N: - case Key.J: - if (GlobalHotkey.Instance.CheckModifiers().CtrlPressed) - { - SelectNextItem(); - } - break; - - case Key.P: - case Key.K: - if (GlobalHotkey.Instance.CheckModifiers().CtrlPressed) - { - SelectPrevItem(); - } - break; - - case Key.O: - if (GlobalHotkey.Instance.CheckModifiers().CtrlPressed) - { - if (IsInContextMenuMode) - { - BackToResultMode(); - } - else - { - ShowContextMenuFromResult(GetActiveResult()); - } - } - break; - - case Key.Down: - SelectNextItem(); - e.Handled = true; - break; - - case Key.Up: - SelectPrevItem(); - e.Handled = true; - break; - - case Key.D: - if (GlobalHotkey.Instance.CheckModifiers().AltPressed) - { - pnlResult.SelectNextPage(); - } - break; - - case Key.PageDown: - pnlResult.SelectNextPage(); - e.Handled = true; - break; - - case Key.U: - if (GlobalHotkey.Instance.CheckModifiers().AltPressed) - { - pnlResult.SelectPrevPage(); - } - break; - - case Key.PageUp: - pnlResult.SelectPrevPage(); - e.Handled = true; - break; - - case Key.Back: - if (BackKeyDownEvent != null) - { - BackKeyDownEvent(new WoxKeyDownEventArgs() - { - Query = tbQuery.Text, - keyEventArgs = e - }); - } - break; - - case Key.F1: - Process.Start("http://doc.getwox.com"); - break; - - case Key.Enter: - Result activeResult = GetActiveResult(); - if (GlobalHotkey.Instance.CheckModifiers().ShiftPressed) - { - ShowContextMenuFromResult(activeResult); - } - else - { - SelectResult(activeResult); - } - e.Handled = true; - break; - - case Key.D1: - SelectItem(1); - break; - - case Key.D2: - SelectItem(2); - break; - - case Key.D3: - SelectItem(3); - break; - - case Key.D4: - SelectItem(4); - break; - - case Key.D5: - SelectItem(5); - break; - case Key.D6: - SelectItem(6); - break; - - } - } - - private void SelectItem(int index) - { - int zeroBasedIndex = index - 1; - SpecialKeyState keyState = GlobalHotkey.Instance.CheckModifiers(); - if (keyState.AltPressed || keyState.CtrlPressed) - { - List visibleResults = pnlResult.GetVisibleResults(); - if (zeroBasedIndex < visibleResults.Count) - { - SelectResult(visibleResults[zeroBasedIndex]); - } - } - } - - private bool IsInContextMenuMode - { - get { return pnlContextMenu.Visibility == Visibility.Visible; } - } - - private Result GetActiveResult() - { - if (IsInContextMenuMode) - { - return pnlContextMenu.GetActiveResult(); - } - else - { - return pnlResult.GetActiveResult(); - } - } - - private void SelectPrevItem() - { - if (IsInContextMenuMode) - { - pnlContextMenu.SelectPrev(); - } - else - { - pnlResult.SelectPrev(); - } - toolTip.IsOpen = false; - } - - private void SelectNextItem() - { - if (IsInContextMenuMode) - { - pnlContextMenu.SelectNext(); - } - else - { - pnlResult.SelectNext(); - } - toolTip.IsOpen = false; - } - - private void SelectResult(Result result) - { - if (result != null) - { - if (result.Action != null) - { - bool hideWindow = result.Action(new ActionContext() - { - SpecialKeyState = GlobalHotkey.Instance.CheckModifiers() - }); - if (hideWindow) - { - HideWox(); - } - UserSelectedRecordStorage.Instance.Add(result); - } - } - } - - private void UpdateResultView(List list) - { - queryHasReturn = true; - progressBar.Dispatcher.Invoke(new Action(StopProgress)); - if (list == null || list.Count == 0) return; - - if (list.Count > 0) - { - list.ForEach(o => - { - o.Score += UserSelectedRecordStorage.Instance.GetSelectedCount(o) * 5; - if (o.ContextMenu == null) - { - o.ContextMenu = new List(); - } - HanleTopMost(o); - }); - List l = list.Where(o => o.OriginQuery != null && o.OriginQuery.RawQuery == lastQuery).ToList(); - Dispatcher.Invoke(new Action(() => - { - pnlResult.AddResults(l); - })); - } - } - - private void HanleTopMost(Result result) - { - if (TopMostRecordStorage.Instance.IsTopMost(result)) - { - result.ContextMenu.Add(new Result("Remove top most in this query", "Images\\down.png") - { - PluginDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), - Action = _ => - { - TopMostRecordStorage.Instance.Remove(result); - ShowMsg("Succeed", "", ""); - return false; - } - }); - } - else - { - result.ContextMenu.Add(new Result("Set as top most in this query", "Images\\up.png") - { - PluginDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), - Action = _ => - { - TopMostRecordStorage.Instance.Add(result); - ShowMsg("Succeed", "", ""); - return false; - } - }); - } - } - - private void ShowContextMenuFromResult(Result result) - { - if (result.ContextMenu != null && result.ContextMenu.Count > 0) - { - pnlContextMenu.Clear(); - pnlContextMenu.AddResults(result.ContextMenu); - pnlContextMenu.Visibility = Visibility.Visible; - pnlResult.Visibility = Visibility.Collapsed; - } - } - - public bool ShellRun(string cmd, bool runAsAdministrator = false) - { - try - { - if (string.IsNullOrEmpty(cmd)) - throw new ArgumentNullException(); - - WindowsShellRun.Start(cmd, runAsAdministrator); - return true; - } - catch (Exception ex) - { - string errorMsg = string.Format(InternationalizationManager.Instance.GetTranslation("couldnotStartCmd"), cmd); - ShowMsg(errorMsg, ex.Message, null); - } - return false; - } - - private void MainWindow_OnDrop(object sender, DragEventArgs e) - { - if (e.Data.GetDataPresent(DataFormats.FileDrop)) - { - // Note that you can have more than one file. - string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); - if (files[0].ToLower().EndsWith(".wox")) - { - PluginManager.InstallPlugin(files[0]); - } - else - { - MessageBox.Show(InternationalizationManager.Instance.GetTranslation("invalidWoxPluginFileFormat")); - } - } - } - - private void TbQuery_OnPreviewDragOver(object sender, DragEventArgs e) - { - e.Handled = true; - } - } -} \ No newline at end of file From 734505ee7363aa4f873300ffd32e4ebea9ab4ea7 Mon Sep 17 00:00:00 2001 From: Boris Makogonyuk Date: Sun, 13 Dec 2015 21:43:58 +0100 Subject: [PATCH 02/15] Bugfix for issue #397 Wallpaper is not cached in Wox's memory, so that the wallpaper file remains unlocked --- Wox/SettingWindow.xaml.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Wox/SettingWindow.xaml.cs b/Wox/SettingWindow.xaml.cs index 36e8b7f3a1..f460fb5a73 100644 --- a/Wox/SettingWindow.xaml.cs +++ b/Wox/SettingWindow.xaml.cs @@ -425,7 +425,12 @@ namespace Wox var wallpaper = WallpaperPathRetrieval.GetWallpaperPath(); if (wallpaper != null && File.Exists(wallpaper)) { - var brush = new ImageBrush(new BitmapImage(new Uri(wallpaper))); + var memStream = new MemoryStream(File.ReadAllBytes(wallpaper)); + var bitmap = new BitmapImage(); + bitmap.BeginInit(); + bitmap.StreamSource = memStream; + bitmap.EndInit(); + var brush = new ImageBrush(bitmap); brush.Stretch = Stretch.UniformToFill; PreviewPanel.Background = brush; } From e40c1ff09ed0d938f5ebf3741e0a792dfb286953 Mon Sep 17 00:00:00 2001 From: bao-qian Date: Mon, 14 Dec 2015 00:29:13 +0000 Subject: [PATCH 03/15] Fix leave open option for cmd plugin Add "Wait for a key press before closing" option. See #141 for more info. --- Plugins/Wox.Plugin.CMD/CMD.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Plugins/Wox.Plugin.CMD/CMD.cs b/Plugins/Wox.Plugin.CMD/CMD.cs index 99b18559d8..6cd940396e 100644 --- a/Plugins/Wox.Plugin.CMD/CMD.cs +++ b/Plugins/Wox.Plugin.CMD/CMD.cs @@ -143,8 +143,12 @@ namespace Wox.Plugin.CMD private void ExecuteCmd(string cmd, bool runAsAdministrator = false) { - if (context.API.ShellRun(cmd, runAsAdministrator)) + var fullCmd = CMDStorage.Instance.LeaveCmdOpen ? $"cmd /k \"{cmd}\" & pause & exit" : cmd; + var success = context.API.ShellRun(fullCmd, runAsAdministrator); + if (success) + { CMDStorage.Instance.AddCmdHistory(cmd); + } } public void Init(PluginInitContext context) From 35522ae77daeb32a017670fe1d9a096285763ad2 Mon Sep 17 00:00:00 2001 From: bao-qian Date: Mon, 14 Dec 2015 00:19:53 +0000 Subject: [PATCH 04/15] Update demo --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 82639722aa..1f518ed8bc 100644 --- a/README.md +++ b/README.md @@ -2,11 +2,11 @@ Wox [![Build status](https://ci.appveyor.com/api/projects/status/bfktntbivg32e ========= [Wox](http://www.getwox.com/) is a launcher for Windows, an alternative to [Alfred](https://www.alfredapp.com/) or [Launchy](http://www.launchy.net/). You can launch everything with just a few keystrokes! -Screenshot +Demo ========= -More screenshots - +[More demo]("https://github.com/Wox-launcher/Wox/wiki/Screenshot") +![demo]("http://i.imgur.com/DtxNBJi.gifv") Features ========= From dccd240b66de3a8e85a33c5bacfdbfbda9d8fdc0 Mon Sep 17 00:00:00 2001 From: bao-qian Date: Mon, 14 Dec 2015 00:21:03 +0000 Subject: [PATCH 05/15] fixup --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1f518ed8bc..c870ebe139 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,8 @@ Wox [![Build status](https://ci.appveyor.com/api/projects/status/bfktntbivg32e Demo ========= -[More demo]("https://github.com/Wox-launcher/Wox/wiki/Screenshot") -![demo]("http://i.imgur.com/DtxNBJi.gifv") +[More demo](https://github.com/Wox-launcher/Wox/wiki/Screenshot) +![demo](http://i.imgur.com/DtxNBJi.gif) Features ========= From a860acaf0db3dd44f64e60c989a22399fe6ef6e9 Mon Sep 17 00:00:00 2001 From: bao-qian Date: Mon, 14 Dec 2015 10:32:45 +0000 Subject: [PATCH 06/15] Remove .net 4 compability --- Wox/App.config | 11 ----------- Wox/Wox.csproj | 3 --- 2 files changed, 14 deletions(-) delete mode 100644 Wox/App.config diff --git a/Wox/App.config b/Wox/App.config deleted file mode 100644 index e52b8a2014..0000000000 --- a/Wox/App.config +++ /dev/null @@ -1,11 +0,0 @@ - - - -
- - - - - - - \ No newline at end of file diff --git a/Wox/Wox.csproj b/Wox/Wox.csproj index 0452d92c3a..998a8f21a4 100644 --- a/Wox/Wox.csproj +++ b/Wox/Wox.csproj @@ -312,9 +312,6 @@ ResXFileCodeGenerator Resources.Designer.cs - - Designer - SettingsSingleFileGenerator Settings.Designer.cs From 35c819788110edefbd616c935511fed4b02fd0fc Mon Sep 17 00:00:00 2001 From: Bitdeli Chef Date: Tue, 15 Dec 2015 00:58:21 +0000 Subject: [PATCH 07/15] Add a Bitdeli badge to README --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index c870ebe139..e4006b0a18 100644 --- a/README.md +++ b/README.md @@ -43,3 +43,7 @@ Docs Full documentation can be found here [Wox doc](http://doc.getwox.com). This is a good place to start if you are installing Wox for the first time. In the future, all of the documentation will be moved back to Github wiki. + + +[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/Wox-launcher/wox/trend.png)](https://bitdeli.com/free "Bitdeli Badge") + From 3b50428f8274bc3293a3e2d918df79d29eea18cd Mon Sep 17 00:00:00 2001 From: bao-qian Date: Tue, 15 Dec 2015 00:55:06 +0000 Subject: [PATCH 08/15] Add downloads count --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e4006b0a18..103beea182 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Wox [![Build status](https://ci.appveyor.com/api/projects/status/bfktntbivg32e103)](https://ci.appveyor.com/project/qianlifeng/wox) [![Bountysource](https://www.bountysource.com/badge/team?team_id=39433&style=raised)](https://www.bountysource.com/teams/wox?utm_source=Wox&utm_medium=shield&utm_campaign=raised) [![Issue Stats](http://issuestats.com/github/Wox-launcher/Wox/badge/pr)](http://issuestats.com/github/Wox-launcher/Wox) +Wox [![Build status](https://ci.appveyor.com/api/projects/status/bfktntbivg32e103)](https://ci.appveyor.com/project/qianlifeng/wox) [![Bountysource](https://www.bountysource.com/badge/team?team_id=39433&style=raised)](https://www.bountysource.com/teams/wox?utm_source=Wox&utm_medium=shield&utm_campaign=raised) [![Issue Stats](http://issuestats.com/github/Wox-launcher/Wox/badge/pr)](http://issuestats.com/github/Wox-launcher/Wox) [![Github All Releases](https://img.shields.io/github/downloads/Wox-launcher/Wox/total.svg)]() ========= [Wox](http://www.getwox.com/) is a launcher for Windows, an alternative to [Alfred](https://www.alfredapp.com/) or [Launchy](http://www.launchy.net/). You can launch everything with just a few keystrokes! @@ -45,5 +45,8 @@ Full documentation can be found here [Wox doc](http://doc.getwox.com). This is a In the future, all of the documentation will be moved back to Github wiki. + +========= + [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/Wox-launcher/wox/trend.png)](https://bitdeli.com/free "Bitdeli Badge") From 6416fe1934c38a29535ec36b8c1243f8aadc1e12 Mon Sep 17 00:00:00 2001 From: bao-qian Date: Tue, 15 Dec 2015 00:57:38 +0000 Subject: [PATCH 09/15] Update link for badges --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 103beea182..b396cf7e93 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Wox [![Build status](https://ci.appveyor.com/api/projects/status/bfktntbivg32e103)](https://ci.appveyor.com/project/qianlifeng/wox) [![Bountysource](https://www.bountysource.com/badge/team?team_id=39433&style=raised)](https://www.bountysource.com/teams/wox?utm_source=Wox&utm_medium=shield&utm_campaign=raised) [![Issue Stats](http://issuestats.com/github/Wox-launcher/Wox/badge/pr)](http://issuestats.com/github/Wox-launcher/Wox) [![Github All Releases](https://img.shields.io/github/downloads/Wox-launcher/Wox/total.svg)]() +Wox [![Build status](https://ci.appveyor.com/api/projects/status/bfktntbivg32e103)](https://ci.appveyor.com/project/qianlifeng/wox) [![Bountysource](https://www.bountysource.com/badge/team?team_id=39433&style=raised)](https://www.bountysource.com/teams/wox?utm_source=Wox&utm_medium=shield&utm_campaign=raised) [![Issue Stats](http://issuestats.com/github/Wox-launcher/Wox/badge/pr)](http://issuestats.com/github/Wox-launcher/Wox) [![Github All Releases](https://img.shields.io/github/downloads/Wox-launcher/Wox/total.svg)](https://github.com/Wox-launcher/Wox/releases) ========= [Wox](http://www.getwox.com/) is a launcher for Windows, an alternative to [Alfred](https://www.alfredapp.com/) or [Launchy](http://www.launchy.net/). You can launch everything with just a few keystrokes! From 37f90e6f1c38a97b38a6dd4c7aef7ba071fa4f6e Mon Sep 17 00:00:00 2001 From: bao-qian Date: Tue, 15 Dec 2015 12:13:44 +0000 Subject: [PATCH 10/15] Update README.md download badges is not working. --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b396cf7e93..5ae22c8b6f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ -Wox [![Build status](https://ci.appveyor.com/api/projects/status/bfktntbivg32e103)](https://ci.appveyor.com/project/qianlifeng/wox) [![Bountysource](https://www.bountysource.com/badge/team?team_id=39433&style=raised)](https://www.bountysource.com/teams/wox?utm_source=Wox&utm_medium=shield&utm_campaign=raised) [![Issue Stats](http://issuestats.com/github/Wox-launcher/Wox/badge/pr)](http://issuestats.com/github/Wox-launcher/Wox) [![Github All Releases](https://img.shields.io/github/downloads/Wox-launcher/Wox/total.svg)](https://github.com/Wox-launcher/Wox/releases) +[![Build status](https://ci.appveyor.com/api/projects/status/bfktntbivg32e103)](https://ci.appveyor.com/project/qianlifeng/wox) +[![Bountysource](https://www.bountysource.com/badge/team?team_id=39433&style=raised)](https://www.bountysource.com/teams/wox?utm_source=Wox&utm_medium=shield&utm_campaign=raised) +[![Issue Stats](http://issuestats.com/github/Wox-launcher/Wox/badge/pr)](http://issuestats.com/github/Wox-launcher/Wox) + ========= -[Wox](http://www.getwox.com/) is a launcher for Windows, an alternative to [Alfred](https://www.alfredapp.com/) or [Launchy](http://www.launchy.net/). You can launch everything with just a few keystrokes! + +Wox is a launcher for Windows, an alternative to [Alfred](https://www.alfredapp.com/) and [Launchy](http://www.launchy.net/). You can launch everything with just a few keystrokes! Demo ========= From e5c6136950b82b2a0af032116622009c318bdf94 Mon Sep 17 00:00:00 2001 From: bao-qian Date: Tue, 15 Dec 2015 12:14:56 +0000 Subject: [PATCH 11/15] The bitdeli badge is useless --- README.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/README.md b/README.md index 5ae22c8b6f..3f68a71a70 100644 --- a/README.md +++ b/README.md @@ -47,10 +47,3 @@ Docs Full documentation can be found here [Wox doc](http://doc.getwox.com). This is a good place to start if you are installing Wox for the first time. In the future, all of the documentation will be moved back to Github wiki. - - - -========= - -[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/Wox-launcher/wox/trend.png)](https://bitdeli.com/free "Bitdeli Badge") - From cf15cb1e13d45adb242b383fb00d6c58b9119e2f Mon Sep 17 00:00:00 2001 From: bao-qian Date: Tue, 15 Dec 2015 20:40:25 +0000 Subject: [PATCH 12/15] Recover downloads count. --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 3f68a71a70..0ef583e462 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [![Build status](https://ci.appveyor.com/api/projects/status/bfktntbivg32e103)](https://ci.appveyor.com/project/qianlifeng/wox) [![Bountysource](https://www.bountysource.com/badge/team?team_id=39433&style=raised)](https://www.bountysource.com/teams/wox?utm_source=Wox&utm_medium=shield&utm_campaign=raised) [![Issue Stats](http://issuestats.com/github/Wox-launcher/Wox/badge/pr)](http://issuestats.com/github/Wox-launcher/Wox) - +[![Github All Releases](https://img.shields.io/github/downloads/Wox-launcher/Wox/total.svg)](https://github.com/Wox-launcher/Wox/releases) ========= Wox is a launcher for Windows, an alternative to [Alfred](https://www.alfredapp.com/) and [Launchy](http://www.launchy.net/). You can launch everything with just a few keystrokes! @@ -9,7 +9,6 @@ Wox is a launcher for Windows, an alternative to [Alfred](https://www.alfredapp. Demo ========= -[More demo](https://github.com/Wox-launcher/Wox/wiki/Screenshot) ![demo](http://i.imgur.com/DtxNBJi.gif) Features From 5761ede9e144384bfabdc27aba409e128db9af13 Mon Sep 17 00:00:00 2001 From: bao-qian Date: Tue, 15 Dec 2015 20:41:41 +0000 Subject: [PATCH 13/15] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0ef583e462..587483614f 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -[![Build status](https://ci.appveyor.com/api/projects/status/bfktntbivg32e103)](https://ci.appveyor.com/project/qianlifeng/wox) +[![Build status](https://ci.appveyor.com/api/projects/status/bfktntbivg32e103)](https://ci.appveyor.com/project/qianlifeng/wox) [![Github All Releases](https://img.shields.io/github/downloads/Wox-launcher/Wox/total.svg)](https://github.com/Wox-launcher/Wox/releases) [![Bountysource](https://www.bountysource.com/badge/team?team_id=39433&style=raised)](https://www.bountysource.com/teams/wox?utm_source=Wox&utm_medium=shield&utm_campaign=raised) [![Issue Stats](http://issuestats.com/github/Wox-launcher/Wox/badge/pr)](http://issuestats.com/github/Wox-launcher/Wox) -[![Github All Releases](https://img.shields.io/github/downloads/Wox-launcher/Wox/total.svg)](https://github.com/Wox-launcher/Wox/releases) + ========= Wox is a launcher for Windows, an alternative to [Alfred](https://www.alfredapp.com/) and [Launchy](http://www.launchy.net/). You can launch everything with just a few keystrokes! From 4251ad7d4592a70ac3d323c5353759c4425afddb Mon Sep 17 00:00:00 2001 From: bao-qian Date: Sat, 2 Jan 2016 00:22:43 +0000 Subject: [PATCH 14/15] Fix crashes for context menu on empty query Fixed issue #434, thanks @pieper126 --- Wox/MainWindow.xaml.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Wox/MainWindow.xaml.cs b/Wox/MainWindow.xaml.cs index aef06b9eb5..04957f26c2 100644 --- a/Wox/MainWindow.xaml.cs +++ b/Wox/MainWindow.xaml.cs @@ -895,6 +895,7 @@ namespace Wox private void ShowContextMenu(Result result) { + if (result == null) return; List results = PluginManager.GetContextMenusForPlugin(result); results.ForEach(o => { From 6404aac98603a0e38c6852c3d2b7ea4ad8cb1970 Mon Sep 17 00:00:00 2001 From: bao-qian Date: Sat, 2 Jan 2016 01:47:13 +0000 Subject: [PATCH 15/15] update build script 1. remove update generator from build script 2. add build version to release binary file name 3. remove installer script from deploy folder --- Deploy/Installer/InnoSetup/Default.isl | 336 ----------------- Deploy/Installer/InnoSetup/ISCC.exe | Bin 159232 -> 0 bytes Deploy/Installer/InnoSetup/ISCmplr.dll | Bin 587776 -> 0 bytes Deploy/Installer/InnoSetup/ISPP.dll | Bin 256512 -> 0 bytes Deploy/Installer/InnoSetup/ISPPBuiltins.iss | 345 ------------------ Deploy/Installer/InnoSetup/Setup.e32 | Bin 1171456 -> 0 bytes Deploy/Installer/InnoSetup/SetupLdr.e32 | Bin 119296 -> 0 bytes .../Installer/InnoSetup/WizModernImage-IS.bmp | Bin 52574 -> 0 bytes Deploy/Installer/InnoSetup/WizModernImage.bmp | Bin 26494 -> 0 bytes .../InnoSetup/WizModernSmallImage-IS.bmp | Bin 4158 -> 0 bytes .../InnoSetup/WizModernSmallImage.bmp | Bin 1658 -> 0 bytes Deploy/Installer/InnoSetup/islzma.dll | Bin 74240 -> 0 bytes Deploy/Installer/InnoSetup/islzma32.exe | Bin 72192 -> 0 bytes Deploy/Installer/InnoSetup/islzma64.exe | Bin 99840 -> 0 bytes Deploy/Installer/InnoSetup/license.txt | 37 -- Deploy/Installer/Installer.iss | 55 --- Deploy/Installer/pack.ps1 | 3 - .../UpdateGenerator/NAppUpdate.Framework.dll | Bin 142848 -> 0 bytes Deploy/UpdateGenerator/Newtonsoft.Json.dll | Bin 439296 -> 0 bytes Deploy/UpdateGenerator/Wox.Infrastructure.dll | Bin 684032 -> 0 bytes Deploy/UpdateGenerator/Wox.Plugin.dll | Bin 17408 -> 0 bytes .../Wox.UpdateFeedGenerator.exe | Bin 17920 -> 0 bytes Deploy/UpdateGenerator/build.ps1 | 9 - Deploy/UpdateGenerator/config.json | 10 - Deploy/build-release.ps1 | 9 + Deploy/{Nuget/pack.ps1 => nuget.ps1} | 2 +- Deploy/{Nuget => }/wox.plugin.nuspec | 6 +- appveyor.yml | 16 +- 28 files changed, 20 insertions(+), 808 deletions(-) delete mode 100644 Deploy/Installer/InnoSetup/Default.isl delete mode 100644 Deploy/Installer/InnoSetup/ISCC.exe delete mode 100644 Deploy/Installer/InnoSetup/ISCmplr.dll delete mode 100644 Deploy/Installer/InnoSetup/ISPP.dll delete mode 100644 Deploy/Installer/InnoSetup/ISPPBuiltins.iss delete mode 100644 Deploy/Installer/InnoSetup/Setup.e32 delete mode 100644 Deploy/Installer/InnoSetup/SetupLdr.e32 delete mode 100644 Deploy/Installer/InnoSetup/WizModernImage-IS.bmp delete mode 100644 Deploy/Installer/InnoSetup/WizModernImage.bmp delete mode 100644 Deploy/Installer/InnoSetup/WizModernSmallImage-IS.bmp delete mode 100644 Deploy/Installer/InnoSetup/WizModernSmallImage.bmp delete mode 100644 Deploy/Installer/InnoSetup/islzma.dll delete mode 100644 Deploy/Installer/InnoSetup/islzma32.exe delete mode 100644 Deploy/Installer/InnoSetup/islzma64.exe delete mode 100644 Deploy/Installer/InnoSetup/license.txt delete mode 100644 Deploy/Installer/Installer.iss delete mode 100644 Deploy/Installer/pack.ps1 delete mode 100644 Deploy/UpdateGenerator/NAppUpdate.Framework.dll delete mode 100644 Deploy/UpdateGenerator/Newtonsoft.Json.dll delete mode 100644 Deploy/UpdateGenerator/Wox.Infrastructure.dll delete mode 100644 Deploy/UpdateGenerator/Wox.Plugin.dll delete mode 100644 Deploy/UpdateGenerator/Wox.UpdateFeedGenerator.exe delete mode 100644 Deploy/UpdateGenerator/build.ps1 delete mode 100644 Deploy/UpdateGenerator/config.json create mode 100644 Deploy/build-release.ps1 rename Deploy/{Nuget/pack.ps1 => nuget.ps1} (70%) rename Deploy/{Nuget => }/wox.plugin.nuspec (61%) diff --git a/Deploy/Installer/InnoSetup/Default.isl b/Deploy/Installer/InnoSetup/Default.isl deleted file mode 100644 index b417cf916d..0000000000 --- a/Deploy/Installer/InnoSetup/Default.isl +++ /dev/null @@ -1,336 +0,0 @@ -; *** Inno Setup version 5.5.3+ English messages *** -; -; To download user-contributed translations of this file, go to: -; http://www.jrsoftware.org/files/istrans/ -; -; Note: When translating this text, do not add periods (.) to the end of -; messages that didn't have them already, because on those messages Inno -; Setup adds the periods automatically (appending a period would result in -; two periods being displayed). - -[LangOptions] -; The following three entries are very important. Be sure to read and -; understand the '[LangOptions] section' topic in the help file. -LanguageName=English -LanguageID=$0409 -LanguageCodePage=0 -; If the language you are translating to requires special font faces or -; sizes, uncomment any of the following entries and change them accordingly. -;DialogFontName= -;DialogFontSize=8 -;WelcomeFontName=Verdana -;WelcomeFontSize=12 -;TitleFontName=Arial -;TitleFontSize=29 -;CopyrightFontName=Arial -;CopyrightFontSize=8 - -[Messages] - -; *** Application titles -SetupAppTitle=Setup -SetupWindowTitle=Setup - %1 -UninstallAppTitle=Uninstall -UninstallAppFullTitle=%1 Uninstall - -; *** Misc. common -InformationTitle=Information -ConfirmTitle=Confirm -ErrorTitle=Error - -; *** SetupLdr messages -SetupLdrStartupMessage=This will install %1. Do you wish to continue? -LdrCannotCreateTemp=Unable to create a temporary file. Setup aborted -LdrCannotExecTemp=Unable to execute file in the temporary directory. Setup aborted - -; *** Startup error messages -LastErrorMessage=%1.%n%nError %2: %3 -SetupFileMissing=The file %1 is missing from the installation directory. Please correct the problem or obtain a new copy of the program. -SetupFileCorrupt=The setup files are corrupted. Please obtain a new copy of the program. -SetupFileCorruptOrWrongVer=The setup files are corrupted, or are incompatible with this version of Setup. Please correct the problem or obtain a new copy of the program. -InvalidParameter=An invalid parameter was passed on the command line:%n%n%1 -SetupAlreadyRunning=Setup is already running. -WindowsVersionNotSupported=This program does not support the version of Windows your computer is running. -WindowsServicePackRequired=This program requires %1 Service Pack %2 or later. -NotOnThisPlatform=This program will not run on %1. -OnlyOnThisPlatform=This program must be run on %1. -OnlyOnTheseArchitectures=This program can only be installed on versions of Windows designed for the following processor architectures:%n%n%1 -MissingWOW64APIs=The version of Windows you are running does not include functionality required by Setup to perform a 64-bit installation. To correct this problem, please install Service Pack %1. -WinVersionTooLowError=This program requires %1 version %2 or later. -WinVersionTooHighError=This program cannot be installed on %1 version %2 or later. -AdminPrivilegesRequired=You must be logged in as an administrator when installing this program. -PowerUserPrivilegesRequired=You must be logged in as an administrator or as a member of the Power Users group when installing this program. -SetupAppRunningError=Setup has detected that %1 is currently running.%n%nPlease close all instances of it now, then click OK to continue, or Cancel to exit. -UninstallAppRunningError=Uninstall has detected that %1 is currently running.%n%nPlease close all instances of it now, then click OK to continue, or Cancel to exit. - -; *** Misc. errors -ErrorCreatingDir=Setup was unable to create the directory "%1" -ErrorTooManyFilesInDir=Unable to create a file in the directory "%1" because it contains too many files - -; *** Setup common messages -ExitSetupTitle=Exit Setup -ExitSetupMessage=Setup is not complete. If you exit now, the program will not be installed.%n%nYou may run Setup again at another time to complete the installation.%n%nExit Setup? -AboutSetupMenuItem=&About Setup... -AboutSetupTitle=About Setup -AboutSetupMessage=%1 version %2%n%3%n%n%1 home page:%n%4 -AboutSetupNote= -TranslatorNote= - -; *** Buttons -ButtonBack=< &Back -ButtonNext=&Next > -ButtonInstall=&Install -ButtonOK=OK -ButtonCancel=Cancel -ButtonYes=&Yes -ButtonYesToAll=Yes to &All -ButtonNo=&No -ButtonNoToAll=N&o to All -ButtonFinish=&Finish -ButtonBrowse=&Browse... -ButtonWizardBrowse=B&rowse... -ButtonNewFolder=&Make New Folder - -; *** "Select Language" dialog messages -SelectLanguageTitle=Select Setup Language -SelectLanguageLabel=Select the language to use during the installation: - -; *** Common wizard text -ClickNext=Click Next to continue, or Cancel to exit Setup. -BeveledLabel= -BrowseDialogTitle=Browse For Folder -BrowseDialogLabel=Select a folder in the list below, then click OK. -NewFolderName=New Folder - -; *** "Welcome" wizard page -WelcomeLabel1=Welcome to the [name] Setup Wizard -WelcomeLabel2=This will install [name/ver] on your computer.%n%nIt is recommended that you close all other applications before continuing. - -; *** "Password" wizard page -WizardPassword=Password -PasswordLabel1=This installation is password protected. -PasswordLabel3=Please provide the password, then click Next to continue. Passwords are case-sensitive. -PasswordEditLabel=&Password: -IncorrectPassword=The password you entered is not correct. Please try again. - -; *** "License Agreement" wizard page -WizardLicense=License Agreement -LicenseLabel=Please read the following important information before continuing. -LicenseLabel3=Please read the following License Agreement. You must accept the terms of this agreement before continuing with the installation. -LicenseAccepted=I &accept the agreement -LicenseNotAccepted=I &do not accept the agreement - -; *** "Information" wizard pages -WizardInfoBefore=Information -InfoBeforeLabel=Please read the following important information before continuing. -InfoBeforeClickLabel=When you are ready to continue with Setup, click Next. -WizardInfoAfter=Information -InfoAfterLabel=Please read the following important information before continuing. -InfoAfterClickLabel=When you are ready to continue with Setup, click Next. - -; *** "User Information" wizard page -WizardUserInfo=User Information -UserInfoDesc=Please enter your information. -UserInfoName=&User Name: -UserInfoOrg=&Organization: -UserInfoSerial=&Serial Number: -UserInfoNameRequired=You must enter a name. - -; *** "Select Destination Location" wizard page -WizardSelectDir=Select Destination Location -SelectDirDesc=Where should [name] be installed? -SelectDirLabel3=Setup will install [name] into the following folder. -SelectDirBrowseLabel=To continue, click Next. If you would like to select a different folder, click Browse. -DiskSpaceMBLabel=At least [mb] MB of free disk space is required. -CannotInstallToNetworkDrive=Setup cannot install to a network drive. -CannotInstallToUNCPath=Setup cannot install to a UNC path. -InvalidPath=You must enter a full path with drive letter; for example:%n%nC:\APP%n%nor a UNC path in the form:%n%n\\server\share -InvalidDrive=The drive or UNC share you selected does not exist or is not accessible. Please select another. -DiskSpaceWarningTitle=Not Enough Disk Space -DiskSpaceWarning=Setup requires at least %1 KB of free space to install, but the selected drive only has %2 KB available.%n%nDo you want to continue anyway? -DirNameTooLong=The folder name or path is too long. -InvalidDirName=The folder name is not valid. -BadDirName32=Folder names cannot include any of the following characters:%n%n%1 -DirExistsTitle=Folder Exists -DirExists=The folder:%n%n%1%n%nalready exists. Would you like to install to that folder anyway? -DirDoesntExistTitle=Folder Does Not Exist -DirDoesntExist=The folder:%n%n%1%n%ndoes not exist. Would you like the folder to be created? - -; *** "Select Components" wizard page -WizardSelectComponents=Select Components -SelectComponentsDesc=Which components should be installed? -SelectComponentsLabel2=Select the components you want to install; clear the components you do not want to install. Click Next when you are ready to continue. -FullInstallation=Full installation -; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language) -CompactInstallation=Compact installation -CustomInstallation=Custom installation -NoUninstallWarningTitle=Components Exist -NoUninstallWarning=Setup has detected that the following components are already installed on your computer:%n%n%1%n%nDeselecting these components will not uninstall them.%n%nWould you like to continue anyway? -ComponentSize1=%1 KB -ComponentSize2=%1 MB -ComponentsDiskSpaceMBLabel=Current selection requires at least [mb] MB of disk space. - -; *** "Select Additional Tasks" wizard page -WizardSelectTasks=Select Additional Tasks -SelectTasksDesc=Which additional tasks should be performed? -SelectTasksLabel2=Select the additional tasks you would like Setup to perform while installing [name], then click Next. - -; *** "Select Start Menu Folder" wizard page -WizardSelectProgramGroup=Select Start Menu Folder -SelectStartMenuFolderDesc=Where should Setup place the program's shortcuts? -SelectStartMenuFolderLabel3=Setup will create the program's shortcuts in the following Start Menu folder. -SelectStartMenuFolderBrowseLabel=To continue, click Next. If you would like to select a different folder, click Browse. -MustEnterGroupName=You must enter a folder name. -GroupNameTooLong=The folder name or path is too long. -InvalidGroupName=The folder name is not valid. -BadGroupName=The folder name cannot include any of the following characters:%n%n%1 -NoProgramGroupCheck2=&Don't create a Start Menu folder - -; *** "Ready to Install" wizard page -WizardReady=Ready to Install -ReadyLabel1=Setup is now ready to begin installing [name] on your computer. -ReadyLabel2a=Click Install to continue with the installation, or click Back if you want to review or change any settings. -ReadyLabel2b=Click Install to continue with the installation. -ReadyMemoUserInfo=User information: -ReadyMemoDir=Destination location: -ReadyMemoType=Setup type: -ReadyMemoComponents=Selected components: -ReadyMemoGroup=Start Menu folder: -ReadyMemoTasks=Additional tasks: - -; *** "Preparing to Install" wizard page -WizardPreparing=Preparing to Install -PreparingDesc=Setup is preparing to install [name] on your computer. -PreviousInstallNotCompleted=The installation/removal of a previous program was not completed. You will need to restart your computer to complete that installation.%n%nAfter restarting your computer, run Setup again to complete the installation of [name]. -CannotContinue=Setup cannot continue. Please click Cancel to exit. -ApplicationsFound=The following applications are using files that need to be updated by Setup. It is recommended that you allow Setup to automatically close these applications. -ApplicationsFound2=The following applications are using files that need to be updated by Setup. It is recommended that you allow Setup to automatically close these applications. After the installation has completed, Setup will attempt to restart the applications. -CloseApplications=&Automatically close the applications -DontCloseApplications=&Do not close the applications -ErrorCloseApplications=Setup was unable to automatically close all applications. It is recommended that you close all applications using files that need to be updated by Setup before continuing. - -; *** "Installing" wizard page -WizardInstalling=Installing -InstallingLabel=Please wait while Setup installs [name] on your computer. - -; *** "Setup Completed" wizard page -FinishedHeadingLabel=Completing the [name] Setup Wizard -FinishedLabelNoIcons=Setup has finished installing [name] on your computer. -FinishedLabel=Setup has finished installing [name] on your computer. The application may be launched by selecting the installed icons. -ClickFinish=Click Finish to exit Setup. -FinishedRestartLabel=To complete the installation of [name], Setup must restart your computer. Would you like to restart now? -FinishedRestartMessage=To complete the installation of [name], Setup must restart your computer.%n%nWould you like to restart now? -ShowReadmeCheck=Yes, I would like to view the README file -YesRadio=&Yes, restart the computer now -NoRadio=&No, I will restart the computer later -; used for example as 'Run MyProg.exe' -RunEntryExec=Run %1 -; used for example as 'View Readme.txt' -RunEntryShellExec=View %1 - -; *** "Setup Needs the Next Disk" stuff -ChangeDiskTitle=Setup Needs the Next Disk -SelectDiskLabel2=Please insert Disk %1 and click OK.%n%nIf the files on this disk can be found in a folder other than the one displayed below, enter the correct path or click Browse. -PathLabel=&Path: -FileNotInDir2=The file "%1" could not be located in "%2". Please insert the correct disk or select another folder. -SelectDirectoryLabel=Please specify the location of the next disk. - -; *** Installation phase messages -SetupAborted=Setup was not completed.%n%nPlease correct the problem and run Setup again. -EntryAbortRetryIgnore=Click Retry to try again, Ignore to proceed anyway, or Abort to cancel installation. - -; *** Installation status messages -StatusClosingApplications=Closing applications... -StatusCreateDirs=Creating directories... -StatusExtractFiles=Extracting files... -StatusCreateIcons=Creating shortcuts... -StatusCreateIniEntries=Creating INI entries... -StatusCreateRegistryEntries=Creating registry entries... -StatusRegisterFiles=Registering files... -StatusSavingUninstall=Saving uninstall information... -StatusRunProgram=Finishing installation... -StatusRestartingApplications=Restarting applications... -StatusRollback=Rolling back changes... - -; *** Misc. errors -ErrorInternal2=Internal error: %1 -ErrorFunctionFailedNoCode=%1 failed -ErrorFunctionFailed=%1 failed; code %2 -ErrorFunctionFailedWithMessage=%1 failed; code %2.%n%3 -ErrorExecutingProgram=Unable to execute file:%n%1 - -; *** Registry errors -ErrorRegOpenKey=Error opening registry key:%n%1\%2 -ErrorRegCreateKey=Error creating registry key:%n%1\%2 -ErrorRegWriteKey=Error writing to registry key:%n%1\%2 - -; *** INI errors -ErrorIniEntry=Error creating INI entry in file "%1". - -; *** File copying errors -FileAbortRetryIgnore=Click Retry to try again, Ignore to skip this file (not recommended), or Abort to cancel installation. -FileAbortRetryIgnore2=Click Retry to try again, Ignore to proceed anyway (not recommended), or Abort to cancel installation. -SourceIsCorrupted=The source file is corrupted -SourceDoesntExist=The source file "%1" does not exist -ExistingFileReadOnly=The existing file is marked as read-only.%n%nClick Retry to remove the read-only attribute and try again, Ignore to skip this file, or Abort to cancel installation. -ErrorReadingExistingDest=An error occurred while trying to read the existing file: -FileExists=The file already exists.%n%nWould you like Setup to overwrite it? -ExistingFileNewer=The existing file is newer than the one Setup is trying to install. It is recommended that you keep the existing file.%n%nDo you want to keep the existing file? -ErrorChangingAttr=An error occurred while trying to change the attributes of the existing file: -ErrorCreatingTemp=An error occurred while trying to create a file in the destination directory: -ErrorReadingSource=An error occurred while trying to read the source file: -ErrorCopying=An error occurred while trying to copy a file: -ErrorReplacingExistingFile=An error occurred while trying to replace the existing file: -ErrorRestartReplace=RestartReplace failed: -ErrorRenamingTemp=An error occurred while trying to rename a file in the destination directory: -ErrorRegisterServer=Unable to register the DLL/OCX: %1 -ErrorRegSvr32Failed=RegSvr32 failed with exit code %1 -ErrorRegisterTypeLib=Unable to register the type library: %1 - -; *** Post-installation errors -ErrorOpeningReadme=An error occurred while trying to open the README file. -ErrorRestartingComputer=Setup was unable to restart the computer. Please do this manually. - -; *** Uninstaller messages -UninstallNotFound=File "%1" does not exist. Cannot uninstall. -UninstallOpenError=File "%1" could not be opened. Cannot uninstall -UninstallUnsupportedVer=The uninstall log file "%1" is in a format not recognized by this version of the uninstaller. Cannot uninstall -UninstallUnknownEntry=An unknown entry (%1) was encountered in the uninstall log -ConfirmUninstall=Are you sure you want to completely remove %1 and all of its components? -UninstallOnlyOnWin64=This installation can only be uninstalled on 64-bit Windows. -OnlyAdminCanUninstall=This installation can only be uninstalled by a user with administrative privileges. -UninstallStatusLabel=Please wait while %1 is removed from your computer. -UninstalledAll=%1 was successfully removed from your computer. -UninstalledMost=%1 uninstall complete.%n%nSome elements could not be removed. These can be removed manually. -UninstalledAndNeedsRestart=To complete the uninstallation of %1, your computer must be restarted.%n%nWould you like to restart now? -UninstallDataCorrupted="%1" file is corrupted. Cannot uninstall - -; *** Uninstallation phase messages -ConfirmDeleteSharedFileTitle=Remove Shared File? -ConfirmDeleteSharedFile2=The system indicates that the following shared file is no longer in use by any programs. Would you like for Uninstall to remove this shared file?%n%nIf any programs are still using this file and it is removed, those programs may not function properly. If you are unsure, choose No. Leaving the file on your system will not cause any harm. -SharedFileNameLabel=File name: -SharedFileLocationLabel=Location: -WizardUninstalling=Uninstall Status -StatusUninstalling=Uninstalling %1... - -; *** Shutdown block reasons -ShutdownBlockReasonInstallingApp=Installing %1. -ShutdownBlockReasonUninstallingApp=Uninstalling %1. - -; The custom messages below aren't used by Setup itself, but if you make -; use of them in your scripts, you'll want to translate them. - -[CustomMessages] - -NameAndVersion=%1 version %2 -AdditionalIcons=Additional icons: -CreateDesktopIcon=Create a &desktop icon -CreateQuickLaunchIcon=Create a &Quick Launch icon -ProgramOnTheWeb=%1 on the Web -UninstallProgram=Uninstall %1 -LaunchProgram=Launch %1 -AssocFileExtension=&Associate %1 with the %2 file extension -AssocingFileExtension=Associating %1 with the %2 file extension... -AutoStartProgramGroupDescription=Startup: -AutoStartProgram=Automatically start %1 -AddonHostProgramNotFound=%1 could not be located in the folder you selected.%n%nDo you want to continue anyway? diff --git a/Deploy/Installer/InnoSetup/ISCC.exe b/Deploy/Installer/InnoSetup/ISCC.exe deleted file mode 100644 index b83a07b1fdd5a500d229c65eaea851d0b112f217..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159232 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

?HSI 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