private void fullScreenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Favorites.Favorite fav = (Favorites.Favorite) this.lstFavorites.SelectedItem;

            if (!controller.Favorites.CanRemove(fav.SearchText))
            {
                return;
            }

            controller.Favorites.Remove(fav);

            fav.SizeMode = (this.fullScreenToolStripMenuItem.Checked) ? Favorites.Favorite.SizeModes.FullScreen : Favorites.Favorite.SizeModes.NoChange;

            if (fav.SizeMode == Favorites.Favorite.SizeModes.FullScreen)
            {
                fav.PositionX = 0;
                fav.PositionY = 0;
                fav.PositionW = 0;
                fav.PositionH = 0;
            }
            else
            {
                fav.ShouldMaximize = false;
            }

            this.RefreshFavoritesList(fav);
        }
Beispiel #2
0
        private void noSizeChangeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Favorites.Favorite fav = (Favorites.Favorite)lstFavorites.SelectedItem;

            if (!controller.Favorites.CanRemove(fav.SearchText))
            {
                return;
            }

            controller.Favorites.Remove(fav);

            fav.SizeMode = (noSizeChangeToolStripMenuItem.Checked) ? Favorites.Favorite.SizeModes.NoChange : Favorites.Favorite.SizeModes.FullScreen;

            if (fav.SizeMode == Favorites.Favorite.SizeModes.NoChange)
            {
                fav.ShouldMaximize = false;
                fav.OffsetL        = 0;
                fav.OffsetR        = 0;
                fav.OffsetT        = 0;
                fav.OffsetB        = 0;
                fav.PositionX      = 0;
                fav.PositionY      = 0;
                fav.PositionW      = 0;
                fav.PositionH      = 0;
            }

            RefreshFavoritesList(fav);
        }
Beispiel #3
0
        /// <summary>
        ///     adds the currently selected process to the favorites (by window title text)
        /// </summary>
        private void byTheWindowTitleTextregexToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (lstProcesses.SelectedItem == null)
            {
                return;
            }

            ProcessDetails pd = ((ProcessDetails)lstProcesses.SelectedItem);

            if (!pd.Manageable)
            {
                return;
            }

            //TODO move to controller
            if (controller.Favorites.CanAdd(pd.WindowTitle))
            {
                string res = Tools.Input_Text("Add to favorites by RegEx string", "Regex string (see the Help menu for reference)", pd.WindowTitle);

                if (res.Trim().Length > 0)
                {
                    Favorites.Favorite fav = new Favorites.Favorite();
                    fav.Kind       = Favorites.Favorite.FavoriteKinds.ByRegexString;
                    fav.SearchText = res;
                    controller.Favorites.Add(fav);
                }
            }
        }
        /// <summary>
        ///     adds the currently selected process to the favorites (by window title text)
        /// </summary>
        private void byTheWindowTitleTextregexToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (this.lstProcesses.SelectedItem == null)
            {
                return;
            }

            ProcessDetails pd = ((ProcessDetails)this.lstProcesses.SelectedItem);

            if (!pd.Manageable)
            {
                return;
            }

            //TODO move to controller
            if (controller.Favorites.CanAdd(pd.WindowTitle))
            {
                InputText it = new InputText();
                it.Text         = "Add to favorites by regex string";
                it.Input        = pd.WindowTitle;
                it.Instructions = "Regex string (reference is in the Help menu)";

                it.ShowDialog();
                if (it.DialogResult != DialogResult.OK)
                {
                    return;
                }

                Favorites.Favorite fav = new Favorites.Favorite();
                fav.Kind       = Favorites.Favorite.FavoriteKinds.ByRegexString;
                fav.SearchText = it.Input;
                controller.Favorites.Add(fav);
            }
        }
Beispiel #5
0
        private void setWindowSizeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Favorites.Favorite fav = (Favorites.Favorite)lstFavorites.SelectedItem;

            if (!controller.Favorites.CanRemove(fav.SearchText))
            {
                return;
            }

            DialogResult result = MessageBox.Show("Would you like to select the area using your mouse cursor?\r\n\r\nIf you answer No, you will be prompted for specific pixel dimensions.", "Select Area?", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

            if (result == DialogResult.Cancel)
            {
                return;
            }

            if (result == DialogResult.Yes)
            {
                using (DesktopAreaSelector frmSelectArea = new DesktopAreaSelector())
                {
                    if (frmSelectArea.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }

                    // Temporarily disable compiler warning CS1690: http://msdn.microsoft.com/en-us/library/x524dkh4.aspx
                    //
                    // We know what we're doing: everything is safe here.
#pragma warning disable 1690
                    fav.PositionX = frmSelectArea.CurrentTopLeft.X;
                    fav.PositionY = frmSelectArea.CurrentTopLeft.Y;
                    fav.PositionW = frmSelectArea.CurrentBottomRight.X - frmSelectArea.CurrentTopLeft.X;
                    fav.PositionH = frmSelectArea.CurrentBottomRight.Y - frmSelectArea.CurrentTopLeft.Y;
#pragma warning restore 1690
                }
            }
            else // System.Windows.Forms.DialogResult.No
            {
                int.TryParse(Tools.Input_Text("Set Window Size", "Pixel X location for the top left corner (X coordinate):", fav.PositionX.ToString()), out fav.PositionX);
                int.TryParse(Tools.Input_Text("Set Window Size", "Pixel Y location for the top left corner (Y coordinate):", fav.PositionY.ToString()), out fav.PositionY);
                int.TryParse(Tools.Input_Text("Set Window Size", "Window width (in pixels):", fav.PositionW.ToString()), out fav.PositionW);
                int.TryParse(Tools.Input_Text("Set Window Size", "Window height (in pixels):", fav.PositionH.ToString()), out fav.PositionH);
            }

            controller.Favorites.Remove(fav);

            if ((fav.PositionW == 0) || (fav.PositionH == 0))
            {
                fav.SizeMode = Favorites.Favorite.SizeModes.FullScreen;
            }
            else
            {
                fav.SizeMode       = Favorites.Favorite.SizeModes.SpecificSize;
                fav.ShouldMaximize = false;
            }

            RefreshFavoritesList(fav);
        }
Beispiel #6
0
 /// <summary>
 ///     remove the menu, resize the window, remove border, and maximize
 /// </summary>
 public void RemoveBorder(ProcessDetails pd, Favorites.Favorite favDetails = null, Boolean overrideTimeout = false)
 {
     if (favDetails != null && favDetails.DelayBorderless == true && overrideTimeout == false)
     {
         //Wait 10 seconds before removing the border.
         Task task = new Task(() => RemoveBorder(pd, favDetails, true));
         task.Wait(TimeSpan.FromSeconds(10));
     }
     Manipulation.MakeWindowBorderless(pd, window, pd.WindowHandle, new Rectangle(), favDetails ?? _favorites.FromProcessDetails(pd));
 }
        /// <summary>
        ///     remove the menu, resize the window, remove border, and maximize
        /// </summary>
        public void RemoveBorder_ToSpecificRect(IntPtr hWnd, Rectangle targetFrame, Favorites.Favorite favDetails = null, Boolean overrideTimeout = false)
        {
            if (favDetails != null && favDetails.DelayBorderless == true && overrideTimeout == false)
            {
                //Wait 10 seconds before removing the border.
                Task task = new Task(() => RemoveBorder_ToSpecificRect(hWnd, targetFrame, favDetails, true));
                task.Wait(TimeSpan.FromSeconds(10));
            }
            var pd = _processDetails.FromHandle(hWnd);

            Manipulation.MakeWindowBorderless(pd, window, hWnd, targetFrame, favDetails ?? _favorites.FromProcessDetails(pd));
        }
Beispiel #8
0
        private void delayBorderlessToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Favorites.Favorite fav = (Favorites.Favorite)lstFavorites.SelectedItem;

            if (!controller.Favorites.CanRemove(fav.SearchText))
            {
                return;
            }

            controller.Favorites.Remove(fav);

            fav.DelayBorderless = delayBorderlessToolStripMenuItem.Checked;
            RefreshFavoritesList(fav);
        }
Beispiel #9
0
        private void hideMouseCursorToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Favorites.Favorite fav = (Favorites.Favorite)lstFavorites.SelectedItem;

            if (!controller.Favorites.CanRemove(fav.SearchText))
            {
                return;
            }

            controller.Favorites.Remove(fav);

            fav.HideMouseCursor = hideMouseCursorToolStripMenuItem.Checked;
            RefreshFavoritesList(fav);
        }
        private void hideWindowsTaskbarToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Favorites.Favorite fav = (Favorites.Favorite) this.lstFavorites.SelectedItem;

            if (!controller.Favorites.CanRemove(fav.SearchText))
            {
                return;
            }

            controller.Favorites.Remove(fav);

            fav.HideWindowsTaskbar = this.hideWindowsTaskbarToolStripMenuItem.Checked;

            this.RefreshFavoritesList(fav);
        }
Beispiel #11
0
        /// <summary>
        ///     removes the currently selected entry from the favorites
        /// </summary>
        private void btnRemoveFavorite_Click(object sender, EventArgs e)
        {
            if (lstFavorites.SelectedItem == null)
            {
                return;
            }

            //TODO move to controller.
            Favorites.Favorite fav = (Favorites.Favorite)lstFavorites.SelectedItem;

            if (!controller.Favorites.CanRemove(fav.SearchText))
            {
                return;
            }

            controller.Favorites.Remove(fav);
        }
        /// <summary>
        ///     remove the menu, resize the window, remove border, and maximize
        /// </summary>
        public void RemoveBorder(ProcessDetails pd, Favorites.Favorite favDetails = null, Boolean overrideTimeout = false)
        {
            if (favDetails != null && favDetails.DelayBorderless == true && overrideTimeout == false)
            {
                //Wait 10 seconds before removing the border.
                Task task = new Task(() => RemoveBorder(pd, favDetails, true));
                task.Wait(TimeSpan.FromSeconds(10));
            }

            // If a Favorite screen exists, use the Rect from that, instead
            if (null != favDetails && null != favDetails.favScreen)
            {
                RemoveBorder_ToSpecificRect(pd, favDetails.favScreen, favDetails, overrideTimeout);
                return;
            }

            Manipulation.MakeWindowBorderless(pd, window, pd.WindowHandle, new Rectangle(), favDetails ?? _favorites.FromProcessDetails(pd));
        }
Beispiel #13
0
        private void adjustWindowBoundsToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Favorites.Favorite fav = (Favorites.Favorite)lstFavorites.SelectedItem;

            if (!controller.Favorites.CanRemove(fav.SearchText))
            {
                return;
            }

            controller.Favorites.Remove(fav);

            int.TryParse(Tools.Input_Text("Adjust Window Bounds", "Pixel adjustment for the left window edge (0 pixels = no adjustment):", fav.OffsetL.ToString()), out fav.OffsetL);
            int.TryParse(Tools.Input_Text("Adjust Window Bounds", "Pixel adjustment for the right window edge (0 pixels = no adjustment):", fav.OffsetR.ToString()), out fav.OffsetR);
            int.TryParse(Tools.Input_Text("Adjust Window Bounds", "Pixel adjustment for the top window edge (0 pixels = no adjustment):", fav.OffsetT.ToString()), out fav.OffsetT);
            int.TryParse(Tools.Input_Text("Adjust Window Bounds", "Pixel adjustment for the bottom window edge (0 pixels = no adjustment):", fav.OffsetB.ToString()), out fav.OffsetB);

            RefreshFavoritesList(fav);
        }
        private void removeMenusToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (this.lstFavorites.SelectedItem == null)
            {
                return;
            }

            Favorites.Favorite fav = (Favorites.Favorite) this.lstFavorites.SelectedItem;

            if (!controller.Favorites.CanRemove(fav.SearchText))
            {
                return;
            }

            controller.Favorites.Remove(fav);

            fav.RemoveMenus = this.removeMenusToolStripMenuItem.Checked;
            RefreshFavoritesList(fav);
        }
Beispiel #15
0
        private void alwaysOnTopToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (lstFavorites.SelectedItem == null)
            {
                return;
            }

            Favorites.Favorite fav = (Favorites.Favorite)lstFavorites.SelectedItem;

            if (!controller.Favorites.CanRemove(fav.SearchText))
            {
                return;
            }

            controller.Favorites.Remove(fav);

            fav.TopMost = alwaysOnTopToolStripMenuItem.Checked;
            RefreshFavoritesList(fav);
        }
Beispiel #16
0
        /// <summary>
        ///     Sets up the Favorite-ContextMenu according to the current state
        /// </summary>
        private void mnuFavoritesContext_Opening(object sender, CancelEventArgs e)
        {
            if (lstFavorites.SelectedItem == null)
            {
                e.Cancel = true;
                return;
            }

            Favorites.Favorite fav = (Favorites.Favorite)lstFavorites.SelectedItem;
            fullScreenToolStripMenuItem.Checked         = fav.SizeMode == Favorites.Favorite.SizeModes.FullScreen;
            automaximizeToolStripMenuItem.Checked       = fav.ShouldMaximize;
            alwaysOnTopToolStripMenuItem.Checked        = fav.TopMost;
            hideMouseCursorToolStripMenuItem.Checked    = fav.HideMouseCursor;
            hideWindowsTaskbarToolStripMenuItem.Checked = fav.HideWindowsTaskbar;
            removeMenusToolStripMenuItem.Checked        = fav.RemoveMenus;

            automaximizeToolStripMenuItem.Enabled       = fav.SizeMode == Favorites.Favorite.SizeModes.FullScreen;
            adjustWindowBoundsToolStripMenuItem.Enabled = (fav.SizeMode == Favorites.Favorite.SizeModes.FullScreen) && (!fav.ShouldMaximize);
            setWindowSizeToolStripMenuItem.Enabled      = fav.SizeMode != Favorites.Favorite.SizeModes.FullScreen;
            setWindowSizeToolStripMenuItem.Checked      = fav.SizeMode == Favorites.Favorite.SizeModes.SpecificSize;
            noSizeChangeToolStripMenuItem.Checked       = fav.SizeMode == Favorites.Favorite.SizeModes.NoChange;
        }
Beispiel #17
0
        /// <summary>
        ///     adds the currently selected process to the favorites (by process binary name)
        /// </summary>
        private void byTheProcessBinaryNameToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (lstProcesses.SelectedItem == null)
            {
                return;
            }

            ProcessDetails pd = ((ProcessDetails)lstProcesses.SelectedItem);

            if (!pd.Manageable)
            {
                return;
            }

            //TODO move to controller
            if (controller.Favorites.CanAdd(pd.BinaryName))
            {
                Favorites.Favorite fav = new Favorites.Favorite();
                fav.Kind       = Favorites.Favorite.FavoriteKinds.ByBinaryName;
                fav.SearchText = pd.BinaryName;
                controller.Favorites.Add(fav);
            }
        }
Beispiel #18
0
        private void automaximizeToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Favorites.Favorite fav = (Favorites.Favorite)lstFavorites.SelectedItem;

            if (!controller.Favorites.CanRemove(fav.SearchText))
            {
                return;
            }

            controller.Favorites.Remove(fav);

            fav.ShouldMaximize = automaximizeToolStripMenuItem.Checked;

            if (fav.ShouldMaximize)
            {
                fav.SizeMode  = Favorites.Favorite.SizeModes.FullScreen;
                fav.PositionX = 0;
                fav.PositionY = 0;
                fav.PositionW = 0;
                fav.PositionH = 0;
            }

            RefreshFavoritesList(fav);
        }
        /// <summary>
        ///     remove the menu, resize the window, remove border, and maximize
        /// </summary>
        public void RemoveBorder_ToSpecificRect(IntPtr hWnd, Rectangle targetFrame, Favorites.Favorite favDetails = null)
        {
            var pd = _processDetails.FromHandle(hWnd);

            Manipulation.MakeWindowBorderless(pd, window, hWnd, targetFrame, favDetails ?? _favorites.FromProcessDetails(pd));
        }
        /// <summary>
        ///     remove the menu, resize the window, remove border, and maximize
        /// </summary>
        public void RemoveBorder_ToSpecificScreen(IntPtr hWnd, Screen screen, Favorites.Favorite favDetails = null)
        {
            var pd = _processDetails.FromHandle(hWnd);

            Manipulation.MakeWindowBorderless(pd, window, hWnd, screen.Bounds, favDetails ?? _favorites.FromProcessDetails(pd));
        }
 /// <summary>
 ///     remove the menu, resize the window, remove border, and maximize
 /// </summary>
 public void RemoveBorder(ProcessDetails pd, Favorites.Favorite favDetails = null)
 {
     Manipulation.MakeWindowBorderless(pd, window, pd.WindowHandle, new Rectangle(), favDetails ?? _favorites.FromProcessDetails(pd));
 }
Beispiel #22
0
        /// <summary>
        ///     remove the menu, resize the window, remove border, and maximize
        /// </summary>
        public static void MakeWindowBorderless(ProcessDetails processDetails, MainWindow frmMain, IntPtr targetWindow, Rectangle targetFrame, Favorites.Favorite favDetails)
        {
            var isUnrealEngine = IsUnrealEngine(targetWindow);

            // Automatically match a window to favorite details, if that information is available.
            // Note: if one is not available, the default settings will be used as a new Favorite() object.

            // Automatically match this window to a process

            // Failsafe to prevent rapid switching, but also allow a few changes to the window handle (to be persistent)
            if (processDetails != null)
            {
                if (processDetails.MadeBorderless)
                {
                    if ((processDetails.MadeBorderlessAttempts > 3) || (!processDetails.WindowHasTargetableStyles))
                    {
                        return;
                    }
                }
            }

            // If no target frame was specified, assume the entire space on the primary screen
            if ((targetFrame.Width == 0) || (targetFrame.Height == 0))
            {
                targetFrame = Screen.FromHandle(targetWindow).Bounds;
            }

            // Get window styles
            var styleCurrentWindowStandard = Native.GetWindowLong(targetWindow, WindowLongIndex.Style);
            var styleCurrentWindowExtended = Native.GetWindowLong(targetWindow, WindowLongIndex.ExtendedStyle);

            // Compute new styles (XOR of the inverse of all the bits to filter)
            var styleNewWindowStandard =
                (
                    styleCurrentWindowStandard
                    & ~(
                        WindowStyleFlags.Caption // composite of Border and DialogFrame
                        // | WindowStyleFlags.Border
                        //| WindowStyleFlags.DialogFrame
                        | WindowStyleFlags.ThickFrame
                        | WindowStyleFlags.OverlappedWindow
                        | WindowStyleFlags.SystemMenu
                        | WindowStyleFlags.MaximizeBox // same as TabStop
                        | WindowStyleFlags.MinimizeBox // same as Group
                        )
                );

            var styleNewWindowExtended =
                (
                    styleCurrentWindowExtended
                    & ~(
                        WindowStyleFlags.ExtendedDlgModalFrame
                        | WindowStyleFlags.ExtendedComposited
                        | WindowStyleFlags.ExtendedWindowEdge
                        | WindowStyleFlags.ExtendedClientEdge
                        | WindowStyleFlags.ExtendedLayered
                        | WindowStyleFlags.ExtendedStaticEdge
                        | WindowStyleFlags.ExtendedToolWindow
                        | WindowStyleFlags.ExtendedAppWindow
                        )
                );

            // Should have process details by now
            if (processDetails != null)
            {
                // Save original details on this window so that we have a chance at undoing the process
                processDetails.OriginalStyleFlags_Standard = styleCurrentWindowStandard;
                processDetails.OriginalStyleFlags_Extended = styleCurrentWindowExtended;
                Native.GetWindowRect(processDetails.WindowHandle, out Native.Rect rect_temp);
                processDetails.OriginalLocation = new Rectangle(rect_temp.Left, rect_temp.Top, rect_temp.Right - rect_temp.Left, rect_temp.Bottom - rect_temp.Top);
            }

            // remove the menu and menuitems and force a redraw
            if (favDetails.RemoveMenus || isUnrealEngine)
            {
                // unfortunately, menus can't be re-added easily so they aren't removed by default anymore
                IntPtr menuHandle = Native.GetMenu(targetWindow);
                if (menuHandle != IntPtr.Zero)
                {
                    int menuItemCount = Native.GetMenuItemCount(menuHandle);

                    for (int i = 0; i < menuItemCount; i++)
                    {
                        Native.RemoveMenu(menuHandle, 0, MenuFlags.ByPosition | MenuFlags.Remove);
                    }

                    Native.DrawMenuBar(targetWindow);
                }
            }

            // auto-hide the Windows taskbar (do this before resizing the window)
            if (favDetails.HideWindowsTaskbar)
            {
                Native.ShowWindow(frmMain.Handle, WindowShowStyle.ShowNoActivate);
                if (frmMain.WindowState == FormWindowState.Minimized)
                {
                    frmMain.WindowState = FormWindowState.Normal;
                }

                ToggleWindowsTaskbarVisibility(Tools.Boolstate.False);
            }

            // auto-hide the mouse cursor
            if (favDetails.HideMouseCursor)
            {
                ToggleMouseCursorVisibility(frmMain, Tools.Boolstate.False);
            }



            // update window position
            if (favDetails.SizeMode != Favorites.Favorite.SizeModes.NoChange)
            {
                if ((favDetails.SizeMode == Favorites.Favorite.SizeModes.FullScreen) || (favDetails.PositionW == 0) || (favDetails.PositionH == 0))
                {
                    // Set the window size to the biggest possible, using bounding adjustments
                    Native.SetWindowPos
                    (
                        targetWindow,
                        0,
                        targetFrame.X + favDetails.OffsetL,
                        targetFrame.Y + favDetails.OffsetT,
                        targetFrame.Width - favDetails.OffsetL + favDetails.OffsetR,
                        targetFrame.Height - favDetails.OffsetT + favDetails.OffsetB,
                        SetWindowPosFlags.FrameChanged | SetWindowPosFlags.ShowWindow | SetWindowPosFlags.NoOwnerZOrder | SetWindowPosFlags.NoSendChanging
                    );

                    // And auto-maximize
                    if (favDetails.ShouldMaximize && !isUnrealEngine)
                    {
                        Native.ShowWindow(targetWindow, WindowShowStyle.Maximize);
                    }
                }
                else
                {
                    // Set the window size to the exact position specified by the user
                    Native.SetWindowPos
                    (
                        targetWindow,
                        0,
                        favDetails.PositionX,
                        favDetails.PositionY,
                        favDetails.PositionW,
                        favDetails.PositionH,
                        SetWindowPosFlags.FrameChanged | SetWindowPosFlags.ShowWindow | SetWindowPosFlags.NoOwnerZOrder | SetWindowPosFlags.NoSendChanging
                    );
                }
            }

            // Set topmost
            if (favDetails.TopMost)
            {
                Native.SetWindowPos
                (
                    targetWindow,
                    Native.HWND_TOPMOST,
                    0,
                    0,
                    0,
                    0,
                    SetWindowPosFlags.FrameChanged | SetWindowPosFlags.ShowWindow | SetWindowPosFlags.NoMove | SetWindowPosFlags.NoSize | SetWindowPosFlags.NoSendChanging
                );
            }
            //wait before applying styles
            if (isUnrealEngine)
            {
                Thread.Sleep(4200);
            }
            // update window styles
            Native.SetWindowLong(targetWindow, WindowLongIndex.Style, styleNewWindowStandard);
            Native.SetWindowLong(targetWindow, WindowLongIndex.ExtendedStyle, styleNewWindowExtended);

            // Make a note that we attempted to make the window borderless
            if (processDetails != null)
            {
                processDetails.MadeBorderless = true;
                processDetails.MadeBorderlessAttempts++;
            }

            if (Program.SteamLoaded)
            {
                BorderlessGamingSteam.Achievement_Unlock(0);
            }
        }
Beispiel #23
0
 private void RefreshFavoritesList(Favorites.Favorite fav = null)
 {
     //refreshing is done through observables so this method just readds the favorite
     //to make it look like it updated and because i dont want to change all that code
     controller.Favorites.Add(fav);
 }
Beispiel #24
0
        /// <summary>
        ///     Sets up the Favorite-ContextMenu according to the current state
        /// </summary>
        private void mnuFavoritesContext_Opening(object sender, CancelEventArgs e)
        {
            if (lstFavorites.SelectedItem == null)
            {
                e.Cancel = true;
                return;
            }

            Favorites.Favorite fav = (Favorites.Favorite)lstFavorites.SelectedItem;
            fullScreenToolStripMenuItem.Checked         = fav.SizeMode == Favorites.Favorite.SizeModes.FullScreen;
            automaximizeToolStripMenuItem.Checked       = fav.ShouldMaximize;
            alwaysOnTopToolStripMenuItem.Checked        = fav.TopMost;
            hideMouseCursorToolStripMenuItem.Checked    = fav.HideMouseCursor;
            hideWindowsTaskbarToolStripMenuItem.Checked = fav.HideWindowsTaskbar;
            removeMenusToolStripMenuItem.Checked        = fav.RemoveMenus;

            automaximizeToolStripMenuItem.Enabled       = fav.SizeMode == Favorites.Favorite.SizeModes.FullScreen;
            adjustWindowBoundsToolStripMenuItem.Enabled = (fav.SizeMode == Favorites.Favorite.SizeModes.FullScreen) && (!fav.ShouldMaximize);
            setWindowSizeToolStripMenuItem.Enabled      = fav.SizeMode != Favorites.Favorite.SizeModes.FullScreen;
            setWindowSizeToolStripMenuItem.Checked      = fav.SizeMode == Favorites.Favorite.SizeModes.SpecificSize;
            noSizeChangeToolStripMenuItem.Checked       = fav.SizeMode == Favorites.Favorite.SizeModes.NoChange;

            if (Screen.AllScreens.Length < 2)
            {
                contextFavScreen.Visible = false;
            }
            else
            {
                contextFavScreen.Visible = true;

                if (contextFavScreen.HasDropDownItems)
                {
                    contextFavScreen.DropDownItems.Clear();
                }

                Rectangle superSize = Screen.PrimaryScreen.Bounds;

                foreach (Screen screen in Screen.AllScreens)
                {
                    superSize = Tools.GetContainingRectangle(superSize, screen.Bounds);

                    // fix for a .net-bug on Windows XP
                    int    idx             = screen.DeviceName.IndexOf('\0');
                    string fixedDeviceName = (idx > 0) ? screen.DeviceName.Substring(0, idx) : screen.DeviceName;

                    string label = fixedDeviceName + ((screen.Primary) ? " (P)" : string.Empty);

                    ToolStripMenuItem tsi = new ToolStripMenuItem(label);
                    tsi.Checked = fav.favScreen.Equals(screen.Bounds);
                    tsi.Click  += (s, ea) =>
                    {
                        if (tsi.Checked)
                        {
                            fav.favScreen = new Rectangle();              // Can't null a Rectangle, so can never fully un-favorite a screen without removing the favorite.
                        }
                        else
                        {
                            fav.favScreen = screen.Bounds;
                        }
                        controller.Favorites.Save();
                    };

                    contextFavScreen.DropDownItems.Add(tsi);
                }

                // add supersize Option
                ToolStripMenuItem superSizeItem = new ToolStripMenuItem("SuperSize!");

                superSizeItem.Click += (s, ea) => { fav.favScreen = superSize; };

                contextFavScreen.DropDownItems.Add(superSizeItem);
            }
        }