Merge branch 'master' of tig:tig/gui.cs

This commit is contained in:
Charlie Kindel
2020-06-03 09:20:19 -06:00
4 changed files with 61 additions and 25 deletions

View File

@@ -375,6 +375,17 @@ static class Demo {
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
static void ListSelectionDemo (bool multiple)
@@ -611,8 +622,8 @@ static class Demo {
var statusBar = new StatusBar (new StatusItem [] {
new StatusItem(Key.F1, "~F1~ Help", () => Help()),
new StatusItem(Key.F2, "~F2~ Load", null),
new StatusItem(Key.F3, "~F3~ Save", null),
new StatusItem(Key.F2, "~F2~ Load", Load),
new StatusItem(Key.F3, "~F3~ Save", Save),
new StatusItem(Key.ControlQ, "~^Q~ Quit", () => { if (Quit ()) top.Running = false; }),
}) {
Parent = null,

View File

@@ -333,9 +333,9 @@ type Demo() = class end
X = Pos.At(0),
Y = Pos.At(0),
Width = Dim.Fill () - Dim.op_Implicit(1),
Height = Dim.Fill () - Dim.op_Implicit(2)
Height = Dim.Fill () - Dim.op_Implicit(2),
ColorScheme = Colors.TopLevel
)
listView.ColorScheme <- Colors.TopLevel
container.Add (listView)
let KeyDownPressUp(keyEvent : KeyEvent, updown : string) =
@@ -344,25 +344,7 @@ type Demo() = class end
| "Down"
| "Up"
| "Press" ->
let mutable (msg : string) = sprintf "Key %5s : " updown
if (keyEvent.Key &&& Key.ShiftMask) <> Key.Unknown
then msg <- msg + "Shift "
if (keyEvent.Key &&& Key.CtrlMask) <> Key.Unknown
then msg <- msg + "Ctrl "
if (keyEvent.Key &&& Key.AltMask) <> Key.Unknown
then msg <- msg + "Alt "
msg <- msg + if (keyEvent.KeyValue &&& (int)Key.CharMask) > 26 then (string)keyEvent.KeyValue else (string)keyEvent.Key
list.Add (msg)
| _ ->
if (keyEvent.Key &&& Key.ShiftMask) <> Key.Unknown
then list.Add (sprintf "Key %s : Shift " updown)
else if (keyEvent.Key &&& Key.CtrlMask) <> Key.Unknown
then list.Add (sprintf "Key %s : Ctrl " updown)
else if (keyEvent.Key &&& Key.AltMask) <> Key.Unknown
then list.Add (sprintf "Key %s : Alt " updown)
else if ((int)keyEvent.KeyValue &&& (int)Key.CharMask) > 26
then list.Add (sprintf "Key %s : %s" updown (keyEvent.KeyValue.ToString()))
else list.Add (sprintf "Key %s : %s" updown (keyEvent.Key.ToString()))
list.Add (keyEvent.ToString ())
listView.MoveDown ();
container.KeyDown.Add(fun (e : View.KeyEventEventArgs) -> KeyDownPressUp (e.KeyEvent, "Down") |> ignore)

View File

@@ -90,6 +90,9 @@ namespace Terminal.Gui {
/// <param name="region">Region to be redrawn.</param>
public override void Redraw(Rect region)
{
if (ColorScheme == null)
return;
Driver.SetAttribute (ColorScheme.Normal);
if (vertical) {
@@ -408,7 +411,8 @@ namespace Terminal.Gui {
Driver.Clip = savedClip;
vertical.Redraw (vertical.Bounds);
horizontal.Redraw (vertical.Bounds);
horizontal.Redraw (horizontal.Bounds);
Driver.Clip = savedClip;
Driver.SetAttribute (ColorScheme.Normal);
}

View File

@@ -185,11 +185,50 @@ namespace Terminal.Gui {
{
foreach (var item in Items) {
if (kb.Key == item.Shortcut) {
if (item.Action != null) item.Action ();
item.Action?.Invoke ();
return true;
}
}
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;
});
}
}
}