private void InvokeRoutine(Keys key, bool isKeyDown)
        {
            Debug.WriteLine($"InvokeRoutine: key={key},down={isKeyDown}");

            if (isKeyDown)
            {
                switch (key)
                {
                case Keys.Enter:
                    PipeServerManager.SendMessage(PipeMessages.RunAndClose);
                    break;
                }
            }
            else
            {
                switch (key)
                {
                case Keys.Up:
                case Keys.Down:
                case Keys.Left:
                case Keys.Right:
                    PipeServerManager.SendMessage(PipeMessages.Switch);
                    break;

                case Keys.Space:
                    PipeServerManager.SendMessage(PipeMessages.Toggle);
                    break;

                case Keys.Escape:
                    PipeServerManager.SendMessage(PipeMessages.Close);
                    break;
                }
            }
        }
Example #2
0
        public void Start()
        {
            if (IsRunning)
            {
                return;
            }

            IsRunning = true;

            new Task(() =>
            {
                var last = string.Empty;

                while (IsRunning)
                {
                    Thread.Sleep(500);

                    if (NativeMethods.QuickLook.GetFocusedWindowType() ==
                        NativeMethods.QuickLook.FocusedWindowType.Invalid)
                    {
                        continue;
                    }

                    var path = NativeMethods.QuickLook.GetCurrentSelection();
                    if (IsRunning && last != path)
                    {
                        last = path;
                        PipeServerManager.SendMessage(PipeMessages.Switch, path);
                    }
                }
            }).Start();
        }
Example #3
0
        private bool EnsureFirstInstance(string[] args)
        {
            _isRunning = new Mutex(true, "QuickLook.App.Mutex", out bool isFirst);
            if (isFirst)
            {
                return(true);
            }

            // second instance: preview this file
            if (args.Any() && (Directory.Exists(args.First()) || File.Exists(args.First())))
            {
                PipeServerManager.SendMessage(PipeMessages.Toggle, args.First());
            }

            //add by gh
            else if (args.Contains("/setvisible"))
            {
                SettingHelper.Set("Visible", true);
                MessageBox.Show(TranslationHelper.Get("APP_SECOND_TEXT_HIDE"), TranslationHelper.Get("APP_SECOND"),
                                MessageBoxButton.OK, MessageBoxImage.Information);
            }
            //---------//

            // second instance: duplicate
            else
            {
                MessageBox.Show(TranslationHelper.Get("APP_SECOND_TEXT"), TranslationHelper.Get("APP_SECOND"),
                                MessageBoxButton.OK, MessageBoxImage.Information);
            }

            return(false);
        }
Example #4
0
        private void InvokeRoutine(Keys key, bool isKeyDown)
        {
            if (!_validKeys.Contains(key))
            {
                Debug.WriteLine($"Invalid keypress: key={key},down={isKeyDown}, time={_lastInvalidKeyPressTick}");

                _lastInvalidKeyPressTick = DateTime.Now.Ticks;
                return;
            }

            if (DateTime.Now.Ticks - _lastInvalidKeyPressTick < VALID_KEY_PRESS_DELAY)
            {
                return;
            }

            _lastInvalidKeyPressTick = 0L;

            Debug.WriteLine($"InvokeRoutine: key={key},down={isKeyDown}");

            if (isKeyDown)
            {
                switch (key)
                {
                case Keys.Enter:
                    PipeServerManager.SendMessage(PipeMessages.RunAndClose);
                    break;
                }
            }
            else
            {
                switch (key)
                {
                case Keys.Up:
                case Keys.Down:
                case Keys.Left:
                case Keys.Right:
                    PipeServerManager.SendMessage(PipeMessages.Switch);
                    break;

                case Keys.Space:
                    PipeServerManager.SendMessage(PipeMessages.Toggle);
                    break;

                case Keys.Escape:
                    PipeServerManager.SendMessage(PipeMessages.Close);
                    break;
                }
            }
        }
Example #5
0
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            if (!EnsureOSVersion() ||
                !EnsureFirstInstance(e.Args) ||
                !EnsureFolderWritable(SettingHelper.LocalDataPath))
            {
                _cleanExit = false;
                Shutdown();
                return;
            }

            CheckUpdate();
            RunListener(e);

            // first instance: run and preview this file
            if (e.Args.Any() && (Directory.Exists(e.Args.First()) || File.Exists(e.Args.First())))
            {
                PipeServerManager.SendMessage(PipeMessages.Toggle, e.Args.First());
            }
        }
Example #6
0
        private void InvokeRoutine(Keys key, bool isKeyDown)
        {
            var path = NativeMethods.QuickLook.GetCurrentSelection();

            Debug.WriteLine($"InvokeRoutine: key={key},down={isKeyDown}");

            if (isKeyDown)
            {
                switch (key)
                {
                case Keys.Enter:
                    PipeServerManager.SendMessage(PipeMessages.RunAndClose);
                    break;
                }
            }
            else
            {
                switch (key)
                {
                case Keys.Up:
                case Keys.Down:
                case Keys.Left:
                case Keys.Right:
                    PipeServerManager.SendMessage(PipeMessages.Switch, path);
                    break;

                case Keys.Space:
                    PipeServerManager.SendMessage(PipeMessages.Toggle, path);
                    break;

                case Keys.Escape:
                    PipeServerManager.SendMessage(PipeMessages.Close);
                    break;
                }
            }
        }
Example #7
0
 private void RemoteCallShowPreview(StartupEventArgs e)
 {
     PipeServerManager.SendMessage(PipeMessages.Toggle, e.Args.First());
 }