Пример #1
0
        public ActivateItems(ITheme theme, RefreshBus refreshBus, DockPanel mainDockPanel, IRDMPPlatformRepositoryServiceLocator repositoryLocator, WindowFactory windowFactory, WindowManager windowManager, ICheckNotifier globalErrorCheckNotifier) : base(repositoryLocator, globalErrorCheckNotifier)
        {
            Theme          = theme;
            WindowFactory  = windowFactory;
            _mainDockPanel = mainDockPanel;
            _windowManager = windowManager;
            RefreshBus     = refreshBus;

            ConstructPluginChildProviders();
            CoreChildProvider = GetChildProvider();

            //Shouldn't ever change externally to your session so doesn't need constantly refreshed
            FavouritesProvider = new FavouritesProvider(this, repositoryLocator.CatalogueRepository);
            HistoryProvider    = new HistoryProvider(repositoryLocator);

            //handle custom icons from plugin user interfaces in which
            CoreIconProvider = new DataExportIconProvider(repositoryLocator, PluginUserInterfaces.ToArray());

            SelectIMapsDirectlyToDatabaseTableDialog.ImageGetter = (model) => CoreIconProvider.GetImage(model);

            WindowArranger = new WindowArranger(this, _windowManager, _mainDockPanel);

            CommandFactory          = new RDMPCombineableFactory();
            CommandExecutionFactory = new RDMPCommandExecutionFactory(this);

            ProblemProviders = new List <IProblemProvider>();
            ProblemProviders.Add(new DataExportProblemProvider());
            ProblemProviders.Add(new CatalogueProblemProvider());
            RefreshProblemProviders();

            RefreshBus.Subscribe(this);
        }
Пример #2
0
        void _winHook_WindowFocusChanged(object sender, WindowHandleEventArgs e)
        {
            if (_currentRefWindow == IntPtr.Zero)
            {
                return;
            }
            if (_currentRefWindow == e.WindowHandle)
            {
                return;
            }
            if (_lastSwitched == e.WindowHandle)
            {
                return;
            }

            using (var targw = Window.ForegroundWindow())
                using (var refw = new Window(_currentRefWindow))
                {
                    _lastSwitched = targw.Handle;
                    Direction[] tryOrder = { Direction.Left, Direction.Right, Direction.Down, Direction.Up };
                    foreach (var dir in tryOrder)
                    {
                        if (WindowArranger.MoveWindowRelativeScreenDirection(refw, targw, dir))
                        {
                            break;
                        }
                    }

                    refw.SendToFront();
                    targw.SendToFront();
                }
        }
Пример #3
0
        public ActivateItems(ITheme theme, RefreshBus refreshBus, DockPanel mainDockPanel, IRDMPPlatformRepositoryServiceLocator repositoryLocator, WindowFactory windowFactory, WindowManager windowManager, ICheckNotifier globalErrorCheckNotifier) : base(repositoryLocator, globalErrorCheckNotifier)
        {
            Theme = theme;
            InteractiveDeletes = true;
            WindowFactory      = windowFactory;
            _mainDockPanel     = mainDockPanel;
            _windowManager     = windowManager;
            RefreshBus         = refreshBus;

            RefreshBus.ChildProvider = CoreChildProvider;

            HistoryProvider = new HistoryProvider(repositoryLocator);

            WindowArranger = new WindowArranger(this, _windowManager, _mainDockPanel);

            CommandFactory          = new RDMPCombineableFactory();
            CommandExecutionFactory = new RDMPCommandExecutionFactory(this);

            ProblemProviders = new List <IProblemProvider>();
            ProblemProviders.Add(new DataExportProblemProvider());
            ProblemProviders.Add(new CatalogueProblemProvider());
            RefreshProblemProviders();

            RefreshBus.Subscribe(this);
        }
 void ReleaseArranger()
 {
     if (arranger != null)
     {
         arranger.ParentClosed -= OnParentWindowClosed;
         arranger.Release();
         arranger = null;
     }
 }
Пример #5
0
        static void Main()
        {
            InitialiseWinForms();

            // Hook 'shell' events into the capturing form.
            Win32.RegisterShellHookWindow(ShellEventsDelegateForm.Handle);


            // TESTING:

            /*Console.WriteLine(DateTime.Now.ToString());
             * using (var gf = new GifWriter(@"W:\work\tmp.gif", new Size(320,240)))
             * {
             *  for (var x = 0; x < 100; x++)
             *  {
             *      gf.WriteScreenFrame(new Point(10+x, 10));
             *  }
             * }
             * Console.WriteLine(DateTime.Now.ToString());// manages about 30fps, almost regardless of capture size (up to a limit)
             */
            // END TEST

            // Hook into system wide windowing events
            using (var winHook = new WindowHookManager())
            {
                using (var switcherForm = new SwitcherForm(winHook))
                    using (var concentrationForm = new ConcentrationForm(winHook))
                        using (var popupWindows = new PopupWindows())
                            using (var pushback = new Pushback())
                                using (var arranger = new WindowArranger())
                                    using (var experimental = new ReferenceWindow(winHook))
                                        using (var hotKeys = new HotkeyCore())
                                        {
                                            // General features
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.Tab }, switcherForm.Toggle);
                                            hotKeys.Bind(new[] { Keys.LShiftKey, Keys.F12 }, concentrationForm.Toggle);
                                            hotKeys.Bind(new[] { Keys.RShiftKey, Keys.F12 }, concentrationForm.Toggle);
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.Space }, popupWindows.ToggleVisibility);
                                            hotKeys.Bind(new[] { Keys.LControlKey, Keys.LWin, Keys.Space }, popupWindows.ToggleFade);
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.Escape }, pushback.PushBackFrontWindow);

                                            // re-arrangement of top-window that breaks less things than the Windows built-in
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.LControlKey, Keys.D1 }, arranger.SetTopLeft);
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.LControlKey, Keys.D2 }, arranger.SetTop);
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.LControlKey, Keys.D3 }, arranger.SetTopRight);
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.LControlKey, Keys.D4 }, arranger.SetLeft);
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.LControlKey, Keys.D5 }, arranger.SetCentre);
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.LControlKey, Keys.D6 }, arranger.SetRight);
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.LControlKey, Keys.D7 }, arranger.SetBottomLeft);
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.LControlKey, Keys.D8 }, arranger.SetBottom);
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.LControlKey, Keys.D9 }, arranger.SetBottomRight);

                                            // win-arrow to move screen
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.Left }, arranger.MoveScreenLeft);
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.Up }, arranger.MoveScreenUp);
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.Right }, arranger.MoveScreenRight);
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.Down }, arranger.MoveScreenDown);

                                            // Reference window
                                            hotKeys.Bind(new[] { Keys.LWin, Keys.OemMinus }, experimental.SetReferenceWindow);

                                            TrayIcon = new NotifyTrayApp("Windows Jedi", Resources.JediIcon, "https://github.com/i-e-b/WindowsJedi");
                                            TrayIcon.AddMenuItem("Settings", delegate { new Settings().ShowDialog(); });
                                            TrayIcon.AddMenuItem("Re-type file", delegate { new FileRetypeChooser().Show(); });
                                            TrayIcon.AddMenuItem("Screen Capture to GIF", delegate { new ScreenCaptureForm().Show(); });

                                            Application.ThreadException += Application_ThreadException;

                                            Application.Run();
                                        }
                ShellEventsDelegateForm.Dispose();
            }
        }
 void CreateArranger(SplashScreenOwner parentContainer, SplashScreenLocation childLocation) {
     arranger = new WindowArranger(parentContainer, childLocation);
     arranger.ParentClosed += OnParentWindowClosed;
     arranger.AttachChild(this);
 }
 void ReleaseArranger() {
     if(arranger != null) {
         arranger.ParentClosed -= OnParentWindowClosed;
         arranger.Release();
         arranger = null;
     }
 }
 void CreateArranger(SplashScreenOwner parentContainer, SplashScreenLocation childLocation)
 {
     arranger = new WindowArranger(parentContainer, childLocation);
     arranger.ParentClosed += OnParentWindowClosed;
     arranger.AttachChild(this);
 }