コード例 #1
0
ファイル: Style.cs プロジェクト: philstopford/Eto
 static void OnStyleWidget(object obj)
 {
     if (obj is Widget w)
     {
         StyleWidget?.Invoke(w);
     }
 }
コード例 #2
0
        public static IWidget LayoutHover(string key, Color color, IWidget content)
        {
            var align = new AlignmentWidget(content)
            {
                VerticalAlignment   = Alignment.Middle,
                HorizontalAlignment = Alignment.Middle,
            };

            var style = new StyleWidget(align)
            {
                Style = new Style()
            };

            var hover = new HoverWidget(key + ".hover", style);

            hover.Decoration = (h, w) =>
            {
                style.Style.Background = h ? Color.Blue : color;
                return(w);
            };

            var box = new PaddingWidget(new Padding(1), hover);

            return(box);
        }
コード例 #3
0
ファイル: LayoutDemoWidget.cs プロジェクト: decoy/ConsoleBox
        public override IWidget Create()
        {
            var north = DemoTheme.LayoutHover("north", Color.Green, new LabelWidget("North"));
            var south = DemoTheme.LayoutHover("south", Color.Green, new LabelWidget("South"));

            var west = DemoTheme.LayoutHover("west", Color.Red, new LabelWidget("West"));
            var east = DemoTheme.LayoutHover("east", Color.Red, new LabelWidget("East"));

            var middlenorth = DemoTheme.LayoutHover("mnorth", Color.Orange, new LabelWidget("Middle North")
            {
                WrapContent = true
            });
            var middlesouth = DemoTheme.LayoutHover("msouth", Color.Orange, new LabelWidget("Middle South")
            {
                WrapContent = true
            });

            var middle = DemoTheme.LayoutHover("middle.stack", Color.SlateGray, new FlexLayoutWidget(Axis.Vertical, new IWidget[]
            {
                new FlexibleWidget(1, middlenorth),
                new FlexibleWidget(1, middlesouth),
            }));

            var center = DemoTheme.LayoutHover("center.stack", Color.Violet, new FlexLayoutWidget(Axis.Horizontal, new IWidget[]
            {
                new FlexibleWidget(1, east),
                new FlexibleWidget(1, middle),
                new FlexibleWidget(1, west),
            }));

            var stack = DemoTheme.LayoutHover("stack", Color.Yellow, new FlexLayoutWidget(Axis.Vertical, new IWidget[]
            {
                new FlexibleWidget(1, north),
                new FlexibleWidget(2, center),
                new FlexibleWidget(1, south),
            }));

            var fullstyle = new StyleWidget(stack)
            {
                Style = new Style()
                {
                    Background = Color.Black
                }
            };

            var click = new ButtonWidget("clickme", fullstyle);

            click.OnClick = (ev) => state.ToggleLayout();

            return(click);
        }
コード例 #4
0
 void ApplyStyles(object widget, string style)
 {
     if (widget != null && !string.IsNullOrEmpty(style))
     {
         var styles = style.Split(' ');
         for (int i = 0; i < styles.Length; i++)
         {
             var currentStyle  = styles[i];
             var styleHandlers = GetStyleList(currentStyle);
             if (styleHandlers != null)
             {
                 for (int j = 0; j < styleHandlers.Count; j++)
                 {
                     var styleHandler = styleHandlers[j];
                     styleHandler(widget);
                 }
             }
         }
     }
     StyleWidget?.Invoke(widget);
 }