public SensorNotifyIcon(SystemTray sensorSystemTray, ISensor sensor, bool balloonTip, PersistentSettings settings) { this.sensor = sensor; this.notifyIcon = new NotifyIcon(); Color defaultColor = Color.Black; if (sensor.SensorType == SensorType.Load || sensor.SensorType == SensorType.Control || sensor.SensorType == SensorType.Level) { defaultColor = Color.FromArgb(0xff, 0x70, 0x8c, 0xf1); } Color = settings.GetValue(new Identifier(sensor.Identifier, "traycolor").ToString(), defaultColor); this.pen = new Pen(Color.FromArgb(96, Color.Black)); this.font = SystemFonts.MessageBoxFont; ContextMenu contextMenu = new ContextMenu(); MenuItem hideShowItem = new MenuItem("Hide/Show"); hideShowItem.Click += delegate(object obj, EventArgs args) { sensorSystemTray.SendHideShowCommand(); }; contextMenu.MenuItems.Add(hideShowItem); contextMenu.MenuItems.Add(new MenuItem("-")); MenuItem removeItem = new MenuItem("Remove Sensor"); removeItem.Click += delegate(object obj, EventArgs args) { sensorSystemTray.Remove(this.sensor); }; contextMenu.MenuItems.Add(removeItem); MenuItem colorItem = new MenuItem("Change Color..."); colorItem.Click += delegate(object obj, EventArgs args) { ColorDialog dialog = new ColorDialog(); dialog.Color = Color; if (dialog.ShowDialog() == DialogResult.OK) { Color = dialog.Color; settings.SetValue(new Identifier(sensor.Identifier, "traycolor").ToString(), Color); } }; contextMenu.MenuItems.Add(colorItem); contextMenu.MenuItems.Add(new MenuItem("-")); MenuItem exitItem = new MenuItem("Exit"); exitItem.Click += delegate(object obj, EventArgs args) { sensorSystemTray.SendExitCommand(); }; contextMenu.MenuItems.Add(exitItem); this.notifyIcon.ContextMenu = contextMenu; this.notifyIcon.DoubleClick += delegate(object obj, EventArgs args) { sensorSystemTray.SendHideShowCommand(); }; // get the default dpi to create an icon with the correct size float dpiX, dpiY; using (Bitmap b = new Bitmap(1, 1, PixelFormat.Format32bppArgb)) { dpiX = b.HorizontalResolution; dpiY = b.VerticalResolution; } // adjust the size of the icon to current dpi (default is 16x16 at 96 dpi) int width = (int)Math.Round(16 * dpiX / 96); int height = (int)Math.Round(16 * dpiY / 96); // make sure it does never get smaller than 16x16 width = width < 16 ? 16: width; height = height < 16 ? 16: height; this.bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb); this.graphics = Graphics.FromImage(this.bitmap); if (Environment.OSVersion.Version.Major > 5) { this.graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; this.graphics.SmoothingMode = SmoothingMode.HighQuality; } }
private void treeView_Click(object sender, EventArgs e) { MouseEventArgs m = e as MouseEventArgs; if (m == null || m.Button != MouseButtons.Right) { return; } NodeControlInfo info = treeView.GetNodeControlInfoAt( new Point(m.X, m.Y) ); treeView.SelectedNode = info.Node; if (info.Node != null) { SensorNode node = info.Node.Tag as SensorNode; if (node != null && node.Sensor != null) { treeContextMenu.MenuItems.Clear(); if (node.Sensor.Parameters.Length > 0) { MenuItem item = new MenuItem("Parameters..."); item.Click += delegate(object obj, EventArgs args) { ShowParameterForm(node.Sensor); }; treeContextMenu.MenuItems.Add(item); } if (nodeTextBoxText.EditEnabled) { MenuItem item = new MenuItem("Rename"); item.Click += delegate(object obj, EventArgs args) { nodeTextBoxText.BeginEdit(); }; treeContextMenu.MenuItems.Add(item); } if (node.IsVisible) { MenuItem item = new MenuItem("Hide"); item.Click += delegate(object obj, EventArgs args) { node.IsVisible = false; }; treeContextMenu.MenuItems.Add(item); } else { MenuItem item = new MenuItem("Unhide"); item.Click += delegate(object obj, EventArgs args) { node.IsVisible = true; }; treeContextMenu.MenuItems.Add(item); } treeContextMenu.MenuItems.Add(new MenuItem("-")); { MenuItem item = new MenuItem("Pen Color..."); item.Click += delegate(object obj, EventArgs args) { ColorDialog dialog = new ColorDialog(); dialog.Color = node.PenColor.GetValueOrDefault(); if (dialog.ShowDialog() == DialogResult.OK) { node.PenColor = dialog.Color; } }; treeContextMenu.MenuItems.Add(item); } { MenuItem item = new MenuItem("Reset Pen Color"); item.Click += delegate(object obj, EventArgs args) { node.PenColor = null; }; treeContextMenu.MenuItems.Add(item); } treeContextMenu.MenuItems.Add(new MenuItem("-")); { MenuItem item = new MenuItem("Show in Tray"); item.Checked = systemTray.Contains(node.Sensor); item.Click += delegate(object obj, EventArgs args) { if (item.Checked) { systemTray.Remove(node.Sensor); } else { systemTray.Add(node.Sensor, true); } }; treeContextMenu.MenuItems.Add(item); } if (gadget != null) { MenuItem item = new MenuItem("Show in Gadget"); item.Checked = gadget.Contains(node.Sensor); item.Click += delegate(object obj, EventArgs args) { if (item.Checked) { gadget.Remove(node.Sensor); } else { gadget.Add(node.Sensor); } }; treeContextMenu.MenuItems.Add(item); } if (node.Sensor.Control != null) { treeContextMenu.MenuItems.Add(new MenuItem("-")); IControl control = node.Sensor.Control; MenuItem controlItem = new MenuItem("Control"); MenuItem defaultItem = new MenuItem("Default"); defaultItem.Checked = control.ActualControlMode == ControlMode.Default; controlItem.MenuItems.Add(defaultItem); defaultItem.Click += delegate(object obj, EventArgs args) { control.SetDefault(); }; MenuItem manualItem = new MenuItem("Manual"); controlItem.MenuItems.Add(manualItem); manualItem.Checked = control.ActualControlMode == ControlMode.Software; for (int i = 0; i <= 100; i += 5) { if (i <= control.MaxSoftwareValue && i >= control.MinSoftwareValue) { MenuItem item = new MenuItem(i + " %"); item.RadioCheck = true; manualItem.MenuItems.Add(item); item.Checked = control.ActualControlMode == ControlMode.Software && Math.Round(control.SoftwareValue) == i; int softwareValue = i; item.Click += delegate(object obj, EventArgs args) { control.SetSoftware(softwareValue); }; } } MenuItem curveItem = new MenuItem("Manual Curve"); controlItem.MenuItems.Add(curveItem); curveItem.Checked = control.ActualControlMode == ControlMode.SoftwareCurve; MenuItem newCurveItem = new MenuItem("New"); newCurveItem.Click += delegate(object obj, EventArgs args) { var confirmSensorselect = MessageBox.Show("Select the other sensor after clicking OK.", "New Manual Curve", MessageBoxButtons.OKCancel); if (confirmSensorselect == DialogResult.OK) { // Listen for user click on sensor EventHandler selectorListener = null; selectorListener = (curveselect_sender, curveselect_e) => { MouseEventArgs curveselect_m = curveselect_e as MouseEventArgs; if (curveselect_m == null || curveselect_m.Button != MouseButtons.Left) { this.treeView.Click -= selectorListener; return; } // Try find sensor user clicked NodeControlInfo curveselect_info = treeView.GetNodeControlInfoAt(new Point(curveselect_m.X, curveselect_m.Y)); if (curveselect_info.Node != null) { SensorNode curveselect_node = curveselect_info.Node.Tag as SensorNode; if (curveselect_node != null && curveselect_node.Sensor != null) { new SensorControlForm(node.Sensor, curveselect_node.Sensor, null).ShowDialog(); return; } } var tryagainSensorselect = MessageBox.Show("Could not find sensor. Try again?", "Manual Curve", MessageBoxButtons.RetryCancel); if (tryagainSensorselect != DialogResult.Retry) { this.treeView.Click -= selectorListener; } }; this.treeView.Click += selectorListener; } }; curveItem.MenuItems.Add(newCurveItem); var softwareCurve = node.Sensor.Control.GetSoftwareCurve(); if (softwareCurve != null) { // edit curve MenuItem editCurveItem = new MenuItem("Edit"); curveItem.MenuItems.Add(editCurveItem); editCurveItem.Click += delegate(object obj, EventArgs args) { new SensorControlForm(node.Sensor, softwareCurve.Sensor, softwareCurve.Points).ShowDialog(); }; if (control.ActualControlMode != ControlMode.SoftwareCurve) { // enable curve MenuItem enableCurveItem = new MenuItem("Enable"); curveItem.MenuItems.Add(enableCurveItem); enableCurveItem.Click += delegate(object obj, EventArgs args) { node.Sensor.Control.SetSoftwareCurve(softwareCurve.Points, softwareCurve.Sensor); }; } } treeContextMenu.MenuItems.Add(controlItem); } treeContextMenu.Show(treeView, new Point(m.X, m.Y)); } HardwareNode hardwareNode = info.Node.Tag as HardwareNode; if (hardwareNode != null && hardwareNode.Hardware != null) { treeContextMenu.MenuItems.Clear(); if (nodeTextBoxText.EditEnabled) { MenuItem item = new MenuItem("Rename"); item.Click += delegate(object obj, EventArgs args) { nodeTextBoxText.BeginEdit(); }; treeContextMenu.MenuItems.Add(item); } treeContextMenu.Show(treeView, new Point(m.X, m.Y)); } } }
public SensorNotifyIcon(SystemTray sensorSystemTray, ISensor sensor, bool balloonTip, PersistentSettings settings) { this.sensor = sensor; this.notifyIcon = new NotifyIcon(); Color defaultColor = Color.Black; if (sensor.SensorType == SensorType.Load) { defaultColor = Color.FromArgb(0xff, 0x70, 0x8c, 0xf1); } Color = settings.GetValue(new Identifier(sensor.Identifier, "traycolor").ToString(), defaultColor); this.pen = new Pen(Color.FromArgb(96, Color.Black)); this.font = SystemFonts.MessageBoxFont; ContextMenu contextMenu = new ContextMenu(); MenuItem hideShowItem = new MenuItem("Hide/Show"); hideShowItem.Click += delegate(object obj, EventArgs args) { sensorSystemTray.SendHideShowCommand(); }; contextMenu.MenuItems.Add(hideShowItem); contextMenu.MenuItems.Add(new MenuItem("-")); MenuItem removeItem = new MenuItem("Remove Sensor"); removeItem.Click += delegate(object obj, EventArgs args) { sensorSystemTray.Remove(this.sensor); }; contextMenu.MenuItems.Add(removeItem); MenuItem colorItem = new MenuItem("Change Color..."); colorItem.Click += delegate(object obj, EventArgs args) { ColorDialog dialog = new ColorDialog(); dialog.Color = Color; if (dialog.ShowDialog() == DialogResult.OK) { Color = dialog.Color; settings.SetValue(new Identifier(sensor.Identifier, "traycolor").ToString(), Color); } }; contextMenu.MenuItems.Add(colorItem); contextMenu.MenuItems.Add(new MenuItem("-")); MenuItem exitItem = new MenuItem("Exit"); exitItem.Click += delegate(object obj, EventArgs args) { sensorSystemTray.SendExitCommand(); }; contextMenu.MenuItems.Add(exitItem); this.notifyIcon.ContextMenu = contextMenu; this.notifyIcon.DoubleClick += delegate(object obj, EventArgs args) { sensorSystemTray.SendHideShowCommand(); }; this.bitmap = new Bitmap(16, 16, PixelFormat.Format32bppArgb); this.graphics = Graphics.FromImage(this.bitmap); if (Environment.OSVersion.Version.Major > 5) { this.graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; this.graphics.SmoothingMode = SmoothingMode.HighQuality; } }
public SensorNotifyIcon(SystemTray sensorSystemTray, ISensor sensor, bool balloonTip, PersistentSettings settings, UnitManager unitManager) { this.unitManager = unitManager; this.sensor = sensor; this.notifyIcon = new NotifyIconAdv(); Color defaultColor = Color.White; if (sensor.SensorType == SensorType.Load || sensor.SensorType == SensorType.Control || sensor.SensorType == SensorType.Level) { defaultColor = Color.FromArgb(0xff, 0x70, 0x8c, 0xf1); } Color = settings.GetValue(new Identifier(sensor.Identifier, "traycolor").ToString(), defaultColor); ColorBG = settings.GetValue(new Identifier(sensor.Identifier, "traycolorbg").ToString(), Color.Black); ContextMenu contextMenu = new ContextMenu(); MenuItem hideShowItem = new MenuItem("Hide/Show"); hideShowItem.Click += delegate(object obj, EventArgs args) { sensorSystemTray.SendHideShowCommand(); }; contextMenu.MenuItems.Add(hideShowItem); contextMenu.MenuItems.Add(new MenuItem("-")); MenuItem removeItem = new MenuItem("Remove Sensor"); removeItem.Click += delegate(object obj, EventArgs args) { sensorSystemTray.Remove(this.sensor); }; contextMenu.MenuItems.Add(removeItem); MenuItem colorItem = new MenuItem("FG Color..."); colorItem.Click += delegate(object obj, EventArgs args) { ColorDialog dialog = new ColorDialog(); dialog.Color = Color; if (dialog.ShowDialog() == DialogResult.OK) { Color = dialog.Color; settings.SetValue(new Identifier(sensor.Identifier, "traycolor").ToString(), Color); } }; contextMenu.MenuItems.Add(colorItem); MenuItem bgcolorItem = new MenuItem("BG Color..."); bgcolorItem.Click += delegate(object obj, EventArgs args) { ColorDialog dialog = new ColorDialog(); dialog.Color = ColorBG; if (dialog.ShowDialog() == DialogResult.OK) { ColorBG = dialog.Color; settings.SetValue(new Identifier(sensor.Identifier, "traycolorbg").ToString(), ColorBG); } }; contextMenu.MenuItems.Add(bgcolorItem); contextMenu.MenuItems.Add(new MenuItem("-")); MenuItem exitItem = new MenuItem("Exit"); exitItem.Click += delegate(object obj, EventArgs args) { sensorSystemTray.SendExitCommand(); }; contextMenu.MenuItems.Add(exitItem); this.notifyIcon.ContextMenu = contextMenu; this.notifyIcon.DoubleClick += delegate(object obj, EventArgs args) { sensorSystemTray.SendHideShowCommand(); }; // get the default dpi to create an icon with the correct size float dpiX, dpiY; using (Bitmap b = new Bitmap(1, 1, PixelFormat.Format32bppArgb)) { dpiX = b.HorizontalResolution; dpiY = b.VerticalResolution; } // adjust the size of the icon to current dpi (default is 16x16 at 96 dpi) int width = (int)Math.Round(16 * dpiX / 96); int height = (int)Math.Round(16 * dpiY / 96); // make sure it does never get smaller than 16x16 width = width < 16 ? 16 : width; height = height < 16 ? 16 : height; // adjust the font size to the icon size FontFamily family = SystemFonts.MessageBoxFont.FontFamily; float baseSize; switch (family.Name) { case "Segoe UI": baseSize = 12; break; case "Tahoma": baseSize = 11; break; default: baseSize = 12; break; } this.font = new Font(family, baseSize * width / 16.0f, GraphicsUnit.Pixel); this.smallFont = new Font(family, 0.75f * baseSize * width / 16.0f, GraphicsUnit.Pixel); this.bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb); this.graphics = Graphics.FromImage(this.bitmap); if (Environment.OSVersion.Version.Major > 5) { this.graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; this.graphics.SmoothingMode = SmoothingMode.HighQuality; } }
private void treeView_Click(object sender, EventArgs e) { MouseEventArgs m = e as MouseEventArgs; if (m == null || m.Button != MouseButtons.Right) { return; } NodeControlInfo info = treeView.GetNodeControlInfoAt(new Point(m.X, m.Y)); treeView.SelectedNode = info.Node; if (info.Node != null) { SensorNode node = info.Node.Tag as SensorNode; if (node != null && node.Sensor != null) { treeContextMenu.MenuItems.Clear(); if (node.Sensor.Parameters.Length > 0) { MenuItem item = new MenuItem("参数..."); item.Click += delegate(object obj, EventArgs args) { ShowParameterForm(node.Sensor); }; treeContextMenu.MenuItems.Add(item); } if (nodeTextBoxText.EditEnabled) { MenuItem item = new MenuItem("重命名"); item.Click += delegate(object obj, EventArgs args) { nodeTextBoxText.BeginEdit(); }; treeContextMenu.MenuItems.Add(item); } if (node.IsVisible) { MenuItem item = new MenuItem("隐藏"); item.Click += delegate(object obj, EventArgs args) { node.IsVisible = false; }; treeContextMenu.MenuItems.Add(item); } else { MenuItem item = new MenuItem("取消隐藏"); item.Click += delegate(object obj, EventArgs args) { node.IsVisible = true; }; treeContextMenu.MenuItems.Add(item); } treeContextMenu.MenuItems.Add(new MenuItem("-")); { MenuItem item = new MenuItem("在托盘中显示"); item.Checked = systemTray.Contains(node.Sensor); item.Click += delegate(object obj, EventArgs args) { if (item.Checked) { systemTray.Remove(node.Sensor); } else { systemTray.Add(node.Sensor, true); } }; treeContextMenu.MenuItems.Add(item); } if (gadget != null) { MenuItem item = new MenuItem("显示小工具"); item.Checked = gadget.Contains(node.Sensor); item.Click += delegate(object obj, EventArgs args) { if (item.Checked) { gadget.Remove(node.Sensor); } else { gadget.Add(node.Sensor); } }; treeContextMenu.MenuItems.Add(item); } if (node.Sensor.Control != null) { treeContextMenu.MenuItems.Add(new MenuItem("-")); IControl control = node.Sensor.Control; MenuItem controlItem = new MenuItem("控制"); MenuItem defaultItem = new MenuItem("默认"); defaultItem.Checked = control.ControlMode == ControlMode.Default; controlItem.MenuItems.Add(defaultItem); defaultItem.Click += delegate(object obj, EventArgs args) { control.SetDefault(); }; MenuItem manualItem = new MenuItem("手动"); controlItem.MenuItems.Add(manualItem); manualItem.Checked = control.ControlMode == ControlMode.Software; for (int i = 0; i <= 100; i += 5) { if (i <= control.MaxSoftwareValue && i >= control.MinSoftwareValue) { MenuItem item = new MenuItem(i + " %"); item.RadioCheck = true; manualItem.MenuItems.Add(item); item.Checked = control.ControlMode == ControlMode.Software && Math.Round(control.SoftwareValue) == i; int softwareValue = i; item.Click += delegate(object obj, EventArgs args) { control.SetSoftware(softwareValue); }; } } treeContextMenu.MenuItems.Add(controlItem); } treeContextMenu.Show(treeView, new Point(m.X, m.Y)); } HardwareNode hardwareNode = info.Node.Tag as HardwareNode; if (hardwareNode != null && hardwareNode.Hardware != null) { treeContextMenu.MenuItems.Clear(); if (nodeTextBoxText.EditEnabled) { MenuItem item = new MenuItem("重命名"); item.Click += delegate(object obj, EventArgs args) { nodeTextBoxText.BeginEdit(); }; treeContextMenu.MenuItems.Add(item); } treeContextMenu.Show(treeView, new Point(m.X, m.Y)); } } }
private void treeView_Click(object sender, EventArgs e) { MouseEventArgs m = e as MouseEventArgs; if (m == null || m.Button != MouseButtons.Right) { return; } NodeControlInfo info = treeView.GetNodeControlInfoAt(new Point(m.X, m.Y)); treeView.SelectedNode = info.Node; if (info.Node != null) { SensorNode node = info.Node.Tag as SensorNode; if (node != null && node.Sensor != null) { sensorContextMenu.MenuItems.Clear(); if (node.Sensor.Parameters.Length > 0) { MenuItem item = new MenuItem("Parameters..."); item.Click += delegate(object obj, EventArgs args) { ShowParameterForm(node.Sensor); }; sensorContextMenu.MenuItems.Add(item); } if (nodeTextBoxText.EditEnabled) { MenuItem item = new MenuItem("Rename"); item.Click += delegate(object obj, EventArgs args) { nodeTextBoxText.BeginEdit(); }; sensorContextMenu.MenuItems.Add(item); } if (node.IsVisible) { MenuItem item = new MenuItem("Hide"); item.Click += delegate(object obj, EventArgs args) { node.IsVisible = false; }; sensorContextMenu.MenuItems.Add(item); } else { MenuItem item = new MenuItem("Unhide"); item.Click += delegate(object obj, EventArgs args) { node.IsVisible = true; }; sensorContextMenu.MenuItems.Add(item); } sensorContextMenu.MenuItems.Add(new MenuItem("-")); { MenuItem item = new MenuItem("Show in Tray"); item.Checked = systemTray.Contains(node.Sensor); item.Click += delegate(object obj, EventArgs args) { if (item.Checked) { systemTray.Remove(node.Sensor); } else { systemTray.Add(node.Sensor, true); } }; sensorContextMenu.MenuItems.Add(item); } { MenuItem item = new MenuItem("Show in Gadget"); item.Checked = gadget.Contains(node.Sensor); item.Click += delegate(object obj, EventArgs args) { if (item.Checked) { gadget.Remove(node.Sensor); } else { gadget.Add(node.Sensor); } }; sensorContextMenu.MenuItems.Add(item); } sensorContextMenu.Show(treeView, new Point(m.X, m.Y)); } } }