123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using Terminal.Gui;
- namespace UICatalog.Scenarios;
- public class BorderEditor : AdornmentEditor
- {
- private CheckBox _ckbTitle;
- private RadioGroup _rbBorderStyle;
- private CheckBox _ckbGradient;
- public BorderEditor ()
- {
- Title = "_Border";
- Initialized += BorderEditor_Initialized;
- AdornmentChanged += BorderEditor_AdornmentChanged;
- }
- private void BorderEditor_AdornmentChanged (object sender, EventArgs e)
- {
- _ckbTitle.State = ((Border)AdornmentToEdit).Settings.FastHasFlags (BorderSettings.Title) ? CheckState.Checked : CheckState.UnChecked;
- _rbBorderStyle.SelectedItem = (int)((Border)AdornmentToEdit).LineStyle;
- _ckbGradient.State = ((Border)AdornmentToEdit).Settings.FastHasFlags (BorderSettings.Gradient) ? CheckState.Checked : CheckState.UnChecked;
- }
- private void BorderEditor_Initialized (object sender, EventArgs e)
- {
- List<LineStyle> borderStyleEnum = Enum.GetValues (typeof (LineStyle)).Cast<LineStyle> ().ToList ();
- _rbBorderStyle = new()
- {
- X = 0,
- Y = Pos.Bottom (Subviews [^1]),
- Width = Dim.Fill (),
- SelectedItem = (int)(((Border)AdornmentToEdit)?.LineStyle ?? LineStyle.None),
- BorderStyle = LineStyle.Single,
- Title = "Border St_yle",
- SuperViewRendersLineCanvas = true,
- Enabled = AdornmentToEdit is { },
- RadioLabels = borderStyleEnum.Select (e => e.ToString ()).ToArray ()
- };
- Add (_rbBorderStyle);
- _rbBorderStyle.SelectedItemChanged += OnRbBorderStyleOnSelectedItemChanged;
- _ckbTitle = new()
- {
- X = 0,
- Y = Pos.Bottom (_rbBorderStyle),
- State = CheckState.Checked,
- SuperViewRendersLineCanvas = true,
- Text = "Title",
- Enabled = AdornmentToEdit is { }
- };
- _ckbTitle.Toggle += OnCkbTitleOnToggle;
- Add (_ckbTitle);
- _ckbGradient = new ()
- {
- X = 0,
- Y = Pos.Bottom (_ckbTitle),
- State = CheckState.Checked,
- SuperViewRendersLineCanvas = true,
- Text = "Gradient",
- Enabled = AdornmentToEdit is { }
- };
- _ckbGradient.Toggle += OnCkbGradientOnToggle;
- Add (_ckbGradient);
- return;
- void OnRbBorderStyleOnSelectedItemChanged (object s, SelectedItemChangedArgs e)
- {
- LineStyle prevBorderStyle = AdornmentToEdit.BorderStyle;
- ((Border)AdornmentToEdit).LineStyle = (LineStyle)e.SelectedItem;
- if (((Border)AdornmentToEdit).LineStyle == LineStyle.None)
- {
- ((Border)AdornmentToEdit).Thickness = new (0);
- }
- else if (prevBorderStyle == LineStyle.None && ((Border)AdornmentToEdit).LineStyle != LineStyle.None)
- {
- ((Border)AdornmentToEdit).Thickness = new (1);
- }
- ((Border)AdornmentToEdit).SetNeedsDisplay ();
- LayoutSubviews ();
- }
- void OnCkbTitleOnToggle (object sender, CancelEventArgs<CheckState> args)
- {
- if (args.NewValue == CheckState.Checked)
- {
- ((Border)AdornmentToEdit).Settings |= BorderSettings.Title;
- }
- else
- {
- ((Border)AdornmentToEdit).Settings &= ~BorderSettings.Title;
- }
- }
- void OnCkbGradientOnToggle (object sender, CancelEventArgs<CheckState> args)
- {
- if (args.NewValue == CheckState.Checked)
- {
- ((Border)AdornmentToEdit).Settings |= BorderSettings.Gradient;
- }
- else
- {
- ((Border)AdornmentToEdit).Settings &= ~BorderSettings.Gradient;
- }
- }
- }
- }
|