Skip to content

Commit d432d26

Browse files
committed
Merge branch 'v1_8_1'
2 parents 8443f29 + a11cf57 commit d432d26

File tree

4 files changed

+156
-4
lines changed

4 files changed

+156
-4
lines changed

.github/workflows/api-docs.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ jobs:
1818
dotnet-version: 6.0.100
1919

2020
- name: Setup DocFX
21-
uses: crazy-max/ghaction-chocolatey@v1
21+
uses: crazy-max/ghaction-chocolatey@v2
2222
with:
2323
args: install docfx
2424

StandaloneExample/Program.cs

+48
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
using NStack;
66
using System.Text;
77
using Rune = System.Rune;
8+
using System.Runtime.InteropServices;
9+
using System.Diagnostics;
810

911
static class Demo {
1012
class Box10x : View {
@@ -220,6 +222,19 @@ static void Main (string [] args)
220222
Width = Dim.Fill (),
221223
Height = Dim.Fill () - 1
222224
};
225+
226+
StringBuilder aboutMessage = new StringBuilder ();
227+
aboutMessage.AppendLine (@"A comprehensive sample library for");
228+
aboutMessage.AppendLine (@"");
229+
aboutMessage.AppendLine (@" _______ _ _ _____ _ ");
230+
aboutMessage.AppendLine (@" |__ __| (_) | | / ____| (_) ");
231+
aboutMessage.AppendLine (@" | | ___ _ __ _ __ ___ _ _ __ __ _| || | __ _ _ _ ");
232+
aboutMessage.AppendLine (@" | |/ _ \ '__| '_ ` _ \| | '_ \ / _` | || | |_ | | | | | ");
233+
aboutMessage.AppendLine (@" | | __/ | | | | | | | | | | | (_| | || |__| | |_| | | ");
234+
aboutMessage.AppendLine (@" |_|\___|_| |_| |_| |_|_|_| |_|\__,_|_(_)_____|\__,_|_| ");
235+
aboutMessage.AppendLine (@"");
236+
aboutMessage.AppendLine (@"https://github.com/gui-cs/Terminal.Gui");
237+
223238
var menu = new MenuBar (new MenuBarItem [] {
224239
new MenuBarItem ("_File", new MenuItem [] {
225240
new MenuItem ("_New", "Creates new file", NewFile),
@@ -238,6 +253,12 @@ static void Main (string [] args)
238253
miScrollViewCheck = new MenuBarItem ("ScrollView", new MenuItem [] {
239254
new MenuItem ("Box10x", "", () => ScrollViewCheck()) {CheckType = MenuItemCheckStyle.Radio, Checked = true },
240255
new MenuItem ("Filler", "", () => ScrollViewCheck()) {CheckType = MenuItemCheckStyle.Radio }
256+
}),
257+
new MenuBarItem ("_Help", new MenuItem [] {
258+
new MenuItem ("_gui.cs API Overview", "", () => OpenUrl ("https://gui-cs.github.io/Terminal.Gui/articles/overview.html"), null, null, Key.F1),
259+
new MenuItem ("gui.cs _README", "", () => OpenUrl ("https://github.com/gui-cs/Terminal.Gui"), null, null, Key.F2),
260+
new MenuItem ("_About...", "About UI Catalog",
261+
() => MessageBox.Query ("About UI Catalog", aboutMessage.ToString(), "_Ok"), null, null, Key.CtrlMask | Key.A)
241262
})
242263
});
243264

@@ -261,5 +282,32 @@ static void Main (string [] args)
261282

262283
Application.Shutdown ();
263284
}
285+
286+
private static void OpenUrl (string url)
287+
{
288+
try {
289+
if (RuntimeInformation.IsOSPlatform (OSPlatform.Windows)) {
290+
url = url.Replace ("&", "^&");
291+
Process.Start (new ProcessStartInfo ("cmd", $"/c start {url}") { CreateNoWindow = true });
292+
} else if (RuntimeInformation.IsOSPlatform (OSPlatform.Linux)) {
293+
using (var process = new Process {
294+
StartInfo = new ProcessStartInfo {
295+
FileName = "xdg-open",
296+
Arguments = url,
297+
RedirectStandardError = true,
298+
RedirectStandardOutput = true,
299+
CreateNoWindow = true,
300+
UseShellExecute = false
301+
}
302+
}) {
303+
process.Start ();
304+
}
305+
} else if (RuntimeInformation.IsOSPlatform (OSPlatform.OSX)) {
306+
Process.Start ("open", url);
307+
}
308+
} catch {
309+
throw;
310+
}
311+
}
264312
}
265313
}

Terminal.Gui/Windows/MessageBox.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,9 @@ static int QueryFull (bool useErrorColors, int width, int height, ustring title,
248248
} else {
249249
maxWidthLine = width;
250250
}
251-
int textWidth = TextFormatter.MaxWidth (message, maxWidthLine);
251+
int textWidth = Math.Min (TextFormatter.MaxWidth (message, maxWidthLine), Application.Driver.Cols);
252252
int textHeight = TextFormatter.MaxLines (message, textWidth); // message.Count (ustring.Make ('\n')) + 1;
253-
int msgboxHeight = Math.Max (1, textHeight) + 4; // textHeight + (top + top padding + buttons + bottom)
253+
int msgboxHeight = Math.Min (Math.Max (1, textHeight) + 4, Application.Driver.Rows); // textHeight + (top + top padding + buttons + bottom)
254254

255255
// Create button array for Dialog
256256
int count = 0;
@@ -300,7 +300,7 @@ static int QueryFull (bool useErrorColors, int width, int height, ustring title,
300300

301301
if (width == 0 & height == 0) {
302302
// Dynamically size Width
303-
d.Width = Math.Max (maxWidthLine, Math.Max (title.ConsoleWidth, Math.Max (textWidth + 2, d.GetButtonsWidth ()))); // textWidth + (left + padding + padding + right)
303+
d.Width = Math.Min (Math.Max (maxWidthLine, Math.Max (title.ConsoleWidth, Math.Max (textWidth + 2, d.GetButtonsWidth ()))), Application.Driver.Cols); // textWidth + (left + padding + padding + right)
304304
}
305305

306306
// Setup actions

UnitTests/MessageBoxTests.cs

+104
Original file line numberDiff line numberDiff line change
@@ -154,5 +154,109 @@ public void MessageBox_With_A_Enough_Fixed_Size ()
154154

155155
Application.Run ();
156156
}
157+
158+
[Fact, AutoInitShutdown]
159+
public void MessageBox_With_A_Label_Without_Spaces ()
160+
{
161+
var iterations = -1;
162+
Application.Begin (Application.Top);
163+
164+
Application.Iteration += () => {
165+
iterations++;
166+
167+
if (iterations == 0) {
168+
MessageBox.Query ("mywindow", new string ('f', 2000), "ok");
169+
170+
Application.RequestStop ();
171+
} else if (iterations == 1) {
172+
Application.Top.Redraw (Application.Top.Bounds);
173+
GraphViewTests.AssertDriverContentsWithFrameAre (@"
174+
┌ mywindow ────────────────────────────────────────────────────────────────────┐
175+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
176+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
177+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
178+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
179+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
180+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
181+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
182+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
183+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
184+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
185+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
186+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
187+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
188+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
189+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
190+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
191+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
192+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
193+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
194+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
195+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
196+
│ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff│
197+
│ [◦ ok ◦] │
198+
└──────────────────────────────────────────────────────────────────────────────┘
199+
", output);
200+
201+
Application.RequestStop ();
202+
}
203+
};
204+
205+
Application.Run ();
206+
}
207+
208+
[Fact, AutoInitShutdown]
209+
public void MessageBox_With_A_Label_With_Spaces ()
210+
{
211+
var iterations = -1;
212+
Application.Begin (Application.Top);
213+
214+
Application.Iteration += () => {
215+
iterations++;
216+
217+
if (iterations == 0) {
218+
var sb = new StringBuilder ();
219+
for (int i = 0; i < 1000; i++)
220+
sb.Append ("ff ");
221+
222+
MessageBox.Query ("mywindow", sb.ToString (), "ok");
223+
224+
Application.RequestStop ();
225+
} else if (iterations == 1) {
226+
Application.Top.Redraw (Application.Top.Bounds);
227+
GraphViewTests.AssertDriverContentsWithFrameAre (@"
228+
┌ mywindow ────────────────────────────────────────────────────────────────────┐
229+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
230+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
231+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
232+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
233+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
234+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
235+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
236+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
237+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
238+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
239+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
240+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
241+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
242+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
243+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
244+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
245+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
246+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
247+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
248+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
249+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
250+
│ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff │
251+
│ [◦ ok ◦] │
252+
└──────────────────────────────────────────────────────────────────────────────┘
253+
", output);
254+
255+
Application.RequestStop ();
256+
}
257+
};
258+
259+
Application.Run ();
260+
}
157261
}
158262
}

0 commit comments

Comments
 (0)