private void CreateContextMenu() { MenuItem timeWindow = new MenuItem("Time Scale"); MenuItem[] timeWindowMenuItems = { new MenuItem("Auto"), new MenuItem("5 min"), new MenuItem("10 min"), new MenuItem("20 min"), new MenuItem("30 min"), new MenuItem("45 min"), new MenuItem("1 h"), new MenuItem("1.5 h"), new MenuItem("2 h"), new MenuItem("3 h"), new MenuItem("6 h"), new MenuItem("12 h"), new MenuItem("24 h") }; foreach (MenuItem mi in timeWindowMenuItems) { timeWindow.MenuItems.Add(mi); } timeWindowRadioGroup = new UserRadioGroup("timeWindow", 0, timeWindowMenuItems, settings); this.ContextMenu = new ContextMenu(); this.ContextMenu.MenuItems.Add(timeWindow); }
public MainForm() { InitializeComponent(); // check if the OpenHardwareMonitorLib assembly has the correct version if (Assembly.GetAssembly(typeof(Computer)).GetName().Version != Assembly.GetExecutingAssembly().GetName().Version) { MessageBox.Show( "The version of the file OpenHardwareMonitorLib.dll is incompatible.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); Environment.Exit(0); } this.settings = new PersistentSettings(); this.settings.Load(Path.ChangeExtension( Application.ExecutablePath, ".config")); this.unitManager = new UnitManager(settings); // make sure the buffers used for double buffering are not disposed // after each draw call BufferedGraphicsManager.Current.MaximumBuffer = Screen.PrimaryScreen.Bounds.Size; // set the DockStyle here, to avoid conflicts with the MainMenu this.splitContainer.Dock = DockStyle.Fill; this.Font = SystemFonts.MessageBoxFont; treeView.Font = SystemFonts.MessageBoxFont; // Set the bounds immediately, so that our child components can be // properly placed. this.Bounds = new Rectangle { X = settings.GetValue("mainForm.Location.X", Location.X), Y = settings.GetValue("mainForm.Location.Y", Location.Y), Width = settings.GetValue("mainForm.Width", 470), Height = settings.GetValue("mainForm.Height", 640) }; plotPanel = new PlotPanel(settings, unitManager); plotPanel.Font = SystemFonts.MessageBoxFont; plotPanel.Dock = DockStyle.Fill; nodeCheckBox.IsVisibleValueNeeded += nodeCheckBox_IsVisibleValueNeeded; nodeTextBoxText.DrawText += nodeTextBoxText_DrawText; nodeTextBoxValue.DrawText += nodeTextBoxText_DrawText; nodeTextBoxMin.DrawText += nodeTextBoxText_DrawText; nodeTextBoxMax.DrawText += nodeTextBoxText_DrawText; nodeTextBoxText.EditorShowing += nodeTextBoxText_EditorShowing; foreach (TreeColumn column in treeView.Columns) { column.Width = Math.Max(20, Math.Min(400, settings.GetValue("treeView.Columns." + column.Header + ".Width", column.Width))); } treeModel = new TreeModel(); root = new Node(System.Environment.MachineName); root.Image = Utilities.EmbeddedResources.GetImage("computer.png"); treeModel.Nodes.Add(root); treeView.Model = treeModel; this.computer = new Computer(settings); systemTray = new SystemTray(computer, settings, unitManager); systemTray.HideShowCommand += hideShowClick; systemTray.ExitCommand += exitClick; int p = (int)Environment.OSVersion.Platform; if ((p == 4) || (p == 128)) // Unix { treeView.RowHeight = Math.Max(treeView.RowHeight, 18); splitContainer.BorderStyle = BorderStyle.None; splitContainer.Border3DStyle = Border3DStyle.Adjust; splitContainer.SplitterWidth = 4; treeView.BorderStyle = BorderStyle.Fixed3D; plotPanel.BorderStyle = BorderStyle.Fixed3D; gadgetMenuItem.Visible = false; minCloseMenuItem.Visible = false; minTrayMenuItem.Visible = false; startMinMenuItem.Visible = false; } else // Windows { treeView.RowHeight = Math.Max(treeView.Font.Height + 1, 18); gadget = new SensorGadget(computer, settings, unitManager); gadget.HideShowCommand += hideShowClick; wmiProvider = new WmiProvider(computer); } logger = new Logger(computer); plotColorPalette = new Color[13]; plotColorPalette[0] = Color.Blue; plotColorPalette[1] = Color.OrangeRed; plotColorPalette[2] = Color.Green; plotColorPalette[3] = Color.LightSeaGreen; plotColorPalette[4] = Color.Goldenrod; plotColorPalette[5] = Color.DarkViolet; plotColorPalette[6] = Color.YellowGreen; plotColorPalette[7] = Color.SaddleBrown; plotColorPalette[8] = Color.RoyalBlue; plotColorPalette[9] = Color.DeepPink; plotColorPalette[10] = Color.MediumSeaGreen; plotColorPalette[11] = Color.Olive; plotColorPalette[12] = Color.Firebrick; computer.HardwareAdded += new HardwareEventHandler(HardwareAdded); computer.HardwareRemoved += new HardwareEventHandler(HardwareRemoved); computer.Open(); timer.Enabled = true; showHiddenSensors = new UserOption("hiddenMenuItem", false, hiddenMenuItem, settings); showHiddenSensors.Changed += delegate(object sender, EventArgs e) { treeModel.ForceVisible = showHiddenSensors.Value; }; showValue = new UserOption("valueMenuItem", true, valueMenuItem, settings); showValue.Changed += delegate(object sender, EventArgs e) { treeView.Columns[1].IsVisible = showValue.Value; }; showMin = new UserOption("minMenuItem", false, minMenuItem, settings); showMin.Changed += delegate(object sender, EventArgs e) { treeView.Columns[2].IsVisible = showMin.Value; }; showMax = new UserOption("maxMenuItem", true, maxMenuItem, settings); showMax.Changed += delegate(object sender, EventArgs e) { treeView.Columns[3].IsVisible = showMax.Value; }; startMinimized = new UserOption("startMinMenuItem", false, startMinMenuItem, settings); minimizeToTray = new UserOption("minTrayMenuItem", true, minTrayMenuItem, settings); minimizeToTray.Changed += delegate(object sender, EventArgs e) { systemTray.IsMainIconEnabled = minimizeToTray.Value; }; minimizeOnClose = new UserOption("minCloseMenuItem", false, minCloseMenuItem, settings); autoStart = new UserOption(null, startupManager.Startup, startupMenuItem, settings); autoStart.Changed += delegate(object sender, EventArgs e) { try { startupManager.Startup = autoStart.Value; } catch (InvalidOperationException) { MessageBox.Show("Updating the auto-startup option failed.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); autoStart.Value = startupManager.Startup; } }; readMainboardSensors = new UserOption("mainboardMenuItem", true, mainboardMenuItem, settings); readMainboardSensors.Changed += delegate(object sender, EventArgs e) { computer.MainboardEnabled = readMainboardSensors.Value; }; readCpuSensors = new UserOption("cpuMenuItem", true, cpuMenuItem, settings); readCpuSensors.Changed += delegate(object sender, EventArgs e) { computer.CPUEnabled = readCpuSensors.Value; }; readRamSensors = new UserOption("ramMenuItem", true, ramMenuItem, settings); readRamSensors.Changed += delegate(object sender, EventArgs e) { computer.RAMEnabled = readRamSensors.Value; }; readGpuSensors = new UserOption("gpuMenuItem", true, gpuMenuItem, settings); readGpuSensors.Changed += delegate(object sender, EventArgs e) { computer.GPUEnabled = readGpuSensors.Value; }; readFanControllersSensors = new UserOption("fanControllerMenuItem", true, fanControllerMenuItem, settings); readFanControllersSensors.Changed += delegate(object sender, EventArgs e) { computer.FanControllerEnabled = readFanControllersSensors.Value; }; readHddSensors = new UserOption("hddMenuItem", true, hddMenuItem, settings); readHddSensors.Changed += delegate(object sender, EventArgs e) { computer.HDDEnabled = readHddSensors.Value; }; readNicSensors = new UserOption("nicMenuItem", true, nicMenuItem, settings); readNicSensors.Changed += delegate(object sender, EventArgs e) { computer.NICEnabled = readNicSensors.Value; }; showGadget = new UserOption("gadgetMenuItem", false, gadgetMenuItem, settings); showGadget.Changed += delegate(object sender, EventArgs e) { if (gadget != null) { gadget.Visible = showGadget.Value; } }; celsiusMenuItem.Checked = unitManager.TemperatureUnit == TemperatureUnit.Celsius; fahrenheitMenuItem.Checked = !celsiusMenuItem.Checked; server = new HttpServer(root, this.settings.GetValue("listenerPort", 8085)); if (server.PlatformNotSupported) { webMenuItemSeparator.Visible = false; webMenuItem.Visible = false; } runWebServer = new UserOption("runWebServerMenuItem", false, runWebServerMenuItem, settings); runWebServer.Changed += delegate(object sender, EventArgs e) { if (runWebServer.Value) { server.StartHTTPListener(); } else { server.StopHTTPListener(); } }; logSensors = new UserOption("logSensorsMenuItem", false, logSensorsMenuItem, settings); loggingInterval = new UserRadioGroup("loggingInterval", 0, new[] { log1sMenuItem, log2sMenuItem, log5sMenuItem, log10sMenuItem, log30sMenuItem, log1minMenuItem, log2minMenuItem, log5minMenuItem, log10minMenuItem, log30minMenuItem, log1hMenuItem, log2hMenuItem, log6hMenuItem }, settings); loggingInterval.Changed += (sender, e) => { switch (loggingInterval.Value) { case 0: logger.LoggingInterval = new TimeSpan(0, 0, 1); break; case 1: logger.LoggingInterval = new TimeSpan(0, 0, 2); break; case 2: logger.LoggingInterval = new TimeSpan(0, 0, 5); break; case 3: logger.LoggingInterval = new TimeSpan(0, 0, 10); break; case 4: logger.LoggingInterval = new TimeSpan(0, 0, 30); break; case 5: logger.LoggingInterval = new TimeSpan(0, 1, 0); break; case 6: logger.LoggingInterval = new TimeSpan(0, 2, 0); break; case 7: logger.LoggingInterval = new TimeSpan(0, 5, 0); break; case 8: logger.LoggingInterval = new TimeSpan(0, 10, 0); break; case 9: logger.LoggingInterval = new TimeSpan(0, 30, 0); break; case 10: logger.LoggingInterval = new TimeSpan(1, 0, 0); break; case 11: logger.LoggingInterval = new TimeSpan(2, 0, 0); break; case 12: logger.LoggingInterval = new TimeSpan(6, 0, 0); break; } }; sensorValuesTimeWindow = new UserRadioGroup("sensorValuesTimeWindow", 10, new[] { timeWindow30sMenuItem, timeWindow1minMenuItem, timeWindow2minMenuItem, timeWindow5minMenuItem, timeWindow10minMenuItem, timeWindow30minMenuItem, timeWindow1hMenuItem, timeWindow2hMenuItem, timeWindow6hMenuItem, timeWindow12hMenuItem, timeWindow24hMenuItem }, settings); sensorValuesTimeWindow.Changed += (sender, e) => { TimeSpan timeWindow = TimeSpan.Zero; switch (sensorValuesTimeWindow.Value) { case 0: timeWindow = new TimeSpan(0, 0, 30); break; case 1: timeWindow = new TimeSpan(0, 1, 0); break; case 2: timeWindow = new TimeSpan(0, 2, 0); break; case 3: timeWindow = new TimeSpan(0, 5, 0); break; case 4: timeWindow = new TimeSpan(0, 10, 0); break; case 5: timeWindow = new TimeSpan(0, 30, 0); break; case 6: timeWindow = new TimeSpan(1, 0, 0); break; case 7: timeWindow = new TimeSpan(2, 0, 0); break; case 8: timeWindow = new TimeSpan(6, 0, 0); break; case 9: timeWindow = new TimeSpan(12, 0, 0); break; case 10: timeWindow = new TimeSpan(24, 0, 0); break; } computer.Accept(new SensorVisitor(delegate(ISensor sensor) { sensor.ValuesTimeWindow = timeWindow; })); }; InitializePlotForm(); InitializeSplitter(); startupMenuItem.Visible = startupManager.IsAvailable; if (startMinMenuItem.Checked) { if (!minTrayMenuItem.Checked) { WindowState = FormWindowState.Minimized; Show(); } } else { Show(); } // Create a handle, otherwise calling Close() does not fire FormClosed IntPtr handle = Handle; // Make sure the settings are saved when the user logs off Microsoft.Win32.SystemEvents.SessionEnded += delegate { computer.Close(); SaveConfiguration(); if (runWebServer.Value) { server.Quit(); } }; }
private void InitializePlotForm() { plotForm = new Form(); plotForm.FormBorderStyle = FormBorderStyle.SizableToolWindow; plotForm.ShowInTaskbar = false; plotForm.StartPosition = FormStartPosition.Manual; this.AddOwnedForm(plotForm); plotForm.Bounds = new Rectangle { X = settings.GetValue("plotForm.Location.X", -100000), Y = settings.GetValue("plotForm.Location.Y", 100), Width = settings.GetValue("plotForm.Width", 600), Height = settings.GetValue("plotForm.Height", 400) }; showPlot = new UserOption("plotMenuItem", false, plotMenuItem, settings); plotLocation = new UserRadioGroup("plotLocation", 0, new[] { plotWindowMenuItem, plotBottomMenuItem, plotRightMenuItem }, settings); showPlot.Changed += delegate(object sender, EventArgs e) { if (plotLocation.Value == 0) { if (showPlot.Value && this.Visible) { plotForm.Show(); } else { plotForm.Hide(); } } else { splitContainer.Panel2Collapsed = !showPlot.Value; } treeView.Invalidate(); }; plotLocation.Changed += delegate(object sender, EventArgs e) { switch (plotLocation.Value) { case 0: splitContainer.Panel2.Controls.Clear(); splitContainer.Panel2Collapsed = true; plotForm.Controls.Add(plotPanel); if (showPlot.Value && this.Visible) { plotForm.Show(); } break; case 1: plotForm.Controls.Clear(); plotForm.Hide(); splitContainer.Orientation = Orientation.Horizontal; splitContainer.Panel2.Controls.Add(plotPanel); splitContainer.Panel2Collapsed = !showPlot.Value; break; case 2: plotForm.Controls.Clear(); plotForm.Hide(); splitContainer.Orientation = Orientation.Vertical; splitContainer.Panel2.Controls.Add(plotPanel); splitContainer.Panel2Collapsed = !showPlot.Value; break; } }; plotForm.FormClosing += delegate(object sender, FormClosingEventArgs e) { if (e.CloseReason == CloseReason.UserClosing) { // just switch off the plotting when the user closes the form if (plotLocation.Value == 0) { showPlot.Value = false; } e.Cancel = true; } }; EventHandler moveOrResizePlotForm = delegate(object sender, EventArgs e) { if (plotForm.WindowState != FormWindowState.Minimized) { settings.SetValue("plotForm.Location.X", plotForm.Bounds.X); settings.SetValue("plotForm.Location.Y", plotForm.Bounds.Y); settings.SetValue("plotForm.Width", plotForm.Bounds.Width); settings.SetValue("plotForm.Height", plotForm.Bounds.Height); } }; plotForm.Move += moveOrResizePlotForm; plotForm.Resize += moveOrResizePlotForm; plotForm.VisibleChanged += delegate(object sender, EventArgs e) { Rectangle bounds = new Rectangle(plotForm.Location, plotForm.Size); Screen screen = Screen.FromRectangle(bounds); Rectangle intersection = Rectangle.Intersect(screen.WorkingArea, bounds); if (intersection.Width < Math.Min(16, bounds.Width) || intersection.Height < Math.Min(16, bounds.Height)) { plotForm.Location = new Point( screen.WorkingArea.Width / 2 - bounds.Width / 2, screen.WorkingArea.Height / 2 - bounds.Height / 2); } }; this.VisibleChanged += delegate(object sender, EventArgs e) { if (this.Visible && showPlot.Value && plotLocation.Value == 0) { plotForm.Show(); } else { plotForm.Hide(); } }; }
public MainForm() { InitializeComponent(); // check if the OpenHardwareMonitorLib assembly has the correct version if (Assembly.GetAssembly(typeof(Computer)).GetName().Version != Assembly.GetExecutingAssembly().GetName().Version) { MessageBox.Show( "The version of the file OpenHardwareMonitorLib.dll is incompatible.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); Environment.Exit(0); } this.settings = new PersistentSettings(); this.settings.Load(Path.ChangeExtension( Application.ExecutablePath, ".config")); this.unitManager = new UnitManager(settings); // make sure the buffers used for double buffering are not disposed // after each draw call BufferedGraphicsManager.Current.MaximumBuffer = Screen.PrimaryScreen.Bounds.Size; // set the DockStyle here, to avoid conflicts with the MainMenu this.splitContainer.Dock = DockStyle.Fill; this.Font = SystemFonts.MessageBoxFont; treeView.Font = SystemFonts.MessageBoxFont; plotPanel = new PlotPanel(settings, unitManager); plotPanel.Font = SystemFonts.MessageBoxFont; plotPanel.Dock = DockStyle.Fill; nodeCheckBox.IsVisibleValueNeeded += nodeCheckBox_IsVisibleValueNeeded; nodeTextBoxText.DrawText += nodeTextBoxText_DrawText; nodeTextBoxValue.DrawText += nodeTextBoxText_DrawText; nodeTextBoxMin.DrawText += nodeTextBoxText_DrawText; nodeTextBoxMax.DrawText += nodeTextBoxText_DrawText; nodeTextBoxText.EditorShowing += nodeTextBoxText_EditorShowing; foreach (TreeColumn column in treeView.Columns) column.Width = Math.Max(20, Math.Min(400, settings.GetValue("treeView.Columns." + column.Header + ".Width", column.Width))); treeModel = new TreeModel(); root = new Node(System.Environment.MachineName); root.Image = Utilities.EmbeddedResources.GetImage("computer.png"); treeModel.Nodes.Add(root); treeView.Model = treeModel; this.computer = new Computer(settings); systemTray = new SystemTray(computer, settings, unitManager); systemTray.HideShowCommand += hideShowClick; systemTray.ExitCommand += exitClick; int p = (int)Environment.OSVersion.Platform; if ((p == 4) || (p == 128)) { // Unix treeView.RowHeight = Math.Max(treeView.RowHeight, 18); splitContainer.BorderStyle = BorderStyle.None; splitContainer.Border3DStyle = Border3DStyle.Adjust; splitContainer.SplitterWidth = 4; treeView.BorderStyle = BorderStyle.Fixed3D; plotPanel.BorderStyle = BorderStyle.Fixed3D; gadgetMenuItem.Visible = false; minCloseMenuItem.Visible = false; minTrayMenuItem.Visible = false; startMinMenuItem.Visible = false; } else { // Windows treeView.RowHeight = Math.Max(treeView.Font.Height + 1, 18); gadget = new SensorGadget(computer, settings, unitManager); gadget.HideShowCommand += hideShowClick; wmiProvider = new WmiProvider(computer); } logger = new Logger(computer); plotColorPalette = new Color[13]; plotColorPalette[0] = Color.Blue; plotColorPalette[1] = Color.OrangeRed; plotColorPalette[2] = Color.Green; plotColorPalette[3] = Color.LightSeaGreen; plotColorPalette[4] = Color.Goldenrod; plotColorPalette[5] = Color.DarkViolet; plotColorPalette[6] = Color.YellowGreen; plotColorPalette[7] = Color.SaddleBrown; plotColorPalette[8] = Color.RoyalBlue; plotColorPalette[9] = Color.DeepPink; plotColorPalette[10] = Color.MediumSeaGreen; plotColorPalette[11] = Color.Olive; plotColorPalette[12] = Color.Firebrick; computer.HardwareAdded += new HardwareEventHandler(HardwareAdded); computer.HardwareRemoved += new HardwareEventHandler(HardwareRemoved); computer.Open(); timer.Enabled = true; showHiddenSensors = new UserOption("hiddenMenuItem", false, hiddenMenuItem, settings); showHiddenSensors.Changed += delegate(object sender, EventArgs e) { treeModel.ForceVisible = showHiddenSensors.Value; }; showValue = new UserOption("valueMenuItem", true, valueMenuItem, settings); showValue.Changed += delegate(object sender, EventArgs e) { treeView.Columns[1].IsVisible = showValue.Value; }; showMin = new UserOption("minMenuItem", false, minMenuItem, settings); showMin.Changed += delegate(object sender, EventArgs e) { treeView.Columns[2].IsVisible = showMin.Value; }; showMax = new UserOption("maxMenuItem", true, maxMenuItem, settings); showMax.Changed += delegate(object sender, EventArgs e) { treeView.Columns[3].IsVisible = showMax.Value; }; startMinimized = new UserOption("startMinMenuItem", false, startMinMenuItem, settings); minimizeToTray = new UserOption("minTrayMenuItem", true, minTrayMenuItem, settings); minimizeToTray.Changed += delegate(object sender, EventArgs e) { systemTray.IsMainIconEnabled = minimizeToTray.Value; }; minimizeOnClose = new UserOption("minCloseMenuItem", false, minCloseMenuItem, settings); autoStart = new UserOption(null, startupManager.Startup, startupMenuItem, settings); autoStart.Changed += delegate(object sender, EventArgs e) { try { startupManager.Startup = autoStart.Value; } catch (InvalidOperationException) { MessageBox.Show("Updating the auto-startup option failed.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); autoStart.Value = startupManager.Startup; } }; readMainboardSensors = new UserOption("mainboardMenuItem", true, mainboardMenuItem, settings); readMainboardSensors.Changed += delegate(object sender, EventArgs e) { computer.MainboardEnabled = readMainboardSensors.Value; }; readCpuSensors = new UserOption("cpuMenuItem", true, cpuMenuItem, settings); readCpuSensors.Changed += delegate(object sender, EventArgs e) { computer.CPUEnabled = readCpuSensors.Value; }; readRamSensors = new UserOption("ramMenuItem", true, ramMenuItem, settings); readRamSensors.Changed += delegate(object sender, EventArgs e) { computer.RAMEnabled = readRamSensors.Value; }; readGpuSensors = new UserOption("gpuMenuItem", true, gpuMenuItem, settings); readGpuSensors.Changed += delegate(object sender, EventArgs e) { computer.GPUEnabled = readGpuSensors.Value; }; readFanControllersSensors = new UserOption("fanControllerMenuItem", true, fanControllerMenuItem, settings); readFanControllersSensors.Changed += delegate(object sender, EventArgs e) { computer.FanControllerEnabled = readFanControllersSensors.Value; }; readHddSensors = new UserOption("hddMenuItem", true, hddMenuItem, settings); readHddSensors.Changed += delegate(object sender, EventArgs e) { computer.HDDEnabled = readHddSensors.Value; }; showGadget = new UserOption("gadgetMenuItem", false, gadgetMenuItem, settings); showGadget.Changed += delegate(object sender, EventArgs e) { if (gadget != null) gadget.Visible = showGadget.Value; }; celsiusMenuItem.Checked = unitManager.TemperatureUnit == TemperatureUnit.Celsius; fahrenheitMenuItem.Checked = !celsiusMenuItem.Checked; server = new HttpServer(root, this.settings.GetValue("listenerPort", 8085)); if (server.PlatformNotSupported) { webMenuItemSeparator.Visible = false; webMenuItem.Visible = false; } runWebServer = new UserOption("runWebServerMenuItem", false, runWebServerMenuItem, settings); runWebServer.Changed += delegate(object sender, EventArgs e) { if (runWebServer.Value) server.StartHTTPListener(); else server.StopHTTPListener(); }; logSensors = new UserOption("logSensorsMenuItem", false, logSensorsMenuItem, settings); loggingInterval = new UserRadioGroup("loggingInterval", 0, new[] { log1sMenuItem, log2sMenuItem, log5sMenuItem, log10sMenuItem, log30sMenuItem, log1minMenuItem, log2minMenuItem, log5minMenuItem, log10minMenuItem, log30minMenuItem, log1hMenuItem, log2hMenuItem, log6hMenuItem}, settings); loggingInterval.Changed += (sender, e) => { switch (loggingInterval.Value) { case 0: logger.LoggingInterval = new TimeSpan(0, 0, 1); break; case 1: logger.LoggingInterval = new TimeSpan(0, 0, 2); break; case 2: logger.LoggingInterval = new TimeSpan(0, 0, 5); break; case 3: logger.LoggingInterval = new TimeSpan(0, 0, 10); break; case 4: logger.LoggingInterval = new TimeSpan(0, 0, 30); break; case 5: logger.LoggingInterval = new TimeSpan(0, 1, 0); break; case 6: logger.LoggingInterval = new TimeSpan(0, 2, 0); break; case 7: logger.LoggingInterval = new TimeSpan(0, 5, 0); break; case 8: logger.LoggingInterval = new TimeSpan(0, 10, 0); break; case 9: logger.LoggingInterval = new TimeSpan(0, 30, 0); break; case 10: logger.LoggingInterval = new TimeSpan(1, 0, 0); break; case 11: logger.LoggingInterval = new TimeSpan(2, 0, 0); break; case 12: logger.LoggingInterval = new TimeSpan(6, 0, 0); break; } }; InitializePlotForm(); startupMenuItem.Visible = startupManager.IsAvailable; if (startMinMenuItem.Checked) { if (!minTrayMenuItem.Checked) { WindowState = FormWindowState.Minimized; Show(); } } else { Show(); } // Create a handle, otherwise calling Close() does not fire FormClosed IntPtr handle = Handle; // Make sure the settings are saved when the user logs off Microsoft.Win32.SystemEvents.SessionEnded += delegate { computer.Close(); SaveConfiguration(); if (runWebServer.Value) server.Quit(); }; }
private void InitializePlotForm() { plotForm = new Form(); plotForm.FormBorderStyle = FormBorderStyle.SizableToolWindow; plotForm.ShowInTaskbar = false; plotForm.StartPosition = FormStartPosition.Manual; this.AddOwnedForm(plotForm); plotForm.Bounds = new Rectangle { X = settings.GetValue("plotForm.Location.X", -100000), Y = settings.GetValue("plotForm.Location.Y", 100), Width = settings.GetValue("plotForm.Width", 600), Height = settings.GetValue("plotForm.Height", 400) }; showPlot = new UserOption("plotMenuItem", false, plotMenuItem, settings); plotLocation = new UserRadioGroup("plotLocation", 0, new[] { plotWindowMenuItem, plotBottomMenuItem, plotRightMenuItem }, settings); showPlot.Changed += delegate(object sender, EventArgs e) { if (plotLocation.Value == 0) { if (showPlot.Value && this.Visible) plotForm.Show(); else plotForm.Hide(); } else { splitContainer.Panel2Collapsed = !showPlot.Value; } treeView.Invalidate(); }; plotLocation.Changed += delegate(object sender, EventArgs e) { switch (plotLocation.Value) { case 0: splitContainer.Panel2.Controls.Clear(); splitContainer.Panel2Collapsed = true; plotForm.Controls.Add(plotPanel); if (showPlot.Value && this.Visible) plotForm.Show(); break; case 1: plotForm.Controls.Clear(); plotForm.Hide(); splitContainer.Orientation = Orientation.Horizontal; splitContainer.Panel2.Controls.Add(plotPanel); splitContainer.Panel2Collapsed = !showPlot.Value; break; case 2: plotForm.Controls.Clear(); plotForm.Hide(); splitContainer.Orientation = Orientation.Vertical; splitContainer.Panel2.Controls.Add(plotPanel); splitContainer.Panel2Collapsed = !showPlot.Value; break; } }; plotForm.FormClosing += delegate(object sender, FormClosingEventArgs e) { if (e.CloseReason == CloseReason.UserClosing) { // just switch off the plotting when the user closes the form if (plotLocation.Value == 0) { showPlot.Value = false; } e.Cancel = true; } }; EventHandler moveOrResizePlotForm = delegate(object sender, EventArgs e) { if (plotForm.WindowState != FormWindowState.Minimized) { settings.SetValue("plotForm.Location.X", plotForm.Bounds.X); settings.SetValue("plotForm.Location.Y", plotForm.Bounds.Y); settings.SetValue("plotForm.Width", plotForm.Bounds.Width); settings.SetValue("plotForm.Height", plotForm.Bounds.Height); } }; plotForm.Move += moveOrResizePlotForm; plotForm.Resize += moveOrResizePlotForm; plotForm.VisibleChanged += delegate(object sender, EventArgs e) { Rectangle bounds = new Rectangle(plotForm.Location, plotForm.Size); Screen screen = Screen.FromRectangle(bounds); Rectangle intersection = Rectangle.Intersect(screen.WorkingArea, bounds); if (intersection.Width < Math.Min(16, bounds.Width) || intersection.Height < Math.Min(16, bounds.Height)) { plotForm.Location = new Point( screen.WorkingArea.Width / 2 - bounds.Width / 2, screen.WorkingArea.Height / 2 - bounds.Height / 2); } }; this.VisibleChanged += delegate(object sender, EventArgs e) { if (this.Visible && showPlot.Value && plotLocation.Value == 0) plotForm.Show(); else plotForm.Hide(); }; }
private void CreateContextMenu() { MenuItem timeWindow = new MenuItem("Time Scale"); MenuItem[] timeWindowMenuItems = { new MenuItem("Auto"), new MenuItem("5 min"), new MenuItem("10 min"), new MenuItem("20 min"), new MenuItem("30 min"), new MenuItem("45 min"), new MenuItem("1 h"), new MenuItem("1.5 h"), new MenuItem("2 h"), new MenuItem("3 h"), new MenuItem("6 h"), new MenuItem("12 h"), new MenuItem("24 h") }; foreach (MenuItem mi in timeWindowMenuItems) timeWindow.MenuItems.Add(mi); timeWindowRadioGroup = new UserRadioGroup("timeWindow", 0, timeWindowMenuItems, settings); this.ContextMenu = new ContextMenu(); this.ContextMenu.MenuItems.Add(timeWindow); }