Merge pull request #81178 from KoBeWi/ok_bummer
Rework AcceptDialog's ok button text
This commit is contained in:
@ -73,8 +73,8 @@
|
|||||||
</member>
|
</member>
|
||||||
<member name="exclusive" type="bool" setter="set_exclusive" getter="is_exclusive" overrides="Window" default="true" />
|
<member name="exclusive" type="bool" setter="set_exclusive" getter="is_exclusive" overrides="Window" default="true" />
|
||||||
<member name="keep_title_visible" type="bool" setter="set_keep_title_visible" getter="get_keep_title_visible" overrides="Window" default="true" />
|
<member name="keep_title_visible" type="bool" setter="set_keep_title_visible" getter="get_keep_title_visible" overrides="Window" default="true" />
|
||||||
<member name="ok_button_text" type="String" setter="set_ok_button_text" getter="get_ok_button_text" default=""OK"">
|
<member name="ok_button_text" type="String" setter="set_ok_button_text" getter="get_ok_button_text" default="""">
|
||||||
The text displayed by the OK button (see [method get_ok_button]).
|
The text displayed by the OK button (see [method get_ok_button]). If empty, a default text will be used.
|
||||||
</member>
|
</member>
|
||||||
<member name="title" type="String" setter="set_title" getter="get_title" overrides="Window" default=""Alert!"" />
|
<member name="title" type="String" setter="set_title" getter="get_title" overrides="Window" default=""Alert!"" />
|
||||||
<member name="transient" type="bool" setter="set_transient" getter="is_transient" overrides="Window" default="true" />
|
<member name="transient" type="bool" setter="set_transient" getter="is_transient" overrides="Window" default="true" />
|
||||||
|
|||||||
@ -197,16 +197,12 @@ bool AcceptDialog::has_autowrap() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AcceptDialog::set_ok_button_text(String p_ok_button_text) {
|
void AcceptDialog::set_ok_button_text(String p_ok_button_text) {
|
||||||
ok_button->set_text(p_ok_button_text);
|
ok_text = p_ok_button_text;
|
||||||
|
_update_ok_text();
|
||||||
child_controls_changed();
|
|
||||||
if (is_visible()) {
|
|
||||||
_update_child_rects();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String AcceptDialog::get_ok_button_text() const {
|
String AcceptDialog::get_ok_button_text() const {
|
||||||
return ok_button->get_text();
|
return ok_text;
|
||||||
}
|
}
|
||||||
|
|
||||||
void AcceptDialog::register_text_enter(LineEdit *p_line_edit) {
|
void AcceptDialog::register_text_enter(LineEdit *p_line_edit) {
|
||||||
@ -257,6 +253,25 @@ void AcceptDialog::_update_child_rects() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AcceptDialog::_update_ok_text() {
|
||||||
|
String prev_text = ok_button->get_text();
|
||||||
|
String new_text = internal_ok_text;
|
||||||
|
|
||||||
|
if (!ok_text.is_empty()) {
|
||||||
|
new_text = ok_text;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (new_text == prev_text) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ok_button->set_text(new_text);
|
||||||
|
|
||||||
|
child_controls_changed();
|
||||||
|
if (is_visible()) {
|
||||||
|
_update_child_rects();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Size2 AcceptDialog::_get_contents_minimum_size() const {
|
Size2 AcceptDialog::_get_contents_minimum_size() const {
|
||||||
// First, we then iterate over the label and any other custom controls
|
// First, we then iterate over the label and any other custom controls
|
||||||
// to try and find the size that encompasses all content.
|
// to try and find the size that encompasses all content.
|
||||||
@ -294,6 +309,11 @@ Size2 AcceptDialog::_get_contents_minimum_size() const {
|
|||||||
return content_minsize;
|
return content_minsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AcceptDialog::set_internal_ok_text(const String &p_text) {
|
||||||
|
internal_ok_text = p_text;
|
||||||
|
_update_ok_text();
|
||||||
|
}
|
||||||
|
|
||||||
void AcceptDialog::_custom_action(const String &p_action) {
|
void AcceptDialog::_custom_action(const String &p_action) {
|
||||||
emit_signal(SNAME("custom_action"), p_action);
|
emit_signal(SNAME("custom_action"), p_action);
|
||||||
custom_action(p_action);
|
custom_action(p_action);
|
||||||
@ -442,7 +462,7 @@ AcceptDialog::AcceptDialog() {
|
|||||||
|
|
||||||
buttons_hbox->add_spacer();
|
buttons_hbox->add_spacer();
|
||||||
ok_button = memnew(Button);
|
ok_button = memnew(Button);
|
||||||
ok_button->set_text(ETR("OK"));
|
set_internal_ok_text(ETR("OK"));
|
||||||
buttons_hbox->add_child(ok_button);
|
buttons_hbox->add_child(ok_button);
|
||||||
buttons_hbox->add_spacer();
|
buttons_hbox->add_spacer();
|
||||||
|
|
||||||
|
|||||||
@ -51,6 +51,9 @@ class AcceptDialog : public Window {
|
|||||||
Button *ok_button = nullptr;
|
Button *ok_button = nullptr;
|
||||||
|
|
||||||
bool popped_up = false;
|
bool popped_up = false;
|
||||||
|
String ok_text;
|
||||||
|
String internal_ok_text;
|
||||||
|
|
||||||
bool hide_on_ok = true;
|
bool hide_on_ok = true;
|
||||||
bool close_on_escape = true;
|
bool close_on_escape = true;
|
||||||
|
|
||||||
@ -64,6 +67,7 @@ class AcceptDialog : public Window {
|
|||||||
void _custom_action(const String &p_action);
|
void _custom_action(const String &p_action);
|
||||||
void _custom_button_visibility_changed(Button *button);
|
void _custom_button_visibility_changed(Button *button);
|
||||||
void _update_child_rects();
|
void _update_child_rects();
|
||||||
|
void _update_ok_text();
|
||||||
|
|
||||||
static bool swap_cancel_ok;
|
static bool swap_cancel_ok;
|
||||||
|
|
||||||
@ -81,6 +85,8 @@ protected:
|
|||||||
virtual void cancel_pressed() {}
|
virtual void cancel_pressed() {}
|
||||||
virtual void custom_action(const String &) {}
|
virtual void custom_action(const String &) {}
|
||||||
|
|
||||||
|
void set_internal_ok_text(const String &p_text);
|
||||||
|
|
||||||
// Not private since used by derived classes signal.
|
// Not private since used by derived classes signal.
|
||||||
void _text_submitted(const String &p_text);
|
void _text_submitted(const String &p_text);
|
||||||
void _ok_pressed();
|
void _ok_pressed();
|
||||||
|
|||||||
@ -669,10 +669,10 @@ void FileDialog::deselect_all() {
|
|||||||
switch (mode) {
|
switch (mode) {
|
||||||
case FILE_MODE_OPEN_FILE:
|
case FILE_MODE_OPEN_FILE:
|
||||||
case FILE_MODE_OPEN_FILES:
|
case FILE_MODE_OPEN_FILES:
|
||||||
set_ok_button_text(ETR("Open"));
|
set_internal_ok_text(ETR("Open"));
|
||||||
break;
|
break;
|
||||||
case FILE_MODE_OPEN_DIR:
|
case FILE_MODE_OPEN_DIR:
|
||||||
set_ok_button_text(ETR("Select Current Folder"));
|
set_internal_ok_text(ETR("Select Current Folder"));
|
||||||
break;
|
break;
|
||||||
case FILE_MODE_OPEN_ANY:
|
case FILE_MODE_OPEN_ANY:
|
||||||
set_ok_button_text(ETR("Open"));
|
set_ok_button_text(ETR("Open"));
|
||||||
@ -698,14 +698,14 @@ void FileDialog::_tree_selected() {
|
|||||||
if (!d["dir"]) {
|
if (!d["dir"]) {
|
||||||
file->set_text(d["name"]);
|
file->set_text(d["name"]);
|
||||||
if (mode == FILE_MODE_SAVE_FILE) {
|
if (mode == FILE_MODE_SAVE_FILE) {
|
||||||
set_ok_button_text(ETR("Save"));
|
set_internal_ok_text(ETR("Save"));
|
||||||
} else {
|
} else {
|
||||||
set_ok_button_text(ETR("Open"));
|
set_internal_ok_text(ETR("Open"));
|
||||||
}
|
}
|
||||||
} else if (mode == FILE_MODE_OPEN_DIR || mode == FILE_MODE_OPEN_ANY || !dir_access->file_exists(file->get_text())) {
|
} else if (mode == FILE_MODE_OPEN_DIR || mode == FILE_MODE_OPEN_ANY || !dir_access->file_exists(file->get_text())) {
|
||||||
file->set_text("");
|
file->set_text("");
|
||||||
if (mode == FILE_MODE_OPEN_DIR || mode == FILE_MODE_OPEN_ANY) {
|
if (mode == FILE_MODE_OPEN_DIR || mode == FILE_MODE_OPEN_ANY) {
|
||||||
set_ok_button_text(ETR("Select This Folder"));
|
set_internal_ok_text(ETR("Select This Folder"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1235,35 +1235,35 @@ void FileDialog::set_file_mode(FileMode p_mode) {
|
|||||||
mode = p_mode;
|
mode = p_mode;
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case FILE_MODE_OPEN_FILE:
|
case FILE_MODE_OPEN_FILE:
|
||||||
set_ok_button_text(ETR("Open"));
|
set_internal_ok_text(ETR("Open"));
|
||||||
if (mode_overrides_title) {
|
if (mode_overrides_title) {
|
||||||
set_title(ETR("Open a File"));
|
set_title(ETR("Open a File"));
|
||||||
}
|
}
|
||||||
makedir->hide();
|
makedir->hide();
|
||||||
break;
|
break;
|
||||||
case FILE_MODE_OPEN_FILES:
|
case FILE_MODE_OPEN_FILES:
|
||||||
set_ok_button_text(ETR("Open"));
|
set_internal_ok_text(ETR("Open"));
|
||||||
if (mode_overrides_title) {
|
if (mode_overrides_title) {
|
||||||
set_title(ETR("Open File(s)"));
|
set_title(ETR("Open File(s)"));
|
||||||
}
|
}
|
||||||
makedir->hide();
|
makedir->hide();
|
||||||
break;
|
break;
|
||||||
case FILE_MODE_OPEN_DIR:
|
case FILE_MODE_OPEN_DIR:
|
||||||
set_ok_button_text(ETR("Select Current Folder"));
|
set_internal_ok_text(ETR("Select Current Folder"));
|
||||||
if (mode_overrides_title) {
|
if (mode_overrides_title) {
|
||||||
set_title(ETR("Open a Directory"));
|
set_title(ETR("Open a Directory"));
|
||||||
}
|
}
|
||||||
makedir->show();
|
makedir->show();
|
||||||
break;
|
break;
|
||||||
case FILE_MODE_OPEN_ANY:
|
case FILE_MODE_OPEN_ANY:
|
||||||
set_ok_button_text(ETR("Open"));
|
set_internal_ok_text(ETR("Open"));
|
||||||
if (mode_overrides_title) {
|
if (mode_overrides_title) {
|
||||||
set_title(ETR("Open a File or Directory"));
|
set_title(ETR("Open a File or Directory"));
|
||||||
}
|
}
|
||||||
makedir->show();
|
makedir->show();
|
||||||
break;
|
break;
|
||||||
case FILE_MODE_SAVE_FILE:
|
case FILE_MODE_SAVE_FILE:
|
||||||
set_ok_button_text(ETR("Save"));
|
set_internal_ok_text(ETR("Save"));
|
||||||
if (mode_overrides_title) {
|
if (mode_overrides_title) {
|
||||||
set_title(ETR("Save a File"));
|
set_title(ETR("Save a File"));
|
||||||
}
|
}
|
||||||
@ -1886,6 +1886,7 @@ FileDialog::FileDialog() {
|
|||||||
|
|
||||||
set_hide_on_ok(false);
|
set_hide_on_ok(false);
|
||||||
set_size(Size2(640, 360));
|
set_size(Size2(640, 360));
|
||||||
|
set_internal_ok_text(ETR("Save")); // Default mode text.
|
||||||
|
|
||||||
if (register_func) {
|
if (register_func) {
|
||||||
register_func(this);
|
register_func(this);
|
||||||
|
|||||||
Reference in New Issue
Block a user