From 78df5c305ee3d5824dbcd7786f6dc7df7556427f Mon Sep 17 00:00:00 2001 From: Iris Morelle Date: Sat, 16 Nov 2019 05:08:14 -0300 Subject: [PATCH] gui2/edit_text: Add an option to disallow whitespace-only input --- src/gui/dialogs/edit_text.cpp | 31 +++++++++++++++++++++++++++++-- src/gui/dialogs/edit_text.hpp | 11 ++++++++++- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/gui/dialogs/edit_text.cpp b/src/gui/dialogs/edit_text.cpp index 869f140be49..d3deb983cb9 100644 --- a/src/gui/dialogs/edit_text.cpp +++ b/src/gui/dialogs/edit_text.cpp @@ -16,7 +16,12 @@ #include "gui/dialogs/edit_text.hpp" +#include "gui/auxiliary/field.hpp" +#include "gui/widgets/button.hpp" #include "gui/widgets/settings.hpp" +#include "gui/widgets/text_box.hpp" + +#include namespace gui2 { @@ -41,14 +46,36 @@ namespace dialogs REGISTER_DIALOG(edit_text) -//TODO: add a way to disallow certain characters (like spaces or ") edit_text::edit_text(const std::string& title, const std::string& label, - std::string& text) + std::string& text, + bool disallow_empty) + : disallow_empty_(disallow_empty) { register_label("title", true, title, true); register_label("label", true, label, true); register_text("text", true, text, true); } + +void edit_text::pre_show(window& window) +{ + if(disallow_empty_) { + text_box& text = find_widget(&window, "text", false); + connect_signal_notify_modified(text, std::bind(&edit_text::on_text_change, this)); + on_text_change(); + } +} + +void edit_text::on_text_change() +{ + text_box& text = find_widget(get_window(), "text", false); + button& ok_button = find_widget