Esempio n. 1
0
        static IControl CreateTopBar(
            IPopover popover,
            IProperty <bool> selectionEnabled,
            IProperty <Mode> mode,
            Command addViewport,
            CodeView codeView)
        {
            var isCompact  = mode.Convert(m => m == Mode.Compact, m => m ? Mode.Compact : Mode.Normal);
            var toggleMode = isCompact.Toggle();

            return
                (Layout.Layer(
                     Layout
                     .StackFromLeft(
                         codeView.Create(popover)
                         .HideWhen(isCompact),

                         Control.Empty.WithWidth(16),

                         Layout
                         .StackFromLeft(CreateHeaderControl(
                                            icon: Fuse.Icons.AddViewport(),
                                            tooltipText: "Click to add a new Viewport",
                                            buttonText: "Add Viewport",
                                            command: addViewport,
                                            labelColor: Theme.DefaultText),
                                        Control.Empty.WithWidth(16)
                                        )
                         .HideWhen(isCompact),

                         CreateHeaderControl(
                             icon: MinimizeAndMaximizeIcon.Create(mode),
                             tooltipText: "Switch between normal and compact mode. Click to switch mode.",
                             buttonText: "Compact",
                             labelColor: Theme.DefaultText,
                             command: toggleMode)
                         .HideWhen(isCompact),

                         CreateCompactSelectionControl(mode, selectionEnabled, toggleMode)
                         .ShowWhen(isCompact)
                         .Center(),

                         Control.Empty.WithWidth(4))
                     .DockRight(),
                     CreateFullSelectionControl(selectionEnabled)
                     .HideWhen(isCompact)
                     .CenterHorizontally())
                 .WithHeight(37)
                 .WithPadding(new Thickness <Points>(8, 0, 8, 0))
                 .WithBackground(Theme.PanelBackground));
        }
Esempio n. 2
0
 static IControl CreateCompactSelectionControl(
     IProperty <Mode> mode,
     IProperty <bool> selectionEnabled,
     Command toggleMode)
 {
     return
         (Layout.StackFromLeft(
              Button.Create(selectionEnabled.Toggle(), state =>
                            Layout.Dock()
                            .Bottom(
                                Shapes.Rectangle(
                                    fill: Theme.Active)
                                .WithSize(new Size <Points>(1, 1)))
                            .Fill(
                                Layout.StackFromLeft(
                                    SelectionIcon.Create(selectionEnabled, true)
                                    .OnMouse(pressed: selectionEnabled.Toggle())
                                    .ShowWhen(selectionEnabled),
                                    TouchIcon.Create(selectionEnabled, true)
                                    .Center()
                                    .OnMouse(pressed: selectionEnabled.Toggle())
                                    .ShowWhen(selectionEnabled.IsFalse())))
                            .WithPadding(new Thickness <Points>(4, 0, 4, 0))
                            .WithBackground(
                                background: Observable.CombineLatest(
                                    state.IsEnabled, state.IsHovered,
                                    (enabled, hovering) =>
                                    hovering
                                                                                         ? Theme.FaintBackground
                                                                                         : Color.Transparent)
                                .Switch())
                            .SetToolTip("Enable to select elements in the app. Disable to interact with the app.")),
              Control.Empty.WithWidth(8),
              Button.Create(toggleMode, state =>
                            MinimizeAndMaximizeIcon.Create(mode)
                            .WithPadding(new Thickness <Points>(4, 0, 4, 0))
                            .WithBackground(
                                background: Observable.CombineLatest(
                                    state.IsEnabled, state.IsHovered,
                                    (enabled, hovering) =>
                                    hovering
                                                                                         ? Theme.FaintBackground
                                                                                         : Color.Transparent)
                                .Switch()))
              .SetToolTip("Switch between normal and compact mode. Click to switch mode.")));
 }