Example #1
0
        public static IDisposable RunApp([NotNull] ViewPanel root, [NotNull] WidgetBuilder <Widget> builder,
                                         string debugName = null)
        {
            if (root == null)
            {
                throw new ArgumentNullException(nameof(root));
            }
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            IView view        = root;
            var   context     = new BuildContext(null, null);
            var   stateHolder = State.Create <Widget, IState>(context, builder);
            var   render      = Atom.Reaction(() => root.Render(stateHolder.Value), debugName: debugName);

            // ReSharper disable once ImplicitlyCapturedClosure
            return(new ActionDisposable(() =>
            {
                render.Deactivate();

                if (!Engine.IsApplicationQuiting)
                {
                    view.ResetSource();
                }
            }));
        }
Example #2
0
        protected override void Render()
        {
            var filter = State.ActiveFilter;

            allVisibleButton.interactable       = filter != VisibilityFilter.All;
            activeVisibleButton.interactable    = filter != VisibilityFilter.Active;
            completedVisibleButton.interactable = filter != VisibilityFilter.Completed;

            todosContainer.Render(State.Todos);
        }