aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.WinForms/Tools
diff options
context:
space:
mode:
Diffstat (limited to 'ShiftOS.WinForms/Tools')
-rw-r--r--ShiftOS.WinForms/Tools/ControlManager.cs292
-rw-r--r--ShiftOS.WinForms/Tools/DitheringEngine.cs231
-rw-r--r--ShiftOS.WinForms/Tools/ShiftOSMenuRenderer.cs55
3 files changed, 344 insertions, 234 deletions
diff --git a/ShiftOS.WinForms/Tools/ControlManager.cs b/ShiftOS.WinForms/Tools/ControlManager.cs
index 5cc4813..92482fa 100644
--- a/ShiftOS.WinForms/Tools/ControlManager.cs
+++ b/ShiftOS.WinForms/Tools/ControlManager.cs
@@ -1,3 +1,4 @@
+
/*
* MIT License
*
@@ -28,6 +29,7 @@ using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using ShiftOS.Engine;
@@ -67,89 +69,46 @@ namespace ShiftOS.WinForms.Tools
}
- public static void SetupWindows()
+ internal static Color ConvertColor(ConsoleColor cCol)
{
- if (SaveSystem.CurrentSave != null)
+ switch (cCol)
{
- int screen_height_start = 0;
- if (Shiftorium.UpgradeInstalled("wm_free_placement"))
- {
- }
- else if (Shiftorium.UpgradeInstalled("wm_4_windows"))
- {
- int screen_width_half = Screen.PrimaryScreen.Bounds.Width / 2;
- int screen_height_half = (Screen.PrimaryScreen.Bounds.Height - screen_height_start) / 2;
-
- for (int i = 0; i < OpenForms.Count; i++)
- {
- var frm = OpenForms[i] as WindowBorder;
-
- switch (i)
- {
- case 0:
- frm.Location = new System.Drawing.Point(0, screen_height_start);
- frm.Size = new System.Drawing.Size((OpenForms.Count > 1) ? screen_width_half : screen_width_half * 2, (OpenForms.Count > 2) ? screen_height_half : screen_height_half * 2);
-
- break;
- case 1:
- frm.Location = new System.Drawing.Point(screen_width_half, screen_height_start);
- frm.Size = new System.Drawing.Size(screen_width_half, (OpenForms.Count > 2) ? screen_height_half : screen_height_half * 2);
- break;
- case 2:
- frm.Location = new System.Drawing.Point(0, screen_height_half + screen_height_start);
- frm.Size = new System.Drawing.Size((OpenForms.Count > 3) ? screen_width_half : screen_width_half * 2, screen_height_half);
- break;
- case 3:
- frm.Location = new System.Drawing.Point(screen_width_half, screen_height_half + screen_height_start);
- frm.Size = new System.Drawing.Size(screen_width_half, (OpenForms.Count > 2) ? screen_height_half : screen_height_half * 2);
- break;
- }
- }
-
- }
- else if (Shiftorium.UpgradeInstalled("window_manager"))
- {
- int screen_width_half = Screen.PrimaryScreen.Bounds.Width / 2;
- int screen_height = (Screen.PrimaryScreen.Bounds.Height) - screen_height_start;
-
-
-
- for (int i = 0; i < OpenForms.Count; i++)
- {
-
-
- var frm = OpenForms[i] as WindowBorder;
- switch (i)
- {
- case 0:
- frm.Location = new System.Drawing.Point(0, screen_height_start);
- frm.Size = new System.Drawing.Size((OpenForms.Count > 1) ? screen_width_half : screen_width_half * 2, screen_height);
- break;
- case 1:
- frm.Location = new System.Drawing.Point(screen_width_half, screen_height_start);
- frm.Size = new System.Drawing.Size(screen_width_half, screen_height);
- break;
- }
- OpenForms[i] = frm;
- }
- }
- else
- {
- var frm = OpenForms[0] as WindowBorder;
- frm.Location = new Point(0, 0);
- frm.Size = Desktop.Size;
- OpenForms[0] = frm;
-
- }
+ case ConsoleColor.Black:
+ return Color.Black;
+ case ConsoleColor.Gray:
+ return Color.Gray;
+ case ConsoleColor.DarkGray:
+ return Color.DarkGray;
+ case ConsoleColor.Blue:
+ return Color.Blue;
+ case ConsoleColor.Cyan:
+ return Color.Cyan;
+ case ConsoleColor.DarkBlue:
+ return Color.DarkBlue;
+ case ConsoleColor.DarkCyan:
+ return Color.DarkCyan;
+ case ConsoleColor.DarkGreen:
+ return Color.DarkGreen;
+ case ConsoleColor.DarkMagenta:
+ return Color.DarkMagenta;
+ case ConsoleColor.DarkRed:
+ return Color.DarkRed;
+ case ConsoleColor.DarkYellow:
+ return Color.YellowGreen;
+ case ConsoleColor.Yellow:
+ return Color.Yellow;
+ case ConsoleColor.Green:
+ return Color.Green;
+ case ConsoleColor.Magenta:
+ return Color.Magenta;
+ case ConsoleColor.Red:
+ return Color.Red;
+ case ConsoleColor.White:
+ return Color.White;
+ default:
+ return Color.Black;
}
- else
- {
- var frm = OpenForms[0] as WindowBorder;
- frm.Location = new Point(0, 0);
- frm.Size = Desktop.Size;
- OpenForms[0] = frm;
- }
}
public static void SetCursor(Control ctrl)
@@ -172,55 +131,133 @@ namespace ShiftOS.WinForms.Tools
#endif
}
+ /// <summary>
+ /// Centers the control along its parent.
+ /// </summary>
+ /// <param name="ctrl">The control to center (this is an extension method - you can call it on a control as though it was a method in that control)</param>
+ public static void CenterParent(this Control ctrl)
+ {
+ ctrl.Location = new Point(
+ (ctrl.Parent.Width - ctrl.Width) / 2,
+ (ctrl.Parent.Height - ctrl.Height) / 2
+ );
+ }
+
public static void SetupControl(Control ctrl)
{
- SuspendDrawing(ctrl);
- SetCursor(ctrl);
- if (!(ctrl is MenuStrip) && !(ctrl is ToolStrip) && !(ctrl is StatusStrip) && !(ctrl is ContextMenuStrip))
+ Desktop.InvokeOnWorkerThread(() =>
{
- string tag = "";
-
- try
+ if (!(ctrl is MenuStrip) && !(ctrl is ToolStrip) && !(ctrl is StatusStrip) && !(ctrl is ContextMenuStrip))
{
- tag = ctrl.Tag.ToString();
- }
- catch { }
+ string tag = "";
- if (!tag.Contains("keepbg"))
- {
- if (ctrl.BackColor != Control.DefaultBackColor)
+ try
{
- ctrl.BackColor = SkinEngine.LoadedSkin.ControlColor;
+ if (ctrl.Tag != null)
+ tag = ctrl.Tag.ToString();
}
- }
+ catch { }
- ctrl.ForeColor = SkinEngine.LoadedSkin.ControlTextColor;
+ if (!tag.Contains("keepbg"))
+ {
+ if (ctrl.BackColor != Control.DefaultBackColor)
+ {
+ ctrl.BackColor = SkinEngine.LoadedSkin.ControlColor;
+ }
+ }
- ctrl.Font = SkinEngine.LoadedSkin.MainFont;
+ if (!tag.Contains("keepfont"))
+ {
+ ctrl.ForeColor = SkinEngine.LoadedSkin.ControlTextColor;
+ ctrl.Font = SkinEngine.LoadedSkin.MainFont;
+ if (tag.Contains("header1"))
+ {
+ Desktop.InvokeOnWorkerThread(() =>
+ {
+ ctrl.Font = SkinEngine.LoadedSkin.HeaderFont;
+ });
+ }
- if (tag.Contains("header1"))
- {
- ctrl.Font = SkinEngine.LoadedSkin.HeaderFont;
- }
+ if (tag.Contains("header2"))
+ {
+ ctrl.Font = SkinEngine.LoadedSkin.Header2Font;
+ }
- if (tag.Contains("header2"))
- {
- ctrl.Font = SkinEngine.LoadedSkin.Header2Font;
- }
+ if (tag.Contains("header3"))
+ {
- if (tag.Contains("header3"))
- {
- ctrl.Font = SkinEngine.LoadedSkin.Header3Font;
+ ctrl.Font = SkinEngine.LoadedSkin.Header3Font;
+ }
+ }
+ try
+ {
+#if !SLOW_LOCALIZATION
+ if (!string.IsNullOrWhiteSpace(ctrl.Text))
+ {
+ string ctrlText = Localization.Parse(ctrl.Text);
+ ctrl.Text = ctrlText;
+ }
+#endif
+ }
+ catch
+ {
+
+ }
+
+ if (ctrl is Button)
+ {
+ Button b = ctrl as Button;
+ if (!tag.Contains("keepbg"))
+ {
+ b.BackColor = SkinEngine.LoadedSkin.ButtonBackgroundColor;
+ b.BackgroundImage = SkinEngine.GetImage("buttonidle");
+ b.BackgroundImageLayout = SkinEngine.GetImageLayout("buttonidle");
+ }
+ b.FlatAppearance.BorderSize = SkinEngine.LoadedSkin.ButtonBorderWidth;
+ if (!tag.Contains("keepfg"))
+ {
+ b.FlatAppearance.BorderColor = SkinEngine.LoadedSkin.ButtonForegroundColor;
+ b.ForeColor = SkinEngine.LoadedSkin.ButtonForegroundColor;
+ }
+ if (!tag.Contains("keepfont"))
+ b.Font = SkinEngine.LoadedSkin.ButtonTextFont;
+
+ Color orig_bg = b.BackColor;
+
+ b.MouseEnter += (o, a) =>
+ {
+ b.BackColor = SkinEngine.LoadedSkin.ButtonHoverColor;
+ b.BackgroundImage = SkinEngine.GetImage("buttonhover");
+ b.BackgroundImageLayout = SkinEngine.GetImageLayout("buttonhover");
+ };
+ b.MouseLeave += (o, a) =>
+ {
+ b.BackColor = orig_bg;
+ b.BackgroundImage = SkinEngine.GetImage("buttonidle");
+ b.BackgroundImageLayout = SkinEngine.GetImageLayout("buttonidle");
+ };
+ b.MouseUp += (o, a) =>
+ {
+ b.BackColor = orig_bg;
+ b.BackgroundImage = SkinEngine.GetImage("buttonidle");
+ b.BackgroundImageLayout = SkinEngine.GetImageLayout("buttonidle");
+ };
+
+ b.MouseDown += (o, a) =>
+ {
+ b.BackColor = SkinEngine.LoadedSkin.ButtonPressedColor;
+ b.BackgroundImage = SkinEngine.GetImage("buttonpressed");
+ b.BackgroundImageLayout = SkinEngine.GetImageLayout("buttonpressed");
+
+ };
+ }
}
- try
+ if (ctrl is TextBox)
{
- ctrl.Text = Localization.Parse(ctrl.Text);
+ (ctrl as TextBox).BorderStyle = BorderStyle.FixedSingle;
}
- catch
- {
- }
ctrl.KeyDown += (o, a) =>
{
if (a.Control && a.KeyCode == Keys.T)
@@ -228,13 +265,7 @@ namespace ShiftOS.WinForms.Tools
a.SuppressKeyPress = true;
- if (SaveSystem.CurrentSave != null)
- {
- if (Shiftorium.UpgradeInstalled("window_manager"))
- {
- Engine.AppearanceManager.SetupWindow(new Applications.Terminal());
- }
- }
+ Engine.AppearanceManager.SetupWindow(new Applications.Terminal());
}
ShiftOS.Engine.Scripting.LuaInterpreter.RaiseEvent("on_key_down", a);
@@ -248,12 +279,15 @@ namespace ShiftOS.WinForms.Tools
{
(ctrl as WindowBorder).Setup();
}
- }
-
- MakeDoubleBuffered(ctrl);
- ResumeDrawing(ctrl);
+ MakeDoubleBuffered(ctrl);
+ ControlSetup?.Invoke(ctrl);
+ });
}
+
+
+ public static event Action<Control> ControlSetup;
+
public static void MakeDoubleBuffered(Control c)
{
if (System.Windows.Forms.SystemInformation.TerminalServerSession)
@@ -269,14 +303,18 @@ namespace ShiftOS.WinForms.Tools
}
- public static void SetupControls(Control frm)
+ public static void SetupControls(Control frm, bool runInThread = true)
{
- SetupControl(frm);
-
- for (int i = 0; i < frm.Controls.Count; i++)
+ frm.Click += (o, a) =>
{
- SetupControls(frm.Controls[i]);
+ Desktop.HideAppLauncher();
+ };
+ var ctrls = frm.Controls.ToList();
+ for (int i = 0; i < ctrls.Count(); i++)
+ {
+ SetupControls(ctrls[i]);
}
+ SetupControl(frm);
}
}
diff --git a/ShiftOS.WinForms/Tools/DitheringEngine.cs b/ShiftOS.WinForms/Tools/DitheringEngine.cs
index 8509a0b..d042a40 100644
--- a/ShiftOS.WinForms/Tools/DitheringEngine.cs
+++ b/ShiftOS.WinForms/Tools/DitheringEngine.cs
@@ -33,6 +33,7 @@ using System.Drawing;
using System.Threading;
using ShiftOS.Engine;
using System.Runtime.InteropServices;
+using System.IO;
namespace ShiftOS.WinForms.Tools
{
@@ -101,7 +102,7 @@ namespace ShiftOS.WinForms.Tools
}
}
- public static void DitherColor(Color source, int width, int height, Action<Image> result)
+ public static Image DitherColor(Color source, int width, int height)
{
var bmp = new Bitmap(width + 1, height + 1);
var data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
@@ -115,7 +116,7 @@ namespace ShiftOS.WinForms.Tools
}
Marshal.Copy(rgb, 0, data.Scan0, rgb.Length);
bmp.UnlockBits(data);
- DitherImage(bmp, result);
+ return DitherImage(bmp);
}
@@ -225,16 +226,56 @@ namespace ShiftOS.WinForms.Tools
}
#endif
-#if FLOYDSTEINBERG
- public static void DitherImage(Image source, Action<Image> result)
+ public static int GetClosestColor(int gray, bool eightBits, bool sixBits, bool fourBits, bool twoBits)
{
- if (source == null)
+ int newgray = gray;
+ if (!eightBits)
{
- result?.Invoke(source);
- return;
+ if (sixBits)
+ {
+ newgray = gray >> 2;
+ }
+ else
+ {
+ if (fourBits)
+ {
+ newgray = (int)linear(gray, 0, 255, 0, 15) * 4;
+ }
+ else
+ {
+ if (twoBits)
+ {
+ if (gray > 127 + 63)
+ {
+ newgray = 255;
+ }
+ else if (gray > 127)
+ newgray = 127 + 63;
+ else if (gray > 63)
+ {
+ newgray = 127;
+ }
+ else if (gray > 0)
+ newgray = 63;
+ else
+ newgray = 0;
+ }
+ else
+ {
+ if (gray > 127)
+ newgray = 255;
+ else
+ newgray = 0;
+ }
+ }
+ }
}
+ return newgray;
+ }
-
+#if FLOYDSTEINBERG
+ public static Image DitherImage(Image source)
+ {
var bmp = new Bitmap(source.Width, source.Height);
var sourceBmp = (Bitmap)source;
var sourceLck = sourceBmp.LockBits(new Rectangle(0, 0, sourceBmp.Width, sourceBmp.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
@@ -266,122 +307,84 @@ namespace ShiftOS.WinForms.Tools
bool eightBits = Shiftorium.UpgradeInstalled("color_depth_8_bits");
bool color_depth_floydsteinberg = Shiftorium.UpgradeInstalled("color_depth_floyd-steinberg_dithering");
bool dithering = Shiftorium.UpgradeInstalled("color_depth_dithering");
-
- for (int y = 0; y < (destLck.Height); y++)
+ bool twentyfourbits = Shiftorium.UpgradeInstalled("color_depth_24_bits");
+ if (twentyfourbits)
+ {
+ sourceArr.CopyTo(destArr, 0);
+ }
+ else
{
- for (int x = 0; x < (Math.Abs(destLck.Stride)); x += 3)
- {
- int i = getIndexFromXY(x, y, width);
- byte red = sourceArr[i];
- byte green = sourceArr[i + 1];
- byte blue = sourceArr[i + 2];
-
- Color oldc = Color.FromArgb(red, green, blue);
- Color newc;
- if (sixteenBits)
- {
- newc = GetColor(oldc);
- }
- else
+ if (!sixteenBits)
+ {
+ if (dithering == true)
{
- int gray = ((oldc.R + oldc.G + oldc.B) / 3);
+ if (false == true)
+ {
- byte newgray = 0;
+ }
+ else
+ {
+ int error = 0;
+ for (int i = 0; i < destArr.Length; i += 3)
+ {
+ byte r = sourceArr[i];
+ byte g = sourceArr[i + 1];
+ byte b = sourceArr[i + 2];
- if (dithering && !color_depth_floydsteinberg)
- gray += error_r;
+ if (SkinEngine.LoadedSkin.SystemKey == Color.FromArgb(r, g, b))
+ {
+ destArr[i] = r;
+ destArr[i + 1] = g;
+ destArr[i + 2] = b;
+ continue;
+ }
+ int gray = (((r + g + b) / 3) + error);
+ int newgray = gray;
+ newgray = GetClosestColor(gray, eightBits, sixBits, fourBits, twoBits);
+ if (newgray > 255)
+ newgray = 255;
+ if (newgray < 0)
+ newgray = 0;
+ error = gray - newgray;
+ destArr[i] = (byte)newgray;
+ destArr[i + 1] = (byte)newgray;
+ destArr[i + 2] = (byte)newgray;
- if (eightBits)
- {
- newgray = (byte)gray;
- error_r = 0;
- }
- else if(sixBits)
- {
- newgray = (byte)(linear(gray, 0, 0xFF, 0, 0x3F) * 3);
- error_r = newgray - gray;
- }
- else if (fourBits)
- {
- newgray = (byte)(linear(gray, 0, 0xFF, 0, 0xF) * 0xF);
- error_r = newgray - gray;
- }
- else if (twoBits)
- {
- if (gray >= 191)
- newgray = 0xFF;
- else if (gray >= 127)
- newgray = Color.LightGray.R;
- else if (gray >= 64)
- newgray = Color.DarkGray.R;
- else
- newgray = 0x00;
- error_r = newgray - gray;
- }
- else
- {
- if (gray >= 127)
- newgray = 0xFF;
- else
- newgray = 0x00;
- error_r = newgray - gray;
+ }
}
- newc = Color.FromArgb(newgray, newgray, newgray);
}
- int nextIndex = getIndexFromXY(x + 3, y, width);
- int nextRow = getIndexFromXY(x, y + 1, width);
- int nextIndexOnNextRow = getIndexFromXY(x + 3, y + 1, width);
- int prevIndexOnNextRow = getIndexFromXY(x - 3, y + 1, width);
-
- grays[i] = newc.R;
- grays[i + 1] = newc.G;
- grays[i + 2] = newc.B;
-
- if (dithering)
+ else
{
- if (color_depth_floydsteinberg)
+ for (int i = 0; i < sourceArr.Length; i += 3)
{
- if (x + 3 < width)
+ byte r = sourceArr[i];
+ byte g = sourceArr[i + 1];
+ byte b = sourceArr[i + 2];
+ if (SkinEngine.LoadedSkin.SystemKey == Color.FromArgb(r, g, b))
{
- sourceArr[nextIndex] += (byte)((error_r * 7) / 16);
- sourceArr[nextIndex + 1] += (byte)((error_r * 7) / 16);
- sourceArr[nextIndex + 2] += (byte)((error_r * 7) / 16);
+ destArr[i] = r;
+ destArr[i + 1] = g;
+ destArr[i + 2] = b;
+ continue;
}
- if (y + 1 < height)
- {
- sourceArr[nextRow] += (byte)((error_r) / 16);
- sourceArr[nextRow + 1] += (byte)((error_r) / 16);
- sourceArr[nextRow + 2] += (byte)((error_r) / 16);
- }
- if (x + 3 < width && y + 1 < height)
- {
- sourceArr[nextIndexOnNextRow] += (byte)((error_r * 3) / 16);
- sourceArr[nextIndexOnNextRow + 1] += (byte)((error_r * 3) / 16);
- sourceArr[nextIndexOnNextRow + 2] += (byte)((error_r * 3) / 16);
- }
- if (x - 3 > 0 && y + 1 < height)
- {
- sourceArr[prevIndexOnNextRow] += (byte)((error_r * 5) / 16);
- sourceArr[prevIndexOnNextRow + 1] += (byte)((error_r * 5) / 16);
- sourceArr[prevIndexOnNextRow + 2] += (byte)((error_r * 5) / 16);
+ int gray = (r + g + b) / 3;
+ int newgray = GetClosestColor(gray, eightBits, sixBits, fourBits, twoBits);
+ destArr[i] = (byte)newgray;
+ destArr[i + 1] = (byte)newgray;
+ destArr[i + 2] = (byte)newgray;
+
+
- }
}
}
}
}
- for (int i = 0; i < destArr.Length - 3; i++)
- {
- destArr[i] = grays[i];
-
- }
-
Marshal.Copy(destArr, 0, destPtr, destBytes);
@@ -389,8 +392,7 @@ namespace ShiftOS.WinForms.Tools
- Desktop.InvokeOnWorkerThread(new Action(() => { result?.Invoke(bmp); }));
-
+ return bmp;
}
#endif
@@ -399,4 +401,25 @@ namespace ShiftOS.WinForms.Tools
return (width * y) + x;
}
}
+
+ public class DitheringSkinPostProcessor : ISkinPostProcessor
+ {
+ public byte[] ProcessImage(byte[] original)
+ {
+ try
+ {
+ var img = SkinEngine.ImageFromBinary(original);
+ var dithered = DitheringEngine.DitherImage(img);
+ using (var mstr = new MemoryStream())
+ {
+ dithered.Save(mstr, System.Drawing.Imaging.ImageFormat.Bmp);
+ return mstr.ToArray();
+ }
+ }
+ catch
+ {
+ return original;
+ }
+ }
+ }
}
diff --git a/ShiftOS.WinForms/Tools/ShiftOSMenuRenderer.cs b/ShiftOS.WinForms/Tools/ShiftOSMenuRenderer.cs
index 28623ef..81e8c89 100644
--- a/ShiftOS.WinForms/Tools/ShiftOSMenuRenderer.cs
+++ b/ShiftOS.WinForms/Tools/ShiftOSMenuRenderer.cs
@@ -28,16 +28,16 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
-using static ShiftOS.Engine.SkinEngine;
+using ShiftOS.Engine;
using System.Windows.Forms;
namespace ShiftOS.WinForms.Tools
{
public class ShiftOSMenuRenderer : ToolStripProfessionalRenderer
{
- public ShiftOSMenuRenderer() : base(new ShiftOSColorTable())
+ public ShiftOSMenuRenderer() : base(new ShiftOSColorTable(ShiftOS.Engine.SkinEngine.LoadedSkin))
{
-
+
}
public ShiftOSMenuRenderer(ProfessionalColorTable table) : base(table)
@@ -45,6 +45,26 @@ namespace ShiftOS.WinForms.Tools
}
+ public ShiftOSMenuRenderer(Skin skn) : base(new ShiftOSColorTable(skn))
+ {
+
+ }
+
+ public Skin LoadedSkin
+ {
+ get
+ {
+ if(ColorTable is ShiftOSColorTable)
+ {
+ return (ColorTable as ShiftOSColorTable).LoadedSkin;
+ }
+ else
+ {
+ return SkinEngine.LoadedSkin;
+ }
+ }
+ }
+
protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
{
if (e.Item.Tag?.ToString() == "applauncherbutton")
@@ -99,6 +119,18 @@ namespace ShiftOS.WinForms.Tools
public class ShiftOSColorTable : ProfessionalColorTable
{
+ public ShiftOSColorTable(ShiftOS.Engine.Skin skn)
+ {
+ LoadedSkin = skn;
+ }
+
+ public Skin LoadedSkin { get; private set; }
+
+ public Image GetImage(string id)
+ {
+ return SkinEngine.GetImage(id);
+ }
+
public override Color ButtonSelectedHighlight
{
get { return LoadedSkin.Menu_ButtonSelectedHighlight; }
@@ -327,6 +359,23 @@ namespace ShiftOS.WinForms.Tools
public class AppLauncherColorTable : ProfessionalColorTable
{
+ public Image GetImage(string id)
+ {
+ return SkinEngine.GetImage(id);
+ }
+
+ public AppLauncherColorTable()
+ {
+ LoadedSkin = SkinEngine.LoadedSkin;
+ }
+
+ public AppLauncherColorTable(Skin skn)
+ {
+ LoadedSkin = skn;
+ }
+
+ public Skin LoadedSkin { get; private set; }
+
public override Color ButtonSelectedHighlight
{
get { return LoadedSkin.Menu_ButtonSelectedHighlight; }