mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2026-01-02 01:03:29 +01:00
Added mouse support to the StatusBar. (#598)
This commit is contained in:
@@ -375,6 +375,17 @@ static class Demo {
|
|||||||
MessageBox.Query (50, 7, "Help", "This is a small help\nBe kind.", "Ok");
|
MessageBox.Query (50, 7, "Help", "This is a small help\nBe kind.", "Ok");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void Load ()
|
||||||
|
{
|
||||||
|
MessageBox.Query (50, 7, "Load", "This is a small load\nBe kind.", "Ok");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void Save ()
|
||||||
|
{
|
||||||
|
MessageBox.Query (50, 7, "Save", "This is a small save\nBe kind.", "Ok");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#region Selection Demo
|
#region Selection Demo
|
||||||
|
|
||||||
static void ListSelectionDemo (bool multiple)
|
static void ListSelectionDemo (bool multiple)
|
||||||
@@ -611,8 +622,8 @@ static class Demo {
|
|||||||
|
|
||||||
var statusBar = new StatusBar (new StatusItem [] {
|
var statusBar = new StatusBar (new StatusItem [] {
|
||||||
new StatusItem(Key.F1, "~F1~ Help", () => Help()),
|
new StatusItem(Key.F1, "~F1~ Help", () => Help()),
|
||||||
new StatusItem(Key.F2, "~F2~ Load", null),
|
new StatusItem(Key.F2, "~F2~ Load", Load),
|
||||||
new StatusItem(Key.F3, "~F3~ Save", null),
|
new StatusItem(Key.F3, "~F3~ Save", Save),
|
||||||
new StatusItem(Key.ControlQ, "~^Q~ Quit", () => { if (Quit ()) top.Running = false; }),
|
new StatusItem(Key.ControlQ, "~^Q~ Quit", () => { if (Quit ()) top.Running = false; }),
|
||||||
}) {
|
}) {
|
||||||
Parent = null,
|
Parent = null,
|
||||||
|
|||||||
@@ -185,11 +185,50 @@ namespace Terminal.Gui {
|
|||||||
{
|
{
|
||||||
foreach (var item in Items) {
|
foreach (var item in Items) {
|
||||||
if (kb.Key == item.Shortcut) {
|
if (kb.Key == item.Shortcut) {
|
||||||
if (item.Action != null) item.Action ();
|
item.Action?.Invoke ();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///<inheritdoc cref="MouseEvent"/>
|
||||||
|
public override bool MouseEvent (MouseEvent me)
|
||||||
|
{
|
||||||
|
if (me.Flags != MouseFlags.Button1Clicked)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
int pos = 1;
|
||||||
|
for (int i = 0; i < Items.Length; i++) {
|
||||||
|
if (me.X >= pos && me.X < pos + GetItemTitleLength (Items [i].Title)) {
|
||||||
|
Run (Items [i].Action);
|
||||||
|
}
|
||||||
|
pos += GetItemTitleLength (Items [i].Title) + 1;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int GetItemTitleLength (ustring title)
|
||||||
|
{
|
||||||
|
int len = 0;
|
||||||
|
foreach (var ch in title) {
|
||||||
|
if (ch == '~')
|
||||||
|
continue;
|
||||||
|
len++;
|
||||||
|
}
|
||||||
|
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Run (Action action)
|
||||||
|
{
|
||||||
|
if (action == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Application.MainLoop.AddIdle (() => {
|
||||||
|
action ();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user