public bool DisplayInputDialog(SoftwareKeyboardUiArgs args, out string userText) { ManualResetEvent dialogCloseEvent = new ManualResetEvent(false); bool okPressed = false; bool error = false; string inputText = args.InitialText ?? ""; Application.Invoke(delegate { try { var swkbdDialog = new SwkbdAppletDialog(_parent) { Title = "Software Keyboard", Text = args.HeaderText, SecondaryText = args.SubtitleText }; swkbdDialog.InputEntry.Text = inputText; swkbdDialog.InputEntry.PlaceholderText = args.GuideText; swkbdDialog.OkButton.Label = args.SubmitText; swkbdDialog.SetInputLengthValidation(args.StringLengthMin, args.StringLengthMax); if (swkbdDialog.Run() == (int)ResponseType.Ok) { inputText = swkbdDialog.InputEntry.Text; okPressed = true; } swkbdDialog.Dispose(); } catch (Exception ex) { error = true; GtkDialog.CreateErrorDialog($"Error displaying Software Keyboard: {ex}"); } finally { dialogCloseEvent.Set(); } }); dialogCloseEvent.WaitOne(); userText = error ? null : inputText; return(error || okPressed); }
public bool DisplayInputDialog(SoftwareKeyboardUiArgs args, out string userText) { ManualResetEvent dialogCloseEvent = new(false); bool okPressed = false; bool error = false; string inputText = args.InitialText ?? ""; Dispatcher.UIThread.Post(async() => { try { var response = await SwkbdAppletDialog.ShowInputDialog(_parent, LocaleManager.Instance["SoftwareKeyboard"], args); if (response.Result == UserResult.Ok) { inputText = response.Input; okPressed = true; } } catch (Exception ex) { error = true; await ContentDialogHelper.CreateErrorDialog(string.Format(LocaleManager.Instance["DialogSoftwareKeyboardErrorExceptionMessage"], ex)); } finally { dialogCloseEvent.Set(); } }); dialogCloseEvent.WaitOne(); userText = error ? null : inputText; return(error || okPressed); }