Ejemplo n.º 1
0
 public WindowImpl(IAvaloniaNativeFactory factory, AvaloniaNativePlatformOptions opts) : base(opts)
 {
     using (var e = new WindowEvents(this))
     {
         Init(_native = factory.CreateWindow(e), factory.CreateScreens());
     }
 }
Ejemplo n.º 2
0
        void DoInitialize(AvaloniaNativePlatformOptions options)
        {
            _options = options;
            _factory.Initialize();
            if (_factory.MacOptions != null)
            {
                var macOpts = AvaloniaLocator.Current.GetService <MacOSPlatformOptions>();
                _factory.MacOptions.ShowInDock = macOpts?.ShowInDock != false ? 1 : 0;
            }

            AvaloniaLocator.CurrentMutable
            .Bind <IPlatformThreadingInterface>()
            .ToConstant(new PlatformThreadingInterface(_factory.CreatePlatformThreadingInterface()))
            .Bind <IStandardCursorFactory>().ToConstant(new CursorFactory(_factory.CreateCursorFactory()))
            .Bind <IPlatformIconLoader>().ToSingleton <IconLoader>()
            .Bind <IKeyboardDevice>().ToConstant(KeyboardDevice)
            .Bind <IMouseDevice>().ToConstant(MouseDevice)
            .Bind <IPlatformSettings>().ToConstant(this)
            .Bind <IWindowingPlatform>().ToConstant(this)
            .Bind <IClipboard>().ToConstant(new ClipboardImpl(_factory.CreateClipboard()))
            .Bind <IRenderLoop>().ToConstant(new RenderLoop())
            .Bind <IRenderTimer>().ToConstant(new DefaultRenderTimer(60))
            .Bind <ISystemDialogImpl>().ToConstant(new SystemDialogs(_factory.CreateSystemDialogs()))
            .Bind <IWindowingPlatformGlFeature>().ToConstant(new GlPlatformFeature(_factory.ObtainGlFeature()))
            .Bind <PlatformHotkeyConfiguration>()
            .ToConstant(new PlatformHotkeyConfiguration(InputModifiers.Windows));
        }
Ejemplo n.º 3
0
        public static AvaloniaNativePlatform Initialize(IntPtr factory, AvaloniaNativePlatformOptions options)
        {
            var platform = new AvaloniaNativePlatform(new IAvaloniaNativeFactory(factory));

            platform.DoInitialize(options);
            return(platform);
        }
Ejemplo n.º 4
0
 public PopupImpl(IAvaloniaNativeFactory factory, AvaloniaNativePlatformOptions opts) : base(opts)
 {
     using (var e = new PopupEvents(this))
     {
         Init(factory.CreatePopup(e), factory.CreateScreens());
     }
 }
Ejemplo n.º 5
0
        public TimeSpan DoubleClickTime => TimeSpan.FromMilliseconds(500); //TODO

        public static AvaloniaNativePlatform Initialize(IntPtr factory, AvaloniaNativePlatformOptions options)
        {
            var result = new AvaloniaNativePlatform(new IAvaloniaNativeFactory(factory));

            result.DoInitialize(options);

            return(result);
        }
Ejemplo n.º 6
0
        public static AvaloniaNativePlatform Initialize(IntPtr factory, AvaloniaNativePlatformOptions options)
        {
            var result = new AvaloniaNativePlatform(MicroComRuntime.CreateProxyFor <IAvaloniaNativeFactory>(factory, true));

            result.DoInitialize(options);

            return(result);
        }
Ejemplo n.º 7
0
        internal WindowBaseImpl(AvaloniaNativePlatformOptions opts, GlPlatformFeature glFeature)
        {
            _gpu = opts.UseGpu && glFeature != null;
            _deferredRendering = opts.UseDeferredRendering;

            _keyboard      = AvaloniaLocator.Current.GetService <IKeyboardDevice>();
            _mouse         = new MouseDevice();
            _cursorFactory = AvaloniaLocator.Current.GetService <IStandardCursorFactory>();
        }
Ejemplo n.º 8
0
        public WindowBaseImpl(AvaloniaNativePlatformOptions opts)
        {
            _gpu = opts.UseGpu;
            _deferredRendering = opts.UseDeferredRendering;

            _keyboard      = AvaloniaLocator.Current.GetService <IKeyboardDevice>();
            _mouse         = AvaloniaLocator.Current.GetService <IMouseDevice>();
            _cursorFactory = AvaloniaLocator.Current.GetService <IStandardCursorFactory>();
        }
        internal WindowBaseImpl(IAvaloniaNativeFactory factory, AvaloniaNativePlatformOptions opts,
                                AvaloniaNativePlatformOpenGlInterface glFeature)
        {
            _factory           = factory;
            _gpu               = opts.UseGpu && glFeature != null;
            _deferredRendering = opts.UseDeferredRendering;

            _keyboard      = AvaloniaLocator.Current.GetService <IKeyboardDevice>();
            _mouse         = new MouseDevice();
            _cursorFactory = AvaloniaLocator.Current.GetService <ICursorFactory>();
        }
Ejemplo n.º 10
0
        public WindowImpl(IAvaloniaNativeFactory factory, AvaloniaNativePlatformOptions opts) : base(opts)
        {
            _factory = factory;
            _opts    = opts;
            using (var e = new WindowEvents(this))
            {
                Init(_native = factory.CreateWindow(e), factory.CreateScreens());
            }

            //NativeMenuExporter = new AvaloniaNativeMenuExporter(_native, factory);
        }
Ejemplo n.º 11
0
        void DoInitialize(AvaloniaNativePlatformOptions options)
        {
            _options = options;

            var applicationPlatform = new AvaloniaNativeApplicationPlatform();

            _factory.Initialize(new GCHandleDeallocator(), applicationPlatform);
            if (_factory.MacOptions != null)
            {
                var macOpts = AvaloniaLocator.Current.GetService <MacOSPlatformOptions>();

                _factory.MacOptions.SetShowInDock(macOpts?.ShowInDock != false ? 1 : 0);
                _factory.MacOptions.SetDisableDefaultApplicationMenuItems(
                    macOpts?.DisableDefaultApplicationMenuItems == true ? 1 : 0);
            }

            AvaloniaLocator.CurrentMutable
            .Bind <IPlatformThreadingInterface>()
            .ToConstant(new PlatformThreadingInterface(_factory.CreatePlatformThreadingInterface()))
            .Bind <ICursorFactory>().ToConstant(new CursorFactory(_factory.CreateCursorFactory()))
            .Bind <IPlatformIconLoader>().ToSingleton <IconLoader>()
            .Bind <IKeyboardDevice>().ToConstant(KeyboardDevice)
            .Bind <IPlatformSettings>().ToConstant(this)
            .Bind <IWindowingPlatform>().ToConstant(this)
            .Bind <IClipboard>().ToConstant(new ClipboardImpl(_factory.CreateClipboard()))
            .Bind <IRenderLoop>().ToConstant(new RenderLoop())
            .Bind <IRenderTimer>().ToConstant(new DefaultRenderTimer(60))
            .Bind <ISystemDialogImpl>().ToConstant(new SystemDialogs(_factory.CreateSystemDialogs()))
            .Bind <PlatformHotkeyConfiguration>().ToConstant(new PlatformHotkeyConfiguration(KeyModifiers.Meta, wholeWordTextActionModifiers: KeyModifiers.Alt))
            .Bind <IMountedVolumeInfoProvider>().ToConstant(new MacOSMountedVolumeInfoProvider())
            .Bind <IPlatformDragSource>().ToConstant(new AvaloniaNativeDragSource(_factory))
            .Bind <IPlatformLifetimeEventsImpl>().ToConstant(applicationPlatform);

            var hotkeys = AvaloniaLocator.Current.GetService <PlatformHotkeyConfiguration>();

            hotkeys.MoveCursorToTheStartOfLine.Add(new KeyGesture(Key.Left, hotkeys.CommandModifiers));
            hotkeys.MoveCursorToTheStartOfLineWithSelection.Add(new KeyGesture(Key.Left, hotkeys.CommandModifiers | hotkeys.SelectionModifiers));
            hotkeys.MoveCursorToTheEndOfLine.Add(new KeyGesture(Key.Right, hotkeys.CommandModifiers));
            hotkeys.MoveCursorToTheEndOfLineWithSelection.Add(new KeyGesture(Key.Right, hotkeys.CommandModifiers | hotkeys.SelectionModifiers));

            if (_options.UseGpu)
            {
                try
                {
                    AvaloniaLocator.CurrentMutable.Bind <IPlatformOpenGlInterface>()
                    .ToConstant(_platformGl = new AvaloniaNativePlatformOpenGlInterface(_factory.ObtainGlDisplay()));
                }
                catch (Exception)
                {
                    // ignored
                }
            }
        }
Ejemplo n.º 12
0
 public PopupImpl(IAvaloniaNativeFactory factory,
                  AvaloniaNativePlatformOptions opts,
                  IWindowBaseImpl parent) : base(opts)
 {
     _factory = factory;
     _opts    = opts;
     using (var e = new PopupEvents(this))
     {
         Init(factory.CreatePopup(e), factory.CreateScreens());
     }
     PopupPositioner = new ManagedPopupPositioner(new ManagedPopupPositionerPopupImplHelper(parent, MoveResize));
 }
Ejemplo n.º 13
0
        internal WindowImpl(IAvaloniaNativeFactory factory, AvaloniaNativePlatformOptions opts,
                            GlPlatformFeature glFeature) : base(opts, glFeature)
        {
            _factory   = factory;
            _opts      = opts;
            _glFeature = glFeature;
            using (var e = new WindowEvents(this))
            {
                Init(_native = factory.CreateWindow(e,
                                                    _opts.UseGpu ? glFeature?.DeferredContext.Context : null), factory.CreateScreens());
            }

            NativeMenuExporter = new AvaloniaNativeMenuExporter(_native, factory);
        }
Ejemplo n.º 14
0
 public PopupImpl(IAvaloniaNativeFactory factory,
                  AvaloniaNativePlatformOptions opts,
                  GlPlatformFeature glFeature,
                  IWindowBaseImpl parent) : base(opts, glFeature)
 {
     _factory   = factory;
     _opts      = opts;
     _glFeature = glFeature;
     using (var e = new PopupEvents(this))
     {
         Init(factory.CreatePopup(e, _opts.UseGpu ? glFeature?.DeferredContext.Context : null), factory.CreateScreens());
     }
     PopupPositioner = new ManagedPopupPositioner(new OsxManagedPopupPositionerPopupImplHelper(parent, MoveResize));
 }
Ejemplo n.º 15
0
        internal WindowImpl(IAvaloniaNativeFactory factory, AvaloniaNativePlatformOptions opts,
                            AvaloniaNativePlatformOpenGlInterface glFeature) : base(opts, glFeature)
        {
            _factory   = factory;
            _opts      = opts;
            _glFeature = glFeature;
            using (var e = new WindowEvents(this))
            {
                var context = _opts.UseGpu ? glFeature?.MainContext : null;
                Init(_native = factory.CreateWindow(e, context?.Context), factory.CreateScreens(), context);
            }

            NativeMenuExporter = new AvaloniaNativeMenuExporter(_native, factory);
        }
Ejemplo n.º 16
0
 public PopupImpl(IAvaloniaNativeFactory factory,
                  AvaloniaNativePlatformOptions opts,
                  AvaloniaNativePlatformOpenGlInterface glFeature,
                  IWindowBaseImpl parent) : base(factory, opts, glFeature)
 {
     _opts      = opts;
     _glFeature = glFeature;
     _parent    = parent;
     using (var e = new PopupEvents(this))
     {
         var context = _opts.UseGpu ? glFeature?.MainContext : null;
         Init(factory.CreatePopup(e, context?.Context), factory.CreateScreens(), context);
     }
     PopupPositioner = new ManagedPopupPositioner(new ManagedPopupPositionerPopupImplHelper(parent, MoveResize));
 }
Ejemplo n.º 17
0
        void DoInitialize(AvaloniaNativePlatformOptions options)
        {
            _options = options;
            _factory.Initialize(new GCHandleDeallocator());
            if (_factory.MacOptions != null)
            {
                var macOpts = AvaloniaLocator.Current.GetService <MacOSPlatformOptions>();

                _factory.MacOptions.SetShowInDock(macOpts?.ShowInDock != false ? 1 : 0);
                _factory.MacOptions.SetDisableDefaultApplicationMenuItems(
                    macOpts?.DisableDefaultApplicationMenuItems == true ? 1 : 0);
            }

            AvaloniaLocator.CurrentMutable
            .Bind <IPlatformThreadingInterface>()
            .ToConstant(new PlatformThreadingInterface(_factory.CreatePlatformThreadingInterface()))
            .Bind <ICursorFactory>().ToConstant(new CursorFactory(_factory.CreateCursorFactory()))
            .Bind <IPlatformIconLoader>().ToSingleton <IconLoader>()
            .Bind <IKeyboardDevice>().ToConstant(KeyboardDevice)
            .Bind <IPlatformSettings>().ToConstant(this)
            .Bind <IWindowingPlatform>().ToConstant(this)
            .Bind <IClipboard>().ToConstant(new ClipboardImpl(_factory.CreateClipboard()))
            .Bind <IRenderLoop>().ToConstant(new RenderLoop())
            .Bind <IRenderTimer>().ToConstant(new DefaultRenderTimer(60))
            .Bind <ISystemDialogImpl>().ToConstant(new SystemDialogs(_factory.CreateSystemDialogs()))
            .Bind <PlatformHotkeyConfiguration>().ToConstant(new PlatformHotkeyConfiguration(KeyModifiers.Meta))
            .Bind <IMountedVolumeInfoProvider>().ToConstant(new MacOSMountedVolumeInfoProvider())
            .Bind <IPlatformDragSource>().ToConstant(new AvaloniaNativeDragSource(_factory));

            if (_options.UseGpu)
            {
                try
                {
                    AvaloniaLocator.CurrentMutable.Bind <IPlatformOpenGlInterface>()
                    .ToConstant(_platformGl = new AvaloniaNativePlatformOpenGlInterface(_factory.ObtainGlDisplay()));
                }
                catch (Exception)
                {
                    // ignored
                }
            }
        }
Ejemplo n.º 18
0
        public static AvaloniaNativePlatform Initialize(AvaloniaNativePlatformOptions options)
        {
            if (options.AvaloniaNativeLibraryPath != null)
            {
                var loader = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ?
                             (IDynLoader) new Win32Loader() :
                             new UnixLoader();

                var lib  = loader.LoadLibrary(options.AvaloniaNativeLibraryPath);
                var proc = loader.GetProcAddress(lib, "CreateAvaloniaNative", false);
                var d    = Marshal.GetDelegateForFunctionPointer <CreateAvaloniaNativeDelegate>(proc);


                return(Initialize(d(), options));
            }
            else
            {
                return(Initialize(CreateAvaloniaNative(), options));
            }
        }
Ejemplo n.º 19
0
        public TimeSpan DoubleClickTime => TimeSpan.FromMilliseconds(500); //TODO

        public static void Initialize(IntPtr factory, AvaloniaNativePlatformOptions options)
        {
            new AvaloniaNativePlatform(new IAvaloniaNativeFactory(factory))
            .DoInitialize(options);
        }
Ejemplo n.º 20
0
        public TimeSpan DoubleClickTime => TimeSpan.FromMilliseconds(500); //TODO

        public static AvaloniaNativePlatform Initialize()
        {
            var options = new AvaloniaNativePlatformOptions();

            return(Initialize(CreateAvaloniaNative(), options));
        }