From 98fe96c5d3e5ee1bb3b2eaa38c9346977b4ad713 Mon Sep 17 00:00:00 2001 From: MichaelTheShifter Date: Wed, 6 Jul 2016 18:32:19 -0400 Subject: [PATCH] Added DEF events for unity toggle and desktop panel draw. Also this is the first REAL AppVeyor build test. --- source/WindowsFormsApplication1/API.cs | 4 +++- .../Desktop/ShiftOSDesktop.cs | 12 +++++++++- .../Engine/Lua_Interp.cs | 24 +++++++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/source/WindowsFormsApplication1/API.cs b/source/WindowsFormsApplication1/API.cs index 2fe6126..4199223 100644 --- a/source/WindowsFormsApplication1/API.cs +++ b/source/WindowsFormsApplication1/API.cs @@ -83,7 +83,9 @@ public class ModApplauncherItem public class API { public static Dictionary OpenGUIDs = new Dictionary(); - + public static Dictionary DEF_PanelGUIDs = new Dictionary(); + + /// /// Settings file. /// diff --git a/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.cs b/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.cs index 84c9014..19a641d 100644 --- a/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.cs +++ b/source/WindowsFormsApplication1/Desktop/ShiftOSDesktop.cs @@ -32,6 +32,9 @@ public ShiftOSDesktop() //Window draw event handler. public delegate void WindowDrawEventHandler(Form win); + //Event handler for passing a single control (e.g, a desktop panel) to the Lua API. + public delegate void ControlDrawEventHandler(string ControlGUID); + //Lua events. public event EmptyEventHandler OnDesktopReload; public event ListEventHandler OnAppLauncherPopulate; @@ -45,6 +48,8 @@ public ShiftOSDesktop() public event WindowDrawEventHandler TitlebarReset; public event WindowDrawEventHandler BorderReset; public event ListEventHandler DesktopIconsPopulated; + public event EmptyEventHandler OnUnityToggle; + public event ControlDrawEventHandler OnDesktopPanelDraw; public void InvokeWindowOp(string operation, Form win) { @@ -104,7 +109,9 @@ public void SetUnityMode() { UnityEnabled = true; } + OnUnityToggle?.Invoke(); //We want this to be invoked BEFORE the desktop reset in case the user wants to do things with the desktop during reset. SetupDesktop(); + } public void SetUnityMode(bool value) @@ -596,7 +603,7 @@ public void SetupDesktopPanel() public void SetupPanels(List lst) { DesktopPanels = new List(); - + API.DEF_PanelGUIDs.Clear(); foreach (var dp in lst) { Panel pnl = new Panel(); @@ -699,6 +706,9 @@ public void SetupPanels(List lst) pnl.Hide(); this.Controls.Remove(pnl); } + string guid = Guid.NewGuid().ToString(); + API.DEF_PanelGUIDs.Add(guid, pnl); + OnDesktopPanelDraw?.Invoke(guid); } } diff --git a/source/WindowsFormsApplication1/Engine/Lua_Interp.cs b/source/WindowsFormsApplication1/Engine/Lua_Interp.cs index 4192acf..813bcd3 100644 --- a/source/WindowsFormsApplication1/Engine/Lua_Interp.cs +++ b/source/WindowsFormsApplication1/Engine/Lua_Interp.cs @@ -119,6 +119,30 @@ public void RegisterCore() mod(func + "()"); }; }); + mod.on_unity_set += new Action((desktop, func) => + { + desktop.OnUnityToggle += () => + { + mod(func + "()"); + }; + }); + mod.on_desktop_panel_draw += new Action((desktop, func) => + { + desktop.OnDesktopPanelDraw += (c) => + { + mod(func + $"(get_panel_from_guid(\"{c}\"))"); + }; + }); + mod.get_panel_from_guid = new Func((guid) => + { + foreach(var kv in API.DEF_PanelGUIDs) + { + if (kv.Key == guid) + return kv.Value; + } + return null; + }); + mod.on_desktop_reset += new Action((desktop, func) => { desktop.OnDesktopReload += () =>