Added DEF events for unity toggle and desktop panel draw.

Also this is the first REAL AppVeyor build test.
This commit is contained in:
MichaelTheShifter 2016-07-06 18:32:19 -04:00
parent b20c17f5a4
commit 98fe96c5d3
3 changed files with 38 additions and 2 deletions

View file

@ -83,6 +83,8 @@ public class ModApplauncherItem
public class API public class API
{ {
public static Dictionary<Form, string> OpenGUIDs = new Dictionary<Form, string>(); public static Dictionary<Form, string> OpenGUIDs = new Dictionary<Form, string>();
public static Dictionary<string, Control> DEF_PanelGUIDs = new Dictionary<string, Control>();
/// <summary> /// <summary>
/// Settings file. /// Settings file.

View file

@ -32,6 +32,9 @@ public ShiftOSDesktop()
//Window draw event handler. //Window draw event handler.
public delegate void WindowDrawEventHandler(Form win); 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. //Lua events.
public event EmptyEventHandler OnDesktopReload; public event EmptyEventHandler OnDesktopReload;
public event ListEventHandler<ApplauncherItem> OnAppLauncherPopulate; public event ListEventHandler<ApplauncherItem> OnAppLauncherPopulate;
@ -45,6 +48,8 @@ public ShiftOSDesktop()
public event WindowDrawEventHandler TitlebarReset; public event WindowDrawEventHandler TitlebarReset;
public event WindowDrawEventHandler BorderReset; public event WindowDrawEventHandler BorderReset;
public event ListEventHandler<DesktopIcon> DesktopIconsPopulated; public event ListEventHandler<DesktopIcon> DesktopIconsPopulated;
public event EmptyEventHandler OnUnityToggle;
public event ControlDrawEventHandler OnDesktopPanelDraw;
public void InvokeWindowOp(string operation, Form win) public void InvokeWindowOp(string operation, Form win)
{ {
@ -104,7 +109,9 @@ public void SetUnityMode()
{ {
UnityEnabled = true; 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(); SetupDesktop();
} }
public void SetUnityMode(bool value) public void SetUnityMode(bool value)
@ -596,7 +603,7 @@ public void SetupDesktopPanel()
public void SetupPanels(List<Skinning.DesktopPanel> lst) public void SetupPanels(List<Skinning.DesktopPanel> lst)
{ {
DesktopPanels = new List<Panel>(); DesktopPanels = new List<Panel>();
API.DEF_PanelGUIDs.Clear();
foreach (var dp in lst) foreach (var dp in lst)
{ {
Panel pnl = new Panel(); Panel pnl = new Panel();
@ -699,6 +706,9 @@ public void SetupPanels(List<Skinning.DesktopPanel> lst)
pnl.Hide(); pnl.Hide();
this.Controls.Remove(pnl); this.Controls.Remove(pnl);
} }
string guid = Guid.NewGuid().ToString();
API.DEF_PanelGUIDs.Add(guid, pnl);
OnDesktopPanelDraw?.Invoke(guid);
} }
} }

View file

@ -119,6 +119,30 @@ public void RegisterCore()
mod(func + "()"); mod(func + "()");
}; };
}); });
mod.on_unity_set += new Action<ShiftOSDesktop, string>((desktop, func) =>
{
desktop.OnUnityToggle += () =>
{
mod(func + "()");
};
});
mod.on_desktop_panel_draw += new Action<ShiftOSDesktop, string>((desktop, func) =>
{
desktop.OnDesktopPanelDraw += (c) =>
{
mod(func + $"(get_panel_from_guid(\"{c}\"))");
};
});
mod.get_panel_from_guid = new Func<string, Control>((guid) =>
{
foreach(var kv in API.DEF_PanelGUIDs)
{
if (kv.Key == guid)
return kv.Value;
}
return null;
});
mod.on_desktop_reset += new Action<ShiftOSDesktop, string>((desktop, func) => mod.on_desktop_reset += new Action<ShiftOSDesktop, string>((desktop, func) =>
{ {
desktop.OnDesktopReload += () => desktop.OnDesktopReload += () =>