Пример #1
0
        public static void Init(Dictionary<string, object> shared)
        {
            Design.IsDesignMode = true;
            Api = new DesignerApi(shared) {UpdateXaml = UpdateXaml, UpdateXaml2 = UpdateXaml2, SetScalingFactor = SetScalingFactor};
            var plat = (IPclPlatformWrapper) Activator.CreateInstance(Assembly.Load(new AssemblyName("Avalonia.Win32"))
                .DefinedTypes.First(typeof (IPclPlatformWrapper).GetTypeInfo().IsAssignableFrom).AsType());
            
            TypeInfo app = null;
            var asms = plat.GetLoadedAssemblies();
            foreach (var asm in asms)
            {
                if(Equals(asm, typeof(Application).GetTypeInfo().Assembly) || Equals(asm, typeof(DesignerApp).GetTypeInfo().Assembly))
                    continue;
                try
                {
                    app = asm.DefinedTypes.Where(typeof (Application).GetTypeInfo().IsAssignableFrom).FirstOrDefault();
                    if (app != null)
                        break;

                }
                catch
                {
                    //Ignore, Assembly.DefinedTypes threw an exception, we can't do anything about that
                }
            }
            AppBuilder.Configure(app == null ? new DesignerApp() : (Application) Activator.CreateInstance(app.AsType()))
                .UseWindowingSubsystem("Avalonia.Win32")
                .UseRenderingSubsystem("Avalonia.Direct2D1")
                .SetupWithoutStarting();
        }
Пример #2
0
        public static void Init(Dictionary <string, object> shared)
        {
            Design.IsDesignMode = true;
            Api = new DesignerApi(shared)
            {
                UpdateXaml = UpdateXaml, UpdateXaml2 = UpdateXaml2, SetScalingFactor = SetScalingFactor
            };

            var runtimeAssembly = Assembly.Load(new AssemblyName("Avalonia.DotNetFrameworkRuntime"));

            var plat = (IRuntimePlatform)Activator.CreateInstance(runtimeAssembly
                                                                  .DefinedTypes.First(typeof(IRuntimePlatform).GetTypeInfo().IsAssignableFrom).AsType());

            TypeInfo app  = null;
            var      asms = plat.GetLoadedAssemblies();

            foreach (var asm in asms)
            {
                if (Equals(asm, typeof(Application).GetTypeInfo().Assembly) || Equals(asm, typeof(DesignerApp).GetTypeInfo().Assembly))
                {
                    continue;
                }
                try
                {
                    app = asm.DefinedTypes.Where(typeof(Application).GetTypeInfo().IsAssignableFrom).FirstOrDefault();
                    if (app != null)
                    {
                        break;
                    }
                }
                catch
                {
                    //Ignore, Assembly.DefinedTypes threw an exception, we can't do anything about that
                }
            }

            var builderType = runtimeAssembly.GetType("Avalonia.AppBuilder");

            var builder = (dynamic)Activator.CreateInstance(builderType,
                                                            app == null ? new DesignerApp() : (Application)Activator.CreateInstance(app.AsType()));

            builder
            .UseWindowingSubsystem("Avalonia.Win32")
            .UseRenderingSubsystem("Avalonia.Direct2D1")
            .SetupWithoutStarting();
        }
Пример #3
0
        public static void Init(Dictionary <string, object> shared)
        {
            Design.IsDesignMode = true;
            Api = new DesignerApi(shared)
            {
                UpdateXaml = UpdateXaml, SetScalingFactor = SetScalingFactor
            };
            var plat = (IPclPlatformWrapper)Activator.CreateInstance(Assembly.Load(new AssemblyName("Avalonia.Win32"))
                                                                     .DefinedTypes.First(typeof(IPclPlatformWrapper).GetTypeInfo().IsAssignableFrom).AsType());

            TypeInfo app  = null;
            var      asms = plat.GetLoadedAssemblies();

            foreach (var asm in asms)
            {
                if (Equals(asm, typeof(Application).GetTypeInfo().Assembly) || Equals(asm, typeof(DesignerApp).GetTypeInfo().Assembly))
                {
                    continue;
                }
                try
                {
                    app = asm.DefinedTypes.Where(typeof(Application).GetTypeInfo().IsAssignableFrom).FirstOrDefault();
                    if (app != null)
                    {
                        break;
                    }
                }
                catch
                {
                    //Ignore, Assembly.DefinedTypes threw an exception, we can't do anything about that
                }
            }

            AppBuilder.Configure(app == null ? new DesignerApp() : (Application)Activator.CreateInstance(app.AsType()))
            .WithWindowingSubsystem(Application.InitializeWin32Subsystem)
            .WithRenderingSubsystem(() => { })
            .SetupWithoutStarting();
        }
Пример #4
0
        private void DoInit(string targetExe, StringBuilder logger)
        {
            _appDir = Path.GetFullPath(Path.GetDirectoryName(targetExe));
            Directory.SetCurrentDirectory(_appDir);
            Action<string> log = s =>
            {
                UpdateState(s);
                logger.AppendLine(s);
            };
            log("Loading assemblies from " + _appDir);
            var asms = new List<Assembly>();
            foreach(var asm in Directory.GetFiles(_appDir).Where(f=>f.ToLower().EndsWith(".dll")||f.ToLower().EndsWith(".exe")))
                try
                {
                    log("Trying to load " + asm);
                    asms.Add(Assembly.LoadFrom(asm));
                }
                catch (Exception e)
                {
                    logger.AppendLine(e.ToString());
                }
            
            log("Initializing built-in designer");
            var dic = new Dictionary<string, object>();
            Api = new DesignerApi(dic) {OnResize = OnResize, OnWindowCreated = OnWindowCreated};
            LookupStaticMethod("Avalonia.DesignerSupport.DesignerAssist", "Init").Invoke(null, new object[] {dic});

            _window = new Control
            {
                Controls =
                {
                    new ElementHost()
                    {
                        Child = new InProcDesignerView(_appModel),
                        Dock = DockStyle.Fill
                    }
                }
            };
            _window.CreateControl();
            
            new Timer {Interval = 200, Enabled = true}.Tick += delegate { XamlUpdater(); };
            _comm.SendMessage(new WindowCreatedMessage(_window.Handle));
            _initSuccess = true;
        }