first commit

This commit is contained in:
2025-04-07 07:44:27 -07:00
commit d6cde0c05e
512 changed files with 142392 additions and 0 deletions

View File

@@ -0,0 +1,178 @@
// 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.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);
}