Example #1
0
        public ItemColorButton(ThemeConfig theme, Color selectedColor)
        {
            this.ToolTipText = "Color".Localize();
            var scaledButtonSize = 24 * GuiWidget.DeviceScale;

            this.PopupBorderColor = theme.PopupBorderColor;

            Width  = 30 * GuiWidget.DeviceScale;
            Height = 30 * GuiWidget.DeviceScale;

            var menuTheme = AppContext.MenuTheme;

            MakeScrollable = false;

            PopupHAnchor = HAnchor.Fit;
            PopupVAnchor = VAnchor.Fit;

            colorButton = new ColorButton(selectedColor == Color.Transparent ? theme.SlightShade : selectedColor)
            {
                Width                  = scaledButtonSize,
                Height                 = scaledButtonSize,
                BackgroundRadius       = scaledButtonSize / 2,
                BackgroundOutlineWidth = 1,
                HAnchor                = HAnchor.Center,
                VAnchor                = VAnchor.Center,
                DisabledColor          = theme.MinimalShade,
                Border                 = 1,
                BorderColor            = theme.BorderColor20,
                Selectable             = false
            };

            this.DynamicPopupContent = () =>
            {
#if true
                popupContent = NewColorSelector(theme, colorButton.BackgroundColor, menuTheme, (color) => colorButton.BackgroundColor = color);
#else
                return(new ColorSwatchSelector(menuTheme,
                                               buttonSize: 16,
                                               buttonSpacing: new BorderDouble(1, 1, 0, 0),
                                               colorNotifier: (newColor) => colorButton.BackgroundColor = newColor)
                {
                    Padding = theme.DefaultContainerPadding,
                    BackgroundColor = menuTheme.BackgroundColor,
                    HAnchor = HAnchor.Fit,
                    VAnchor = VAnchor.Fit
                });
#endif
                return(popupContent);
            };

            colorButton.BackgroundColorChanged += (s, e) =>
            {
                ColorChanged?.Invoke(this, null);
            };

            this.AddChild(colorButton);
        }
Example #2
0
        public ItemMaterialButton(PrinterConfig printer, ThemeConfig theme, int initialMaterialIndex)
        {
            this.currentIndex = initialMaterialIndex;
            this.ToolTipText  = "Material".Localize();
            var scaledButtonSize = 24 * GuiWidget.DeviceScale;

            Width  = 30 * GuiWidget.DeviceScale;
            Height = 30 * GuiWidget.DeviceScale;

            var menuTheme = AppContext.MenuTheme;

            this.Name = "ItemMaterialButton";

            this.DynamicPopupContent = () =>
            {
                var materialControl = new MaterialControls(printer, menuTheme, currentIndex)
                {
                    Padding         = theme.DefaultContainerPadding,
                    BackgroundColor = menuTheme.BackgroundColor,
                    HAnchor         = HAnchor.Fit,
                    VAnchor         = VAnchor.Fit,
                };

                materialControl.IndexChanged += (s, e) =>
                {
                    currentIndex = e;
                    MaterialChanged?.Invoke(this, e);
                    materialColorButton.BackgroundColor = MaterialRendering.Color(printer, currentIndex, theme.BorderColor);
                };

                return(materialControl);
            };

            materialColorButton = new ColorButton(MaterialRendering.Color(printer, currentIndex, theme.BorderColor))
            {
                Width                  = scaledButtonSize,
                Height                 = scaledButtonSize,
                BackgroundRadius       = scaledButtonSize / 2,
                BackgroundOutlineWidth = 1,
                HAnchor                = HAnchor.Center,
                VAnchor                = VAnchor.Center,
                DisabledColor          = theme.MinimalShade,
                BorderColor            = theme.TextColor,
                Selectable             = false,
            };

            this.AddChild(materialColorButton);
        }
        private GuiWidget MakeColorButton(Color color, double buttonSize, BorderDouble buttonSpacing, Action <Color> colorChanged)
        {
            var button = new ColorButton(color)
            {
                Width  = buttonSize,
                Height = buttonSize,
                Margin = buttonSpacing
            };

            button.Click += (s, e) =>
            {
                UiThread.RunOnIdle(() =>
                {
                    colorChanged(button.BackgroundColor);
                });
            };

            return(button);
        }
Example #4
0
        public ItemColorButton(ThemeConfig theme, Color selectedColor)
        {
            this.ToolTipText = "Color".Localize();
            var scaledButtonSize = 24 * GuiWidget.DeviceScale;

            this.PopupBorderColor = theme.PopupBorderColor;

            Width  = 30 * GuiWidget.DeviceScale;
            Height = 30 * GuiWidget.DeviceScale;

            var menuTheme = AppContext.MenuTheme;

            MakeScrollable = false;

            PopupHAnchor = HAnchor.Fit;
            PopupVAnchor = VAnchor.Fit;

            colorButton = new ColorButton(selectedColor == Color.Transparent ? theme.SlightShade : selectedColor)
            {
                Width                  = scaledButtonSize,
                Height                 = scaledButtonSize,
                BackgroundRadius       = scaledButtonSize / 2,
                BackgroundOutlineWidth = 1,
                HAnchor                = HAnchor.Center,
                VAnchor                = VAnchor.Center,
                DisabledColor          = theme.MinimalShade,
                BorderColor            = theme.TextColor,
                Selectable             = false
            };

            this.DynamicPopupContent = () =>
            {
                popupContent = NewColorSelector(theme, colorButton.BackgroundColor, menuTheme, (color) => colorButton.BackgroundColor = color);
                return(popupContent);
            };

            colorButton.BackgroundColorChanged += (s, e) =>
            {
                ColorChanged?.Invoke(this, null);
            };

            this.AddChild(colorButton);
        }
Example #5
0
        private GuiWidget MakeColorButton(InteractiveScene scene, Color color, double buttonSize, BorderDouble buttonSpacing)
        {
            var button = new ColorButton(color)
            {
                Width  = buttonSize,
                Height = buttonSize,
                Margin = buttonSpacing
            };

            button.Click += (s, e) =>
            {
                UiThread.RunOnIdle(() =>
                {
                    scene.UndoBuffer.AddAndDo(new ChangeColor(scene.SelectedItem, button.BackgroundColor));
                });
            };

            return(button);
        }
Example #6
0
        public ItemMaterialButton(ThemeConfig theme, int initialMaterialIndex)
        {
            this.ToolTipText = "Material".Localize();
            var scaledButtonSize = 14 * GuiWidget.DeviceScale;

            Width  = 30 * GuiWidget.DeviceScale;
            Height = 30 * GuiWidget.DeviceScale;

            this.DynamicPopupContent = () =>
            {
                var materialControl = new MaterialControls(theme, initialMaterialIndex)
                {
                    Padding         = theme.DefaultContainerPadding,
                    BackgroundColor = this.HoverColor,
                    HAnchor         = HAnchor.Fit,
                    VAnchor         = VAnchor.Fit,
                };

                materialControl.IndexChanged += (s, e) =>
                {
                    MaterialChanged?.Invoke(this, e);
                };

                return(materialControl);
            };

            materialColorButton = new ColorButton(MaterialRendering.Color(initialMaterialIndex, theme.BorderColor))
            {
                Width         = scaledButtonSize,
                Height        = scaledButtonSize,
                HAnchor       = HAnchor.Center,
                VAnchor       = VAnchor.Center,
                DrawGrid      = true,
                DisabledColor = theme.MinimalShade,
                Selectable    = false,
            };

            this.AddChild(materialColorButton);
        }
Example #7
0
        public ItemColorButton(ThemeConfig theme, Color selectedColor)
        {
            this.ToolTipText = "Color".Localize();
            var scaledButtonSize = 14 * GuiWidget.DeviceScale;

            Width  = 30 * GuiWidget.DeviceScale;
            Height = 30 * GuiWidget.DeviceScale;

            this.DynamicPopupContent = () =>
            {
                return(new ColorSwatchSelector(theme, buttonSize: 16, buttonSpacing: new BorderDouble(1, 1, 0, 0), colorNotifier: (newColor) => colorButton.BackgroundColor = newColor)
                {
                    Padding = theme.DefaultContainerPadding,
                    BackgroundColor = this.HoverColor,
                    HAnchor = HAnchor.Fit,
                    VAnchor = VAnchor.Fit
                });
            };

            colorButton = new ColorButton(selectedColor == Color.Transparent ? theme.SlightShade : selectedColor)
            {
                Width         = scaledButtonSize,
                Height        = scaledButtonSize,
                HAnchor       = HAnchor.Center,
                VAnchor       = VAnchor.Center,
                DisabledColor = theme.MinimalShade,
                Border        = new BorderDouble(1),
                BorderColor   = theme.GetBorderColor(75),
                Selectable    = false
            };

            colorButton.BackgroundColorChanged += (s, e) =>
            {
                ColorChanged?.Invoke(this, null);
            };

            this.AddChild(colorButton);
        }
Example #8
0
        public ItemColorButton(ThemeConfig theme, Color selectedColor)
        {
            this.ToolTipText = "Color".Localize();
            var scaledButtonSize = 14 * GuiWidget.DeviceScale;

            Width  = 30 * GuiWidget.DeviceScale;
            Height = 30 * GuiWidget.DeviceScale;

            var menuTheme = AppContext.MenuTheme;

            MakeScrollable = false;

            PopupHAnchor = HAnchor.Fit;
            PopupVAnchor = VAnchor.Fit;

            this.DynamicPopupContent = () =>
            {
#if false
                var container = new GuiWidget(128, 128);
                var picker    = new RadialColorPicker()
                {
                    SelectedColor = selectedColor,
                    HAnchor       = HAnchor.Stretch,
                    VAnchor       = VAnchor.Stretch,
                };

                picker.SelectedColorChanged += (s, newColor) => colorButton.BackgroundColor = picker.SelectedColor;

                container.AddChild(picker);

                return(container);
#else
                return(new ColorSwatchSelector(menuTheme,
                                               buttonSize: 16,
                                               buttonSpacing: new BorderDouble(1, 1, 0, 0),
                                               colorNotifier: (newColor) => colorButton.BackgroundColor = newColor)
                {
                    Padding = theme.DefaultContainerPadding,
                    BackgroundColor = menuTheme.BackgroundColor,
                    HAnchor = HAnchor.Fit,
                    VAnchor = VAnchor.Fit
                });
#endif
            };

            colorButton = new ColorButton(selectedColor == Color.Transparent ? theme.SlightShade : selectedColor)
            {
                Width         = scaledButtonSize,
                Height        = scaledButtonSize,
                HAnchor       = HAnchor.Center,
                VAnchor       = VAnchor.Center,
                DisabledColor = theme.MinimalShade,
                Border        = 1,
                BorderColor   = theme.BorderColor20,
                Selectable    = false
            };

            colorButton.BackgroundColorChanged += (s, e) =>
            {
                ColorChanged?.Invoke(this, null);
            };

            this.AddChild(colorButton);
        }