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 static Dictionary<Form, string> OpenGUIDs = new Dictionary<Form, string>();
public static Dictionary<string, Control> DEF_PanelGUIDs = new Dictionary<string, Control>();
/// <summary>
/// Settings file.

View file

@ -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<ApplauncherItem> OnAppLauncherPopulate;
@ -45,6 +48,8 @@ public ShiftOSDesktop()
public event WindowDrawEventHandler TitlebarReset;
public event WindowDrawEventHandler BorderReset;
public event ListEventHandler<DesktopIcon> 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<Skinning.DesktopPanel> lst)
{
DesktopPanels = new List<Panel>();
API.DEF_PanelGUIDs.Clear();
foreach (var dp in lst)
{
Panel pnl = new Panel();
@ -699,6 +706,9 @@ public void SetupPanels(List<Skinning.DesktopPanel> lst)
pnl.Hide();
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.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) =>
{
desktop.OnDesktopReload += () =>