Example #1
0
        private RightImageToolStripMenuItem GetMenuItemForSnapshot(Snapshot snapshot, bool showMonitorIcons, long maxNumMonitorPixels)
        {
            var menuItem = new RightImageToolStripMenuItem(snapshot.GetDisplayString())
            {
                Tag = snapshot
            };

            menuItem.Click      += snapshot.Restore;
            menuItem.MouseEnter += SnapshotMousedOver;
            if (snapshot.UserInitiated)
            {
                menuItem.Font = new Font(menuItem.Font, FontStyle.Bold);
            }

            // monitor icons
            var monitorSizes = new List <float>();

            if (showMonitorIcons)
            {
                foreach (var monitorPixels in snapshot.MonitorPixelCounts)
                {
                    monitorSizes.Add((float)Math.Sqrt((float)monitorPixels / maxNumMonitorPixels));
                }
            }
            menuItem.MonitorSizes = monitorSizes.ToArray();
            return(menuItem);
        }
Example #2
0
        private void UpdateRestoreChoicesInMenu()
        {
            // construct the new list of menu items, then populate them
            // this function is idempotent

            var snapshotsOldestFirst = new List <Snapshot>(CondenseSnapshots(_snapshots, 8));
            var newMenuItems         = new List <ToolStripItem>
            {
                quitToolStripMenuItem, aboutToolStripMenuItem, snapshotListEndLine
            };

            var maxNumMonitors      = 0;
            var maxNumMonitorPixels = 0L;
            var showMonitorIcons    = false;

            foreach (var snapshot in snapshotsOldestFirst)
            {
                if (maxNumMonitors != snapshot.NumMonitors && maxNumMonitors != 0)
                {
                    showMonitorIcons = true;
                }

                maxNumMonitors = Math.Max(maxNumMonitors, snapshot.NumMonitors);
                foreach (var monitorPixels in snapshot.MonitorPixelCounts)
                {
                    maxNumMonitorPixels = Math.Max(maxNumMonitorPixels, monitorPixels);
                }
            }

            foreach (var snapshot in snapshotsOldestFirst)
            {
                try
                {
                    RightImageToolStripMenuItem menuItem = GetMenuItemForSnapshot(snapshot, showMonitorIcons, maxNumMonitorPixels);
                    newMenuItems.Add(menuItem);
                }
                catch (Exception ex)
                {
                    Logger.Log($"Error creating menu item: {ex}");
                }
            }

            newMenuItems.Add(justNowToolStripMenuItem);
            newMenuItems.Add(snapshotListStartLine);
            newMenuItems.Add(clearSnapshotsToolStripMenuItem);
            newMenuItems.Add(snapshotToolStripMenuItem);

            // If showing monitor icons, subtract 34 pixels from the right due to too much right padding.
            try
            {
                RemovePaddingForIcons(showMonitorIcons);
            }
            catch (Exception ex)
            {
                Logger.Log($"Error modifying padding: {ex}");
            }

            // If showing monitor icons, make the menu item width 50 + 22 * maxNumMonitors pixels wider to make room for the icons.
            try
            {
                AdjustPaddingForIcons(showMonitorIcons, maxNumMonitors);
            }
            catch (Exception ex)
            {
                Logger.Log($"Error modifying padding for icons: {ex}");
            }

            trayMenu.Items.Clear();
            trayMenu.Items.AddRange(newMenuItems.ToArray());
        }