|
|
|
@ -48,6 +48,13 @@ namespace Avalonia.Native |
|
|
|
public void SetFocus() => _inner.SetFocus(); |
|
|
|
public int ShowContextMenu() => _inner.ShowContextMenu().AsComBool(); |
|
|
|
|
|
|
|
public void SetNode(IAvnAutomationNode node) |
|
|
|
{ |
|
|
|
if (Node is not null) |
|
|
|
throw new InvalidOperationException("The AvnAutomationPeer already has a node."); |
|
|
|
Node = node; |
|
|
|
} |
|
|
|
|
|
|
|
public IAvnAutomationPeer? RootPeer |
|
|
|
{ |
|
|
|
get |
|
|
|
@ -65,27 +72,22 @@ namespace Avalonia.Native |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void SetNode(IAvnAutomationNode node) |
|
|
|
{ |
|
|
|
if (Node is not null) |
|
|
|
throw new InvalidOperationException("The AvnAutomationPeer already has a node."); |
|
|
|
Node = node; |
|
|
|
} |
|
|
|
|
|
|
|
public int IsRootProvider() => (_inner.GetProvider<IRootProvider>() is not null).AsComBool(); |
|
|
|
private IRootProvider RootProvider => GetProvider<IRootProvider>(); |
|
|
|
private IExpandCollapseProvider ExpandCollapseProvider => GetProvider<IExpandCollapseProvider>(); |
|
|
|
private IInvokeProvider InvokeProvider => GetProvider<IInvokeProvider>(); |
|
|
|
private IRangeValueProvider RangeValueProvider => GetProvider<IRangeValueProvider>(); |
|
|
|
private ISelectionItemProvider SelectionItemProvider => GetProvider<ISelectionItemProvider>(); |
|
|
|
private IToggleProvider ToggleProvider => GetProvider<IToggleProvider>(); |
|
|
|
private IValueProvider ValueProvider => GetProvider<IValueProvider>(); |
|
|
|
|
|
|
|
public IAvnWindowBase? RootProvider_GetWindow() |
|
|
|
{ |
|
|
|
if (((IRootProvider)_inner).PlatformImpl is WindowBaseImpl impl) |
|
|
|
return impl.Native; |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
public IAvnAutomationPeer? RootProvider_GetFocus() => Wrap(((IRootProvider)_inner).GetFocus()); |
|
|
|
public int IsRootProvider() => IsProvider<IRootProvider>(); |
|
|
|
|
|
|
|
public IAvnWindowBase? RootProvider_GetWindow() => (RootProvider.PlatformImpl as WindowBaseImpl)?.Native; |
|
|
|
public IAvnAutomationPeer? RootProvider_GetFocus() => Wrap(RootProvider.GetFocus()); |
|
|
|
|
|
|
|
public IAvnAutomationPeer? RootProvider_GetPeerFromPoint(AvnPoint point) |
|
|
|
{ |
|
|
|
var result = ((IRootProvider)_inner).GetPeerFromPoint(point.ToAvaloniaPoint()); |
|
|
|
var result = RootProvider.GetPeerFromPoint(point.ToAvaloniaPoint()); |
|
|
|
|
|
|
|
if (result is null) |
|
|
|
return null; |
|
|
|
@ -104,46 +106,54 @@ namespace Avalonia.Native |
|
|
|
return Wrap(result); |
|
|
|
} |
|
|
|
|
|
|
|
public int IsExpandCollapseProvider() => (_inner.GetProvider<IExpandCollapseProvider>() is not null).AsComBool(); |
|
|
|
public int IsExpandCollapseProvider() => IsProvider<IExpandCollapseProvider>(); |
|
|
|
|
|
|
|
public int ExpandCollapseProvider_GetIsExpanded() => ((IExpandCollapseProvider)_inner).ExpandCollapseState switch |
|
|
|
public int ExpandCollapseProvider_GetIsExpanded() => ExpandCollapseProvider.ExpandCollapseState switch |
|
|
|
{ |
|
|
|
ExpandCollapseState.Expanded => 1, |
|
|
|
ExpandCollapseState.PartiallyExpanded => 1, |
|
|
|
_ => 0, |
|
|
|
}; |
|
|
|
|
|
|
|
public int ExpandCollapseProvider_GetShowsMenu() => ((IExpandCollapseProvider)_inner).ShowsMenu.AsComBool(); |
|
|
|
public void ExpandCollapseProvider_Expand() => ((IExpandCollapseProvider)_inner).Expand(); |
|
|
|
public void ExpandCollapseProvider_Collapse() => ((IExpandCollapseProvider)_inner).Collapse(); |
|
|
|
public int ExpandCollapseProvider_GetShowsMenu() => ExpandCollapseProvider.ShowsMenu.AsComBool(); |
|
|
|
public void ExpandCollapseProvider_Expand() => ExpandCollapseProvider.Expand(); |
|
|
|
public void ExpandCollapseProvider_Collapse() => ExpandCollapseProvider.Collapse(); |
|
|
|
|
|
|
|
public int IsInvokeProvider() => (_inner is IInvokeProvider).AsComBool(); |
|
|
|
public void InvokeProvider_Invoke() => ((IInvokeProvider)_inner).Invoke(); |
|
|
|
public int IsInvokeProvider() => IsProvider<IInvokeProvider>(); |
|
|
|
public void InvokeProvider_Invoke() => InvokeProvider.Invoke(); |
|
|
|
|
|
|
|
public int IsRangeValueProvider() => (_inner is IRangeValueProvider).AsComBool(); |
|
|
|
public double RangeValueProvider_GetValue() => ((IRangeValueProvider)_inner).Value; |
|
|
|
public double RangeValueProvider_GetMinimum() => ((IRangeValueProvider)_inner).Minimum; |
|
|
|
public double RangeValueProvider_GetMaximum() => ((IRangeValueProvider)_inner).Maximum; |
|
|
|
public double RangeValueProvider_GetSmallChange() => ((IRangeValueProvider)_inner).SmallChange; |
|
|
|
public double RangeValueProvider_GetLargeChange() => ((IRangeValueProvider)_inner).LargeChange; |
|
|
|
public void RangeValueProvider_SetValue(double value) => ((IRangeValueProvider)_inner).SetValue(value); |
|
|
|
public int IsRangeValueProvider() => IsProvider<IRangeValueProvider>(); |
|
|
|
public double RangeValueProvider_GetValue() => RangeValueProvider.Value; |
|
|
|
public double RangeValueProvider_GetMinimum() => RangeValueProvider.Minimum; |
|
|
|
public double RangeValueProvider_GetMaximum() => RangeValueProvider.Maximum; |
|
|
|
public double RangeValueProvider_GetSmallChange() => RangeValueProvider.SmallChange; |
|
|
|
public double RangeValueProvider_GetLargeChange() => RangeValueProvider.LargeChange; |
|
|
|
public void RangeValueProvider_SetValue(double value) => RangeValueProvider.SetValue(value); |
|
|
|
|
|
|
|
public int IsSelectionItemProvider() => (_inner.GetProvider<ISelectionItemProvider>() is not null).AsComBool(); |
|
|
|
public int SelectionItemProvider_IsSelected() => ((ISelectionItemProvider)_inner).IsSelected.AsComBool(); |
|
|
|
public int IsSelectionItemProvider() => IsProvider<ISelectionItemProvider>(); |
|
|
|
public int SelectionItemProvider_IsSelected() => SelectionItemProvider.IsSelected.AsComBool(); |
|
|
|
|
|
|
|
public int IsToggleProvider() => (_inner.GetProvider<IToggleProvider>() is not null).AsComBool(); |
|
|
|
public int ToggleProvider_GetToggleState() => (int)((IToggleProvider)_inner).ToggleState; |
|
|
|
public void ToggleProvider_Toggle() => ((IToggleProvider)_inner).Toggle(); |
|
|
|
public int IsToggleProvider() => IsProvider<IToggleProvider>(); |
|
|
|
public int ToggleProvider_GetToggleState() => (int)ToggleProvider.ToggleState; |
|
|
|
public void ToggleProvider_Toggle() => ToggleProvider.Toggle(); |
|
|
|
|
|
|
|
public int IsValueProvider() => (_inner.GetProvider<IValueProvider>() is not null).AsComBool(); |
|
|
|
public IAvnString ValueProvider_GetValue() => ((IValueProvider)_inner).Value.ToAvnString(); |
|
|
|
public void ValueProvider_SetValue(string value) => ((IValueProvider)_inner).SetValue(value); |
|
|
|
public int IsValueProvider() => IsProvider<IValueProvider>(); |
|
|
|
public IAvnString ValueProvider_GetValue() => ValueProvider.Value.ToAvnString(); |
|
|
|
public void ValueProvider_SetValue(string value) => ValueProvider.SetValue(value); |
|
|
|
|
|
|
|
[return: NotNullIfNotNull("peer")] |
|
|
|
public static AvnAutomationPeer? Wrap(AutomationPeer? peer) |
|
|
|
{ |
|
|
|
return peer is null ? null : s_wrappers.GetValue(peer, x => new(peer)); |
|
|
|
} |
|
|
|
|
|
|
|
private T GetProvider<T>() |
|
|
|
{ |
|
|
|
return _inner.GetProvider<T>() ?? throw new InvalidOperationException( |
|
|
|
$"The peer {_inner} does not implement {typeof(T)}."); |
|
|
|
} |
|
|
|
|
|
|
|
private int IsProvider<T>() => (_inner.GetProvider<T>() is not null).AsComBool(); |
|
|
|
} |
|
|
|
|
|
|
|
internal class AvnAutomationPeerArray : NativeCallbackBase, IAvnAutomationPeerArray |
|
|
|
|