|
@@ -8,6 +8,7 @@ using Terminal.Gui;
|
|
|
|
|
|
namespace UICatalog.Scenarios;
|
|
|
|
|
|
+#if V2_STATUSBAR
|
|
|
[ScenarioMetadata ("Dynamic StatusBar", "Demonstrates how to add and remove a StatusBar and change items dynamically.")]
|
|
|
[ScenarioCategory ("Top Level Windows")]
|
|
|
public class DynamicStatusBar : Scenario
|
|
@@ -90,9 +91,9 @@ public class DynamicStatusBar : Scenario
|
|
|
|
|
|
public class DynamicStatusBarDetails : FrameView
|
|
|
{
|
|
|
- private StatusItem _statusItem;
|
|
|
+ private Shortcut _statusItem;
|
|
|
|
|
|
- public DynamicStatusBarDetails (StatusItem statusItem = null) : this ()
|
|
|
+ public DynamicStatusBarDetails (Shortcut statusItem = null) : this ()
|
|
|
{
|
|
|
_statusItem = statusItem;
|
|
|
Title = statusItem == null ? "Adding New StatusBar Item." : "Editing StatusBar Item.";
|
|
@@ -155,7 +156,7 @@ public class DynamicStatusBar : Scenario
|
|
|
|
|
|
bool CheckShortcut (KeyCode k, bool pre)
|
|
|
{
|
|
|
- StatusItem m = _statusItem != null ? _statusItem : new StatusItem (k, "", null);
|
|
|
+ Shortcut m = _statusItem != null ? _statusItem : new Shortcut (k, "", null);
|
|
|
|
|
|
if (pre && !ShortcutHelper.PreShortcutValidation (k))
|
|
|
{
|
|
@@ -166,28 +167,10 @@ public class DynamicStatusBar : Scenario
|
|
|
|
|
|
if (!pre)
|
|
|
{
|
|
|
- if (!ShortcutHelper.PostShortcutValidation (
|
|
|
- ShortcutHelper.GetShortcutFromTag (
|
|
|
- TextShortcut.Text,
|
|
|
- StatusBar.ShortcutDelimiter
|
|
|
- )
|
|
|
- ))
|
|
|
- {
|
|
|
- TextShortcut.Text = "";
|
|
|
-
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- TextShortcut.Text =
|
|
|
- Key.ToString (
|
|
|
- k,
|
|
|
- StatusBar
|
|
|
- .ShortcutDelimiter
|
|
|
- ); //ShortcutHelper.GetShortcutTag (k, StatusBar.ShortcutDelimiter);
|
|
|
-
|
|
|
+ TextShortcut.Text = k.ToString();
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -213,7 +196,7 @@ public class DynamicStatusBar : Scenario
|
|
|
public TextField TextTitle { get; }
|
|
|
public Action CreateAction (DynamicStatusItem item) { return () => MessageBox.ErrorQuery (item.Title, item.Action, "Ok"); }
|
|
|
|
|
|
- public void EditStatusItem (StatusItem statusItem)
|
|
|
+ public void EditStatusItem (Shortcut statusItem)
|
|
|
{
|
|
|
if (statusItem == null)
|
|
|
{
|
|
@@ -231,12 +214,7 @@ public class DynamicStatusBar : Scenario
|
|
|
? GetTargetAction (statusItem.Action)
|
|
|
: string.Empty;
|
|
|
|
|
|
- TextShortcut.Text =
|
|
|
- Key.ToString (
|
|
|
- (KeyCode)statusItem.Shortcut,
|
|
|
- StatusBar
|
|
|
- .ShortcutDelimiter
|
|
|
- ); //ShortcutHelper.GetShortcutTag (statusItem.Shortcut, StatusBar.ShortcutDelimiter) ?? "";
|
|
|
+ TextShortcut.Text = statusItem.Shortcut;
|
|
|
}
|
|
|
|
|
|
public DynamicStatusItem EnterStatusItem ()
|
|
@@ -334,32 +312,15 @@ public class DynamicStatusBar : Scenario
|
|
|
public class DynamicStatusBarSample : Window
|
|
|
{
|
|
|
private readonly ListView _lstItems;
|
|
|
- private StatusItem _currentEditStatusItem;
|
|
|
+ private Shortcut _currentEditStatusItem;
|
|
|
private int _currentSelectedStatusBar = -1;
|
|
|
- private StatusItem _currentStatusItem;
|
|
|
+ private Shortcut _currentStatusItem;
|
|
|
private StatusBar _statusBar;
|
|
|
|
|
|
public DynamicStatusBarSample ()
|
|
|
{
|
|
|
DataContext = new DynamicStatusItemModel ();
|
|
|
|
|
|
- var _frmDelimiter = new FrameView
|
|
|
- {
|
|
|
- X = Pos.Center (),
|
|
|
- Y = 0,
|
|
|
- Width = 25,
|
|
|
- Height = 4,
|
|
|
- Title = "Shortcut Delimiter:"
|
|
|
- };
|
|
|
-
|
|
|
- var _txtDelimiter = new TextField { X = Pos.Center (), Width = 2, Text = $"{StatusBar.ShortcutDelimiter}" };
|
|
|
-
|
|
|
- _txtDelimiter.TextChanged += (s, _) =>
|
|
|
- StatusBar.ShortcutDelimiter = _txtDelimiter.Text.ToRunes () [0];
|
|
|
- _frmDelimiter.Add (_txtDelimiter);
|
|
|
-
|
|
|
- Add (_frmDelimiter);
|
|
|
-
|
|
|
var _frmStatusBar = new FrameView
|
|
|
{
|
|
|
Y = 5, Width = Dim.Percent (50), Height = Dim.Fill (2), Title = "Items:"
|
|
@@ -404,18 +365,18 @@ public class DynamicStatusBar : Scenario
|
|
|
Y = Pos.Top (_frmStatusBar),
|
|
|
Width = Dim.Fill (),
|
|
|
Height = Dim.Fill (4),
|
|
|
- Title = "StatusBar Item Details:"
|
|
|
+ Title = "Shortcut Details:"
|
|
|
};
|
|
|
Add (_frmStatusBarDetails);
|
|
|
|
|
|
_btnUp.Accept += (s, e) =>
|
|
|
{
|
|
|
int i = _lstItems.SelectedItem;
|
|
|
- StatusItem statusItem = DataContext.Items.Count > 0 ? DataContext.Items [i].StatusItem : null;
|
|
|
+ Shortcut statusItem = DataContext.Items.Count > 0 ? DataContext.Items [i].Shortcut : null;
|
|
|
|
|
|
if (statusItem != null)
|
|
|
{
|
|
|
- StatusItem [] items = _statusBar.Items;
|
|
|
+ Shortcut [] items = _statusBar.Items;
|
|
|
|
|
|
if (i > 0)
|
|
|
{
|
|
@@ -434,11 +395,11 @@ public class DynamicStatusBar : Scenario
|
|
|
_btnDown.Accept += (s, e) =>
|
|
|
{
|
|
|
int i = _lstItems.SelectedItem;
|
|
|
- StatusItem statusItem = DataContext.Items.Count > 0 ? DataContext.Items [i].StatusItem : null;
|
|
|
+ Shortcut statusItem = DataContext.Items.Count > 0 ? DataContext.Items [i].Shortcut : null;
|
|
|
|
|
|
if (statusItem != null)
|
|
|
{
|
|
|
- StatusItem [] items = _statusBar.Items;
|
|
|
+ Shortcut [] items = _statusBar.Items;
|
|
|
|
|
|
if (i < items.Length - 1)
|
|
|
{
|
|
@@ -511,9 +472,9 @@ public class DynamicStatusBar : Scenario
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- StatusItem newStatusItem = CreateNewStatusBar (item);
|
|
|
+ Shortcut newStatusItem = CreateNewStatusBar (item);
|
|
|
_currentSelectedStatusBar++;
|
|
|
- _statusBar.AddItemAt (_currentSelectedStatusBar, newStatusItem);
|
|
|
+ _statusBar.AddShortcutAt (_currentSelectedStatusBar, newStatusItem);
|
|
|
DataContext.Items.Add (new DynamicStatusItemList (newStatusItem.Title, newStatusItem));
|
|
|
_lstItems.MoveDown ();
|
|
|
SetFrameDetails ();
|
|
@@ -521,8 +482,8 @@ public class DynamicStatusBar : Scenario
|
|
|
|
|
|
_btnRemove.Accept += (s, e) =>
|
|
|
{
|
|
|
- StatusItem statusItem = DataContext.Items.Count > 0
|
|
|
- ? DataContext.Items [_lstItems.SelectedItem].StatusItem
|
|
|
+ Shortcut statusItem = DataContext.Items.Count > 0
|
|
|
+ ? DataContext.Items [_lstItems.SelectedItem].Shortcut
|
|
|
: null;
|
|
|
|
|
|
if (statusItem != null)
|
|
@@ -542,8 +503,8 @@ public class DynamicStatusBar : Scenario
|
|
|
|
|
|
_lstItems.Enter += (s, e) =>
|
|
|
{
|
|
|
- StatusItem statusItem = DataContext.Items.Count > 0
|
|
|
- ? DataContext.Items [_lstItems.SelectedItem].StatusItem
|
|
|
+ Shortcut statusItem = DataContext.Items.Count > 0
|
|
|
+ ? DataContext.Items [_lstItems.SelectedItem].Shortcut
|
|
|
: null;
|
|
|
SetFrameDetails (statusItem);
|
|
|
};
|
|
@@ -582,14 +543,14 @@ public class DynamicStatusBar : Scenario
|
|
|
|
|
|
var lstItems = new Binding (this, "Items", _lstItems, "Source", listWrapperConverter);
|
|
|
|
|
|
- void SetFrameDetails (StatusItem statusItem = null)
|
|
|
+ void SetFrameDetails (Shortcut statusItem = null)
|
|
|
{
|
|
|
- StatusItem newStatusItem;
|
|
|
+ Shortcut newStatusItem;
|
|
|
|
|
|
if (statusItem == null)
|
|
|
{
|
|
|
newStatusItem = DataContext.Items.Count > 0
|
|
|
- ? DataContext.Items [_lstItems.SelectedItem].StatusItem
|
|
|
+ ? DataContext.Items [_lstItems.SelectedItem].Shortcut
|
|
|
: null;
|
|
|
}
|
|
|
else
|
|
@@ -608,10 +569,10 @@ public class DynamicStatusBar : Scenario
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- void SetListViewSource (StatusItem _currentStatusItem, bool fill = false)
|
|
|
+ void SetListViewSource (Shortcut _currentStatusItem, bool fill = false)
|
|
|
{
|
|
|
DataContext.Items = [];
|
|
|
- StatusItem statusItem = _currentStatusItem;
|
|
|
+ Shortcut statusItem = _currentStatusItem;
|
|
|
|
|
|
if (!fill)
|
|
|
{
|
|
@@ -620,29 +581,22 @@ public class DynamicStatusBar : Scenario
|
|
|
|
|
|
if (statusItem != null)
|
|
|
{
|
|
|
- foreach (StatusItem si in _statusBar.Items)
|
|
|
+ foreach (Shortcut si in _statusBar.Items)
|
|
|
{
|
|
|
DataContext.Items.Add (new DynamicStatusItemList (si.Title, si));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- StatusItem CreateNewStatusBar (DynamicStatusItem item)
|
|
|
+ Shortcut CreateNewStatusBar (DynamicStatusItem item)
|
|
|
{
|
|
|
- var newStatusItem = new StatusItem (
|
|
|
- ShortcutHelper.GetShortcutFromTag (
|
|
|
- item.Shortcut,
|
|
|
- StatusBar.ShortcutDelimiter
|
|
|
- ),
|
|
|
- item.Title,
|
|
|
- _frmStatusBarDetails.CreateAction (item)
|
|
|
- );
|
|
|
+ var newStatusItem = new Shortcut (item.Shortcut);
|
|
|
|
|
|
return newStatusItem;
|
|
|
}
|
|
|
|
|
|
void UpdateStatusItem (
|
|
|
- StatusItem _currentEditStatusItem,
|
|
|
+ Shortcut _currentEditStatusItem,
|
|
|
DynamicStatusItem statusItem,
|
|
|
int index
|
|
|
)
|
|
@@ -702,15 +656,15 @@ public class DynamicStatusBar : Scenario
|
|
|
{
|
|
|
public DynamicStatusItemList () { }
|
|
|
|
|
|
- public DynamicStatusItemList (string title, StatusItem statusItem)
|
|
|
+ public DynamicStatusItemList (string title, Shortcut statusItem)
|
|
|
{
|
|
|
Title = title;
|
|
|
- StatusItem = statusItem;
|
|
|
+ Shortcut = statusItem;
|
|
|
}
|
|
|
|
|
|
- public StatusItem StatusItem { get; set; }
|
|
|
+ public Shortcut Shortcut { get; set; }
|
|
|
public string Title { get; set; }
|
|
|
- public override string ToString () { return $"{Title}, {StatusItem}"; }
|
|
|
+ public override string ToString () { return $"{Title}, {Shortcut}"; }
|
|
|
}
|
|
|
|
|
|
public class DynamicStatusItemModel : INotifyPropertyChanged
|
|
@@ -781,3 +735,4 @@ public class DynamicStatusBar : Scenario
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+#endif
|