mattercontrol/ApplicationView/MenuRow/MenuOptionAction.cs
2016-12-29 06:57:42 -08:00

63 lines
No EOL
1.7 KiB
C#

using MatterHackers.Agg;
using MatterHackers.Agg.UI;
using MatterHackers.Localizations;
using MatterHackers.MatterControl.ContactForm;
using MatterHackers.MatterControl.AboutPage;
using MatterHackers.VectorMath;
using System;
using System.Collections.Generic;
using MatterHackers.MatterControl.SlicerConfiguration;
using MatterHackers.MatterControl.PrinterControls;
using MatterHackers.MatterControl.PrinterCommunication;
using System.Linq;
namespace MatterHackers.MatterControl
{
public class MenuOptionAction : MenuBase
{
private EventHandler unregisterEvents;
public MenuOptionAction() : base("Actions".Localize())
{
Name = "Actions Menu";
PrinterConnectionAndCommunication.Instance.CommunicationStateChanged.RegisterEvent((s,e) => SetEnabledState(), ref unregisterEvents);
}
public override void OnLoad(EventArgs args)
{
SetEnabledState();
base.OnLoad(args);
}
public override void OnClosed(EventArgs e)
{
unregisterEvents?.Invoke(this, null);
base.OnClosed(e);
}
private void SetEnabledState()
{
for(int i=0; i<MenuDropList.MenuItems.Count; i++)
{
MenuDropList.MenuItems[i].Enabled = ActiveSliceSettings.Instance.PrinterSelected
&& PrinterConnectionAndCommunication.Instance.PrinterIsConnected
&& !PrinterConnectionAndCommunication.Instance.PrinterIsPrinting;
}
}
protected override IEnumerable<MenuItemAction> GetMenuActions()
{
var list = new List<MenuItemAction>();
if (ActiveSliceSettings.Instance.ActionMacros().Any())
{
foreach (GCodeMacro macro in ActiveSliceSettings.Instance.ActionMacros())
{
list.Add(new MenuItemAction(GCodeMacro.FixMacroName(macro.Name), macro.Run));
}
}
return list;
}
}
}