public static Tvision2Setup AddTvControls(this Tvision2Setup setup, Action <ISkinManagerBuilder> skinOptions = null)
        {
            var tree = new ControlsTree();

            setup.Builder.ConfigureServices(sc =>
            {
                sc.AddSingleton <ControlsTree>(tree);
                sc.AddSingleton <IControlsTree>(tree);
                sc.AddSingleton <ISkinManager>(new SkinManager());
            });

            setup.AddHook <ChangeFocusEventHook>();

            setup.Options.AfterCreateInvoke((engine, sp) =>
            {
                var skinManager  = sp.GetRequiredService <ISkinManager>() as SkinManager;
                var colorManager = sp.GetRequiredService <IColorManager>();
                if (skinOptions != null)
                {
                    FillSkinManager(skinOptions, skinManager, colorManager);
                }
                else
                {
                    FillDefaultSkinManager(skinManager, colorManager);
                }


                var ctree = sp.GetRequiredService <IControlsTree>() as ControlsTree;
                tree.AttachTo(engine.UI);
            });

            return(setup);
        }
 public static Tvision2Setup UseLayoutManager(this Tvision2Setup setup)
 {
     setup.Builder.ConfigureServices((hc, sc) =>
     {
         sc.AddSingleton <ILayoutManager, LayoutManager>();
     });
     return(setup);
 }
Example #3
0
        public static Tvision2Setup AddTvision2Startup <TStartup>(this Tvision2Setup tv2setup) where TStartup : class, ITvisionAppStartup
        {
            tv2setup.Builder.ConfigureServices(sc =>
            {
                sc.AddTransient <ITvisionAppStartup, TStartup>();
            });

            return(tv2setup);
        }
        public static Tvision2Setup AddTvDialogs(this Tvision2Setup setup)
        {
            setup.Builder.ConfigureServices(sc =>
            {
                sc.AddSingleton <IDialogManager, DialogManager>();
            });

            setup.AddHook <DialogEscapeKeyHook>();

            return(setup);
        }
        public static Tvision2Setup AddStateManager(this Tvision2Setup setup, Action <TvStateManager> configAction)
        {
            var manager = new TvStateManager();

            configAction?.Invoke(manager);
            setup.Builder.ConfigureServices(sc =>
            {
                sc.AddSingleton <TvStateManager>(manager);
                sc.AddSingleton <ITvStoreSelector>(manager);
            });

            setup.Options.AddAfterUpdateAction(() => manager.DoDispatchAllActions());
            return(setup);
        }
        public static Tvision2Setup UseDebug(this Tvision2Setup setup, Action <ITvision2DebugOptions> optionsSetup = null)
        {
            setup.Builder.ConfigureServices((hc, sc) =>
            {
                var options = new Tvision2DebugOptions();
                optionsSetup?.Invoke(options);
                var debugger = new Tvision2Debugger(options);
                sc.AddSingleton <ITvision2Debugger>(debugger);
            });

            setup.Options.AfterCreateInvoke((engine, sp) =>
            {
                var viewportManager = sp.GetRequiredService <ITvision2Debugger>();
                viewportManager.AttachTo(engine.UI);
            });
            return(setup);
        }
        public static Tvision2Setup UseViewportManager(this Tvision2Setup setup)
        {
            setup.AddHook <WindowResizedHook>();

            setup.Builder.ConfigureServices(sc =>
            {
                sc.AddTransient <IViewportFactory, ViewportFactory>();
                sc.AddTransient <IDynamicViewportFactory, DynamicViewportFactory>();
                sc.AddSingleton <IViewportManager, ViewportManager>();
            });


            setup.Options.AfterCreateInvoke((engine, sp) =>
            {
                var viewportManager = sp.GetRequiredService <IViewportManager>() as ViewportManager;
                viewportManager.AttachTo(engine.UI as ComponentTree);
            });
            return(setup);
        }
Example #8
0
        public static IHostBuilder UseTvision2(this IHostBuilder builder, Action <Tvision2Setup> optionsSetup = null)
        {
            var setup = new Tvision2Setup(builder);

            builder.Properties.Add(Tvision2Options.PropertyKey, setup.Options);
            optionsSetup?.Invoke(setup);
            builder.ConfigureServices(sc =>
            {
                sc.Configure <ConsoleLifetimeOptions>(o => o.SuppressStatusMessages = true);
            });

            builder.ConfigureServices((hc, sc) =>
            {
                sc.AddSingleton <Tvision2Options>(setup.Options as Tvision2Options);
                sc.AddSingleton <ITuiEngine, TuiEngine>();
            });

            return(builder);
        }