public static void Edit(this WidgetId id, bool dismiss = false)
        {
            var settings = id.GetSettings();

            if (settings == null)
            {
                return;
            }
            var view = id.GetView();
            var name = id.GetName();
            var previousHorizontalAlignment = settings.HorizontalAlignment;
            var previousVerticalAlignment   = settings.VerticalAlignment;
            var previousIsDocked            = settings.IsDocked;

            if (dismiss)
            {
                view?.Dismiss();
            }
            new WidgetEditor(name, settings).ShowDialog();
            if (view != null && !view.IsClosed)
            {
                view.UpdateUi(isDocked: previousIsDocked, dockHorizontalAlignment: previousHorizontalAlignment,
                              dockVerticalAlignment: previousVerticalAlignment);
            }
        }
        private static void LoadView(this WidgetId id, bool systemStartup = false)
        {
            WidgetView widgetView = null;

            try
            {
                foreach (var view in App.WidgetViews.Where(view => view.Id == id).ToList())
                {
                    view.Close();
                }

                widgetView = new WidgetView(id, id.GetNewViewModel(), id.GetNewControlView(), systemStartup);
                App.WidgetViews.Add(widgetView);
                widgetView.Show();
            }
            catch (Exception ex)
            {
                widgetView?.Close();
                var name = id.GetName();
                Popup.ShowAsync($"{name} failed to load.\n\n{ex.Message}", image: MessageBoxImage.Error);
            }
        }
 public static void CloseView(this WidgetId id, bool reload = false)
 {
     try
     {
         var view = id.GetView();
         if (view == null)
         {
             id.LoadView();
             return;
         }
         if (reload)
         {
             view.CloseAction = () => { id.LoadView(); };
         }
         view.CloseAnimation();
     }
     catch (Exception ex)
     {
         var name = id.GetName();
         Popup.ShowAsync($"{name} failed to close.\n\n{ex.Message}", image: MessageBoxImage.Error);
     }
 }