using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using Tango.MachineStudio.Common.Modules; using Tango.MachineStudio.Common.Notifications; using Tango.MachineStudio.UI.Modules; using Tango.MachineStudio.UI.Notifications; using Tango.MachineStudio.UI.SupervisingController; using Tango.SharedUI; using Tango.SharedUI.Controls; using Tango.MachineStudio.Common; using System.Threading; using Tango.Core.Helpers; using Tango.SharedUI.Helpers; using Tango.Logging; using static Tango.SharedUI.Controls.NavigationControl; using Tango.Core.DI; using Tango.MachineStudio.Common.StudioApplication; namespace Tango.MachineStudio.UI.Views { /// /// Interaction logic for MainView.xaml /// public partial class MainView : View, IMainView { private DefaultStudioModuleLoader _loader; public static MainView Instance { get; set; } public MainView() : base() { InitializeComponent(); Instance = this; _loader = TangoIOC.Default.GetInstance() as DefaultStudioModuleLoader; _loader.ModulesLoaded += Loader_ModulesLoaded; } private void Loader_ModulesLoaded(object sender, EventArgs e) { Task.Factory.StartNew(() => { LogManager.Default.Log("Loading modules views..."); var item = TangoIOC.Default.GetInstance().PushTaskItem("Loading Modules..."); var modules = _loader.UserModules.ToList(); ThreadsHelper.InvokeUINow(() => { _loader.UserModules.Clear(); }); Thread.Sleep(1500); foreach (var module in modules) { LogManager.Default.Log("Loading module view '" + module.Name + "'..."); ThreadsHelper.InvokeUI(() => { if (!NavigationControl.Elements.ToList().Exists(x => x.GetType() == module.MainViewType)) { FrameworkElement view = Activator.CreateInstance(module.MainViewType) as FrameworkElement; NavigationControl.SetNavigationName(view, module.Name); NavigationControl.Elements.Add(view); } _loader.UserModules.Add(module); }); UIHelper.DoEvents(); Thread.Sleep(100); } item.Pop(); ThreadsHelper.InvokeUI(() => { TangoIOC.Default.GetInstance().NotifyApplicationReady(); }); }); } } }