2010-09-30 20:59:21 +00:00
|
|
|
/*
|
2010-09-06 19:53:13 +00:00
|
|
|
|
2012-05-27 14:23:31 +00:00
|
|
|
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/.
|
2010-09-06 19:53:13 +00:00
|
|
|
|
2012-05-27 14:23:31 +00:00
|
|
|
Copyright (C) 2010-2011 Michael Möller <mmoeller@openhardwaremonitor.org>
|
|
|
|
|
2010-09-06 19:53:13 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
using System;
|
|
|
|
using System.Drawing;
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
|
|
namespace OpenHardwareMonitor.GUI {
|
|
|
|
public abstract class Gadget : IDisposable {
|
|
|
|
|
|
|
|
private GadgetWindow window;
|
|
|
|
|
|
|
|
public Gadget() {
|
|
|
|
this.window = new GadgetWindow();
|
2011-06-22 22:36:17 +00:00
|
|
|
this.window.Paint += delegate(object sender, PaintEventArgs e) {
|
|
|
|
OnPaint(e);
|
|
|
|
};
|
2010-09-06 19:53:13 +00:00
|
|
|
}
|
|
|
|
|
2010-09-07 22:15:02 +00:00
|
|
|
public virtual void Dispose() {
|
2011-06-22 22:36:17 +00:00
|
|
|
window.Dispose();
|
2010-09-06 19:53:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public Point Location {
|
|
|
|
get {
|
|
|
|
return window.Location;
|
|
|
|
}
|
|
|
|
set {
|
|
|
|
window.Location = value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public event EventHandler LocationChanged {
|
|
|
|
add {
|
|
|
|
window.LocationChanged += value;
|
|
|
|
}
|
|
|
|
remove {
|
|
|
|
window.LocationChanged -= value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2010-09-13 22:34:08 +00:00
|
|
|
public virtual Size Size {
|
2010-09-06 19:53:13 +00:00
|
|
|
get {
|
|
|
|
return window.Size;
|
|
|
|
}
|
2010-09-13 22:34:08 +00:00
|
|
|
set {
|
|
|
|
this.window.Size = value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public event EventHandler SizeChanged {
|
|
|
|
add {
|
|
|
|
window.SizeChanged += value;
|
|
|
|
}
|
|
|
|
remove {
|
|
|
|
window.SizeChanged -= value;
|
2010-09-06 19:53:13 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public byte Opacity {
|
|
|
|
get {
|
|
|
|
return window.Opacity;
|
|
|
|
}
|
|
|
|
set {
|
|
|
|
window.Opacity = value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2010-09-13 22:34:08 +00:00
|
|
|
public bool LockPositionAndSize {
|
2010-09-06 19:53:13 +00:00
|
|
|
get {
|
2010-09-13 22:34:08 +00:00
|
|
|
return window.LockPositionAndSize;
|
2010-09-06 19:53:13 +00:00
|
|
|
}
|
|
|
|
set {
|
2010-09-13 22:34:08 +00:00
|
|
|
window.LockPositionAndSize = value;
|
2010-09-06 19:53:13 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public bool AlwaysOnTop {
|
|
|
|
get {
|
|
|
|
return window.AlwaysOnTop;
|
|
|
|
}
|
|
|
|
set {
|
|
|
|
window.AlwaysOnTop = value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public ContextMenu ContextMenu {
|
|
|
|
get {
|
|
|
|
return window.ContextMenu;
|
|
|
|
}
|
|
|
|
set {
|
|
|
|
window.ContextMenu = value;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2010-09-13 22:34:08 +00:00
|
|
|
public event HitTestEventHandler HitTest {
|
|
|
|
add {
|
|
|
|
window.HitTest += value;
|
|
|
|
}
|
|
|
|
remove {
|
|
|
|
window.HitTest -= value;
|
|
|
|
}
|
2010-11-21 12:28:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public event MouseEventHandler MouseDoubleClick {
|
|
|
|
add {
|
|
|
|
window.MouseDoubleClick += value;
|
|
|
|
}
|
|
|
|
remove {
|
|
|
|
window.MouseDoubleClick -= value;
|
|
|
|
}
|
|
|
|
}
|
2010-09-13 22:34:08 +00:00
|
|
|
|
2010-09-06 19:53:13 +00:00
|
|
|
public bool Visible {
|
|
|
|
get {
|
|
|
|
return window.Visible;
|
|
|
|
}
|
|
|
|
set {
|
|
|
|
if (value != window.Visible) {
|
|
|
|
window.Visible = value;
|
2011-05-16 22:04:04 +00:00
|
|
|
if (VisibleChanged != null)
|
|
|
|
VisibleChanged(this, EventArgs.Empty);
|
2010-09-30 20:59:21 +00:00
|
|
|
if (value)
|
|
|
|
Redraw();
|
2010-09-06 19:53:13 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-05-16 22:04:04 +00:00
|
|
|
public event EventHandler VisibleChanged;
|
|
|
|
|
2010-09-06 19:53:13 +00:00
|
|
|
public void Redraw() {
|
2011-06-22 22:36:17 +00:00
|
|
|
window.Redraw();
|
2010-09-06 19:53:13 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
protected abstract void OnPaint(PaintEventArgs e);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|