using System; using System.Collections.Generic; using Avalonia; using Rhino; using Rhino.Commands; using Rhino.Geometry; using Rhino.Input; using Rhino.Input.Custom; namespace AvaloniaMenuIssue { public class AvaloniaMenuIssueCommand : Command { public AvaloniaMenuIssueCommand() { // Rhino only creates one instance of each command class defined in a // plug-in, so it is safe to store a refence in a static property. Instance = this; } ///The only instance of this command. public static AvaloniaMenuIssueCommand Instance { get; private set; } public static void InitAvalonia() { try { BuildAvaloniaApp().SetupWithoutStarting(); } catch(Exception e) { } } public static AppBuilder BuildAvaloniaApp() { return AppBuilder.Configure() .UsePlatformDetect() .With(new X11PlatformOptions { UseGpu = false }) .With(new AvaloniaNativePlatformOptions { UseGpu = false, UseDeferredRendering = true }) .With(new MacOSPlatformOptions { ShowInDock = false, DisableDefaultApplicationMenuItems = true, DisableNativeMenus = true }) .With(new Win32PlatformOptions { AllowEglInitialization = true, EnableMultitouch = false }) .With(new SkiaOptions { MaxGpuResourceSizeBytes = 8096000 }) .LogToTrace(); } ///The command name as it appears on the Rhino command line. public override string EnglishName => "AvaloniaMenuIssueCommand"; protected override Result RunCommand(RhinoDoc doc, RunMode mode) { InitAvalonia(); var mw = new MainWindow(); mw.Show(); return Result.Success; } } }