Files
ReLibreHardwareMonitor/LibreHardwareMonitor.Windows.Forms/UI/Gadget.cs
T
Blacktempel e1f284cbb6 Prepare for Avalonia app - rename LHM UI project (#2360)
* Prepare for Avalonia app - rename LHM UI project.

* Rename

* Fix icons not being displayed.

* Rename workflow project
2026-05-15 10:29:57 +02:00

179 lines
3.3 KiB
C#

// This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
// If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
// Copyright (C) LibreHardwareMonitor and Contributors.
// Partial Copyright (C) Michael Möller <mmoeller@openhardwaremonitor.org> and Contributors.
// All Rights Reserved.
using System;
using System.Drawing;
using System.Windows.Forms;
namespace LibreHardwareMonitor.Windows.Forms.UI;
public abstract class Gadget : IDisposable
{
private readonly GadgetWindow _window;
public event EventHandler VisibleChanged;
protected Gadget()
{
_window = new GadgetWindow();
_window.Paint += delegate (object sender, PaintEventArgs e)
{
OnPaint(e);
};
}
public virtual void Dispose()
{
_window.Dispose();
}
public Point Location
{
get
{
return _window.Location;
}
set
{
_window.Location = value;
}
}
public event EventHandler LocationChanged
{
add
{
_window.LocationChanged += value;
}
remove
{
_window.LocationChanged -= value;
}
}
public virtual Size Size
{
get
{
return _window.Size;
}
set
{
_window.Size = value;
}
}
public event EventHandler SizeChanged
{
add
{
_window.SizeChanged += value;
}
remove
{
_window.SizeChanged -= value;
}
}
public byte Opacity
{
get
{
return _window.Opacity;
}
set
{
_window.Opacity = value;
}
}
public bool LockPositionAndSize
{
get
{
return _window.LockPositionAndSize;
}
set
{
_window.LockPositionAndSize = value;
}
}
public bool AlwaysOnTop
{
get
{
return _window.AlwaysOnTop;
}
set
{
_window.AlwaysOnTop = value;
}
}
public ContextMenuStrip ContextMenuStrip
{
get
{
return _window.ContextMenuStrip;
}
set
{
_window.ContextMenuStrip = value;
}
}
public event HitTestEventHandler HitTest
{
add
{
_window.HitTest += value;
}
remove
{
_window.HitTest -= value;
}
}
public event MouseEventHandler MouseDoubleClick
{
add
{
_window.MouseDoubleClick += value;
}
remove
{
_window.MouseDoubleClick -= value;
}
}
public bool Visible
{
get
{
return _window.Visible;
}
set
{
if (value != _window.Visible)
{
_window.Visible = value;
VisibleChanged?.Invoke(this, EventArgs.Empty);
if (value)
Redraw();
}
}
}
public void Redraw()
{
_window.Redraw();
}
protected abstract void OnPaint(PaintEventArgs e);
}