Class MissingDependenciesDialog
- Namespace
- McServerLauncher.Views
- Assembly
- McServerLauncher.dll
Shown before starting a server whose mods or plugins are waiting on something that is not there.
public class MissingDependenciesDialog : Window, INotifyPropertyChanged, IDataContextProvider, IThemeVariantHost, IResourceHost, IResourceNode, ISetLogicalParent, ISetInheritanceParent, ISupportInitialize, IStyleable, INamed, IDataTemplateHost, ISetterValue, IRenderRoot, ICloseable, IStyleHost, ILogicalRoot, ILogical, ITextInputMethodRoot, IInputRoot, IInputElement, IFocusScope, ILayoutRoot
- Inheritance
-
AvaloniaObjectAnimatableStyledElementVisualLayoutableInteractiveInputElementControlTemplatedControlContentControlTopLevelWindowBaseWindowMissingDependenciesDialog
- Implements
-
IDataContextProviderIThemeVariantHostIResourceHostIResourceNodeISetLogicalParentISetInheritanceParentIStyleableINamedIDataTemplateHostISetterValueIRenderRootICloseableIStyleHostILogicalRootILogicalITextInputMethodRootIInputRootIInputElementIFocusScopeILayoutRoot
- Inherited Members
-
Window.SizeToContentPropertyWindow.ExtendClientAreaToDecorationsHintPropertyWindow.ExtendClientAreaChromeHintsPropertyWindow.ExtendClientAreaTitleBarHeightHintPropertyWindow.IsExtendedIntoWindowDecorationsPropertyWindow.WindowDecorationMarginPropertyWindow.OffScreenMarginPropertyWindow.SystemDecorationsPropertyWindow.ShowActivatedPropertyWindow.ShowInTaskbarPropertyWindow.ClosingBehaviorPropertyWindow.WindowStatePropertyWindow.TitlePropertyWindow.IconPropertyWindow.WindowStartupLocationPropertyWindow.CanResizePropertyWindow.WindowClosedEventWindow.WindowOpenedEventWindow.BeginMoveDrag(PointerPressedEventArgs)Window.BeginResizeDrag(WindowEdge, PointerPressedEventArgs)Window.Close()Window.Hide()Window.Show()Window.IsVisibleChanged(AvaloniaPropertyChangedEventArgs)Window.Show(Window)Window.ShowDialog(Window)Window.ShowDialog<TResult>(Window)Window.SortWindowsByZOrder(Window[])Window.MeasureOverride(Size)Window.ArrangeSetBounds(Size)Window.OnClosing(WindowClosingEventArgs)Window.OnPropertyChanged(AvaloniaPropertyChangedEventArgs)Window.OnCreateAutomationPeer()Window.PlatformImplWindow.OwnedWindowsWindow.SizeToContentWindow.TitleWindow.ExtendClientAreaToDecorationsHintWindow.ExtendClientAreaChromeHintsWindow.ExtendClientAreaTitleBarHeightHintWindow.IsExtendedIntoWindowDecorationsWindow.WindowDecorationMarginWindow.OffScreenMarginWindow.SystemDecorationsWindow.ShowActivatedWindow.ShowInTaskbarWindow.ClosingBehaviorWindow.WindowStateWindow.CanResizeWindow.IconWindow.WindowStartupLocationWindow.PositionWindow.StyleKeyOverrideWindow.ClosingWindowBase.IsActivePropertyWindowBase.OwnerPropertyWindowBase.TopmostPropertyWindowBase.Activate()WindowBase.EnsureInitialized()WindowBase.OnResized(WindowResizedEventArgs)WindowBase.MeasureCore(Size)WindowBase.ArrangeCore(Rect)WindowBase.IgnoreVisibilityChangesWindowBase.IsActiveWindowBase.ScreensWindowBase.OwnerWindowBase.TopmostWindowBase.DesktopScalingWindowBase.ActivatedWindowBase.DeactivatedWindowBase.PositionChangedWindowBase.ResizedTopLevel.ClientSizePropertyTopLevel.FrameSizePropertyTopLevel.PointerOverElementPropertyTopLevel.TransparencyLevelHintPropertyTopLevel.ActualTransparencyLevelPropertyTopLevel.TransparencyBackgroundFallbackPropertyTopLevel.ActualThemeVariantPropertyTopLevel.RequestedThemeVariantPropertyTopLevel.SystemBarColorPropertyTopLevel.AutoSafeAreaPaddingPropertyTopLevel.BackRequestedEventTopLevel.TryGetPlatformHandle()TopLevel.SetSystemBarColor(Control, SolidColorBrush)TopLevel.GetSystemBarColor(Control)TopLevel.GetAutoSafeAreaPadding(Control)TopLevel.GetTopLevel(Visual)TopLevel.StartRendering()TopLevel.StopRendering()TopLevel.OnAttachedToVisualTree(VisualTreeAttachmentEventArgs)TopLevel.OnApplyTemplate(TemplateAppliedEventArgs)TopLevel.InvalidateMirrorTransform()TopLevel.ClientSizeTopLevel.FrameSizeTopLevel.TransparencyLevelHintTopLevel.ActualTransparencyLevelTopLevel.TransparencyBackgroundFallbackTopLevel.RequestedThemeVariantTopLevel.RendererDiagnosticsTopLevel.RenderScalingTopLevel.StorageProviderTopLevel.InsetsManagerTopLevel.InputPaneTopLevel.LauncherTopLevel.ClipboardTopLevel.FocusManagerTopLevel.PlatformSettingsTopLevel.BypassFlowDirectionPoliciesTopLevel.OpenedTopLevel.ClosedTopLevel.ScalingChangedTopLevel.BackRequestedContentControl.ContentPropertyContentControl.ContentTemplatePropertyContentControl.HorizontalContentAlignmentPropertyContentControl.VerticalContentAlignmentPropertyContentControl.RegisterContentPresenter(ContentPresenter)ContentControl.ContentContentControl.ContentTemplateContentControl.PresenterContentControl.HorizontalContentAlignmentContentControl.VerticalContentAlignmentTemplatedControl.BackgroundPropertyTemplatedControl.BackgroundSizingPropertyTemplatedControl.BorderBrushPropertyTemplatedControl.BorderThicknessPropertyTemplatedControl.CornerRadiusPropertyTemplatedControl.FontFamilyPropertyTemplatedControl.FontFeaturesPropertyTemplatedControl.FontSizePropertyTemplatedControl.FontStylePropertyTemplatedControl.FontWeightPropertyTemplatedControl.FontStretchPropertyTemplatedControl.ForegroundPropertyTemplatedControl.PaddingPropertyTemplatedControl.TemplatePropertyTemplatedControl.IsTemplateFocusTargetPropertyTemplatedControl.TemplateAppliedEventTemplatedControl.GetIsTemplateFocusTarget(Control)TemplatedControl.ApplyTemplate()TemplatedControl.GetTemplateFocusTarget()TemplatedControl.OnAttachedToLogicalTree(LogicalTreeAttachmentEventArgs)TemplatedControl.OnDetachedFromLogicalTree(LogicalTreeAttachmentEventArgs)TemplatedControl.OnTemplateChanged(AvaloniaPropertyChangedEventArgs)TemplatedControl.BackgroundTemplatedControl.BackgroundSizingTemplatedControl.BorderBrushTemplatedControl.BorderThicknessTemplatedControl.CornerRadiusTemplatedControl.FontFamilyTemplatedControl.FontFeaturesTemplatedControl.FontSizeTemplatedControl.FontStyleTemplatedControl.FontWeightTemplatedControl.FontStretchTemplatedControl.ForegroundTemplatedControl.PaddingTemplatedControl.TemplateTemplatedControl.TemplateAppliedControl.FocusAdornerPropertyControl.TagPropertyControl.ContextMenuPropertyControl.ContextFlyoutPropertyControl.RequestBringIntoViewEventControl.ContextRequestedEventControl.LoadedEventControl.UnloadedEventControl.SizeChangedEventControl.OnLoaded(RoutedEventArgs)Control.OnUnloaded(RoutedEventArgs)Control.OnSizeChanged(SizeChangedEventArgs)Control.OnAttachedToVisualTreeCore(VisualTreeAttachmentEventArgs)Control.OnDetachedFromVisualTreeCore(VisualTreeAttachmentEventArgs)Control.OnGotFocus(GotFocusEventArgs)Control.OnLostFocus(RoutedEventArgs)Control.OnPointerReleased(PointerReleasedEventArgs)Control.OnKeyUp(KeyEventArgs)Control.FocusAdornerControl.DataTemplatesControl.ContextMenuControl.ContextFlyoutControl.IsLoadedControl.TagControl.ContextRequestedControl.LoadedControl.UnloadedControl.SizeChangedInputElement.FocusablePropertyInputElement.IsEnabledPropertyInputElement.IsEffectivelyEnabledPropertyInputElement.CursorPropertyInputElement.IsKeyboardFocusWithinPropertyInputElement.IsFocusedPropertyInputElement.IsHitTestVisiblePropertyInputElement.IsPointerOverPropertyInputElement.IsTabStopPropertyInputElement.GotFocusEventInputElement.LostFocusEventInputElement.KeyDownEventInputElement.KeyUpEventInputElement.TabIndexPropertyInputElement.TextInputEventInputElement.TextInputMethodClientRequestedEventInputElement.PointerEnteredEventInputElement.PointerExitedEventInputElement.PointerMovedEventInputElement.PointerPressedEventInputElement.PointerReleasedEventInputElement.PointerCaptureLostEventInputElement.PointerWheelChangedEventInputElement.TappedEventInputElement.HoldingEventInputElement.DoubleTappedEventInputElement.Focus(NavigationMethod, KeyModifiers)InputElement.OnKeyDown(KeyEventArgs)InputElement.OnTextInput(TextInputEventArgs)InputElement.OnPointerEntered(PointerEventArgs)InputElement.OnPointerExited(PointerEventArgs)InputElement.OnPointerMoved(PointerEventArgs)InputElement.OnPointerPressed(PointerPressedEventArgs)InputElement.OnPointerCaptureLost(PointerCaptureLostEventArgs)InputElement.OnPointerWheelChanged(PointerWheelEventArgs)InputElement.UpdateIsEffectivelyEnabled()InputElement.FocusableInputElement.IsEnabledInputElement.CursorInputElement.IsKeyboardFocusWithinInputElement.IsFocusedInputElement.IsHitTestVisibleInputElement.IsPointerOverInputElement.IsTabStopInputElement.IsEffectivelyEnabledInputElement.TabIndexInputElement.KeyBindingsInputElement.IsEnabledCoreInputElement.GestureRecognizersInputElement.GotFocusInputElement.LostFocusInputElement.KeyDownInputElement.KeyUpInputElement.TextInputInputElement.TextInputMethodClientRequestedInputElement.PointerEnteredInputElement.PointerExitedInputElement.PointerMovedInputElement.PointerPressedInputElement.PointerReleasedInputElement.PointerCaptureLostInputElement.PointerWheelChangedInputElement.TappedInputElement.HoldingInputElement.DoubleTappedInteractive.RaiseEvent(RoutedEventArgs)Interactive.BuildEventRoute(RoutedEvent)Layoutable.DesiredSizePropertyLayoutable.WidthPropertyLayoutable.HeightPropertyLayoutable.MinWidthPropertyLayoutable.MaxWidthPropertyLayoutable.MinHeightPropertyLayoutable.MaxHeightPropertyLayoutable.MarginPropertyLayoutable.HorizontalAlignmentPropertyLayoutable.VerticalAlignmentPropertyLayoutable.UseLayoutRoundingPropertyLayoutable.UpdateLayout()Layoutable.Measure(Size)Layoutable.Arrange(Rect)Layoutable.InvalidateMeasure()Layoutable.InvalidateArrange()Layoutable.AffectsMeasure<T>(params AvaloniaProperty[])Layoutable.AffectsArrange<T>(params AvaloniaProperty[])Layoutable.ArrangeOverride(Size)Layoutable.OnMeasureInvalidated()Layoutable.OnVisualParentChanged(Visual, Visual)Layoutable.WidthLayoutable.HeightLayoutable.MinWidthLayoutable.MaxWidthLayoutable.MinHeightLayoutable.MaxHeightLayoutable.MarginLayoutable.HorizontalAlignmentLayoutable.VerticalAlignmentLayoutable.DesiredSizeLayoutable.IsMeasureValidLayoutable.IsArrangeValidLayoutable.UseLayoutRoundingLayoutable.EffectiveViewportChangedLayoutable.LayoutUpdatedVisual.BoundsPropertyVisual.ClipToBoundsPropertyVisual.ClipPropertyVisual.IsVisiblePropertyVisual.OpacityPropertyVisual.OpacityMaskPropertyVisual.EffectPropertyVisual.HasMirrorTransformPropertyVisual.RenderTransformPropertyVisual.RenderTransformOriginPropertyVisual.FlowDirectionPropertyVisual.VisualParentPropertyVisual.ZIndexPropertyVisual.GetFlowDirection(Visual)Visual.SetFlowDirection(Visual, FlowDirection)Visual.InvalidateVisual()Visual.Render(DrawingContext)Visual.AffectsRender<T>(params AvaloniaProperty[])Visual.OnDetachedFromVisualTree(VisualTreeAttachmentEventArgs)Visual.BoundsVisual.ClipToBoundsVisual.ClipVisual.IsEffectivelyVisibleVisual.IsVisibleVisual.OpacityVisual.OpacityMaskVisual.EffectVisual.HasMirrorTransformVisual.RenderTransformVisual.RenderTransformOriginVisual.FlowDirectionVisual.ZIndexVisual.VisualChildrenVisual.VisualRootVisual.AttachedToVisualTreeVisual.DetachedFromVisualTreeStyledElement.DataContextPropertyStyledElement.NamePropertyStyledElement.ParentPropertyStyledElement.TemplatedParentPropertyStyledElement.ThemePropertyStyledElement.BeginInit()StyledElement.EndInit()StyledElement.ApplyStyling()StyledElement.InitializeIfNeeded()StyledElement.OnDataContextBeginUpdate()StyledElement.OnDataContextEndUpdate()StyledElement.OnInitialized()StyledElement.NameStyledElement.ClassesStyledElement.DataContextStyledElement.IsInitializedStyledElement.StylesStyledElement.StyleKeyStyledElement.ResourcesStyledElement.TemplatedParentStyledElement.ThemeStyledElement.LogicalChildrenStyledElement.PseudoClassesStyledElement.ParentStyledElement.ActualThemeVariantStyledElement.AttachedToLogicalTreeStyledElement.DetachedFromLogicalTreeStyledElement.DataContextChangedStyledElement.InitializedStyledElement.ResourcesChangedStyledElement.ActualThemeVariantChangedAnimatable.TransitionsPropertyAnimatable.OnPropertyChangedCore(AvaloniaPropertyChangedEventArgs)Animatable.TransitionsAvaloniaObject.CheckAccess()AvaloniaObject.VerifyAccess()AvaloniaObject.ClearValue(AvaloniaProperty)AvaloniaObject.ClearValue<T>(AvaloniaProperty<T>)AvaloniaObject.ClearValue<T>(StyledProperty<T>)AvaloniaObject.ClearValue<T>(DirectPropertyBase<T>)AvaloniaObject.GetHashCode()AvaloniaObject.GetValue(AvaloniaProperty)AvaloniaObject.GetValue<T>(StyledProperty<T>)AvaloniaObject.GetValue<T>(DirectPropertyBase<T>)AvaloniaObject.GetBaseValue<T>(StyledProperty<T>)AvaloniaObject.IsAnimating(AvaloniaProperty)AvaloniaObject.IsSet(AvaloniaProperty)AvaloniaObject.SetValue<T>(StyledProperty<T>, T, BindingPriority)AvaloniaObject.SetValue<T>(DirectPropertyBase<T>, T)AvaloniaObject.SetCurrentValue<T>(StyledProperty<T>, T)AvaloniaObject.Bind(AvaloniaProperty, IBinding)AvaloniaObject.CoerceValue(AvaloniaProperty)AvaloniaObject.RaisePropertyChanged<T>(DirectPropertyBase<T>, T, T)AvaloniaObject.SetAndRaise<T>(DirectPropertyBase<T>, ref T, T)AvaloniaObject.InheritanceParentAvaloniaObject.this[AvaloniaProperty]AvaloniaObject.this[IndexerDescriptor]AvaloniaObject.PropertyChanged
Remarks
Three ways out, not two, and that is the whole design. Blocking outright would be wrong the day the check is mistaken — a dependency satisfied by something it cannot read, a name spelled differently — and a check that can trap you is a check you learn to switch off. Warning without stopping is what the app already did in the Mods tab, and it demonstrably does not work: the panel is on a tab nobody opens before pressing Start, so the server falls over anyway.
A Avalonia.Controls.Window rather than MessageBox because that helper has exactly two buttons
and cannot show a list, and the list is most of the value: what is missing, and which mod is
waiting for it.
Constructors
MissingDependenciesDialog()
public MissingDependenciesDialog()
MissingDependenciesDialog(string, IReadOnlyList<Missing>)
public MissingDependenciesDialog(string serverName, IReadOnlyList<ContentDependencyCheck.Missing> missing)
Parameters
serverNamestringmissingIReadOnlyList<ContentDependencyCheck.Missing>
Properties
Choice
What the user chose. Cancel unless they said otherwise.
public MissingDependenciesChoice Choice { get; }
Property Value
Remarks
Closing with the title-bar X is a decision too, and the safe reading of it is "no" — so the initial value is the one that does not start a server the user may have thought better of.
Methods
InitializeComponent(bool, bool)
Wires up the controls and optionally loads XAML markup and attaches dev tools (if Avalonia.Diagnostics package is referenced).
[ExcludeFromCodeCoverage]
public void InitializeComponent(bool loadXaml = true, bool attachDevTools = true)