Remove the unused FindReplaceDialog class
This commit is contained in:
parent
c01575b312
commit
c318cdad66
|
@ -577,391 +577,6 @@ FindReplaceBar::FindReplaceBar() {
|
||||||
selection_only->connect("toggled", this, "_search_options_changed");
|
selection_only->connect("toggled", this, "_search_options_changed");
|
||||||
}
|
}
|
||||||
|
|
||||||
void FindReplaceDialog::popup_search() {
|
|
||||||
|
|
||||||
set_title(TTR("Search"));
|
|
||||||
replace_mc->hide();
|
|
||||||
replace_label->hide();
|
|
||||||
replace_vb->hide();
|
|
||||||
skip->hide();
|
|
||||||
popup_centered(Point2(300, 190));
|
|
||||||
get_ok()->set_text(TTR("Find"));
|
|
||||||
search_text->grab_focus();
|
|
||||||
if (text_edit->is_selection_active() && (text_edit->get_selection_from_line() == text_edit->get_selection_to_line())) {
|
|
||||||
|
|
||||||
search_text->set_text(text_edit->get_selection_text());
|
|
||||||
}
|
|
||||||
search_text->select_all();
|
|
||||||
|
|
||||||
error_label->set_text("");
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindReplaceDialog::popup_replace() {
|
|
||||||
|
|
||||||
set_title(TTR("Replace"));
|
|
||||||
bool do_selection = (text_edit->is_selection_active() && text_edit->get_selection_from_line() < text_edit->get_selection_to_line());
|
|
||||||
|
|
||||||
set_replace_selection_only(do_selection);
|
|
||||||
|
|
||||||
if (!do_selection && text_edit->is_selection_active()) {
|
|
||||||
search_text->set_text(text_edit->get_selection_text());
|
|
||||||
}
|
|
||||||
|
|
||||||
replace_mc->show();
|
|
||||||
replace_label->show();
|
|
||||||
replace_vb->show();
|
|
||||||
popup_centered(Point2(300, 300));
|
|
||||||
if (search_text->get_text() != "" && replace_text->get_text() == "") {
|
|
||||||
search_text->select(0, 0);
|
|
||||||
replace_text->grab_focus();
|
|
||||||
} else {
|
|
||||||
search_text->grab_focus();
|
|
||||||
search_text->select_all();
|
|
||||||
}
|
|
||||||
error_label->set_text("");
|
|
||||||
|
|
||||||
if (prompt->is_pressed()) {
|
|
||||||
skip->show();
|
|
||||||
get_ok()->set_text(TTR("Next"));
|
|
||||||
selection_only->set_disabled(true);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
skip->hide();
|
|
||||||
get_ok()->set_text(TTR("Replace"));
|
|
||||||
selection_only->set_disabled(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindReplaceDialog::_search_callback() {
|
|
||||||
|
|
||||||
if (is_replace_mode())
|
|
||||||
_replace();
|
|
||||||
else
|
|
||||||
_search();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindReplaceDialog::_replace_skip_callback() {
|
|
||||||
|
|
||||||
_search();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindReplaceDialog::_replace() {
|
|
||||||
|
|
||||||
text_edit->begin_complex_operation();
|
|
||||||
if (is_replace_all_mode()) {
|
|
||||||
|
|
||||||
//line as x so it gets priority in comparison, column as y
|
|
||||||
Point2i orig_cursor(text_edit->cursor_get_line(), text_edit->cursor_get_column());
|
|
||||||
Point2i prev_match = Point2(-1, -1);
|
|
||||||
|
|
||||||
bool selection_enabled = text_edit->is_selection_active();
|
|
||||||
Point2i selection_begin, selection_end;
|
|
||||||
if (selection_enabled) {
|
|
||||||
selection_begin = Point2i(text_edit->get_selection_from_line(), text_edit->get_selection_from_column());
|
|
||||||
selection_end = Point2i(text_edit->get_selection_to_line(), text_edit->get_selection_to_column());
|
|
||||||
}
|
|
||||||
int vsval = text_edit->get_v_scroll();
|
|
||||||
//int hsval = text_edit->get_h_scroll();
|
|
||||||
|
|
||||||
text_edit->cursor_set_line(0);
|
|
||||||
text_edit->cursor_set_column(0);
|
|
||||||
|
|
||||||
int rc = 0;
|
|
||||||
|
|
||||||
while (_search()) {
|
|
||||||
|
|
||||||
if (!text_edit->is_selection_active()) {
|
|
||||||
//search selects
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
//replace area
|
|
||||||
Point2i match_from(text_edit->get_selection_from_line(), text_edit->get_selection_from_column());
|
|
||||||
Point2i match_to(text_edit->get_selection_to_line(), text_edit->get_selection_to_column());
|
|
||||||
|
|
||||||
if (match_from < prev_match)
|
|
||||||
break; //done
|
|
||||||
|
|
||||||
prev_match = match_to;
|
|
||||||
|
|
||||||
if (selection_enabled && is_replace_selection_only()) {
|
|
||||||
|
|
||||||
if (match_from < selection_begin || match_to > selection_end)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
//replace but adjust selection bounds
|
|
||||||
|
|
||||||
text_edit->insert_text_at_cursor(get_replace_text());
|
|
||||||
if (match_to.x == selection_end.x)
|
|
||||||
selection_end.y += get_replace_text().length() - get_search_text().length();
|
|
||||||
} else {
|
|
||||||
//just replace
|
|
||||||
text_edit->insert_text_at_cursor(get_replace_text());
|
|
||||||
}
|
|
||||||
rc++;
|
|
||||||
}
|
|
||||||
//restore editor state (selection, cursor, scroll)
|
|
||||||
text_edit->cursor_set_line(orig_cursor.x);
|
|
||||||
text_edit->cursor_set_column(orig_cursor.y);
|
|
||||||
|
|
||||||
if (selection_enabled && is_replace_selection_only()) {
|
|
||||||
//reselect
|
|
||||||
text_edit->select(selection_begin.x, selection_begin.y, selection_end.x, selection_end.y);
|
|
||||||
} else {
|
|
||||||
text_edit->deselect();
|
|
||||||
}
|
|
||||||
|
|
||||||
text_edit->set_v_scroll(vsval);
|
|
||||||
//text_edit->set_h_scroll(hsval);
|
|
||||||
error_label->set_text(vformat(TTR("Replaced %d occurrence(s)."), rc));
|
|
||||||
|
|
||||||
//hide();
|
|
||||||
} else {
|
|
||||||
|
|
||||||
if (text_edit->get_selection_text() == get_search_text()) {
|
|
||||||
|
|
||||||
text_edit->insert_text_at_cursor(get_replace_text());
|
|
||||||
}
|
|
||||||
|
|
||||||
_search();
|
|
||||||
}
|
|
||||||
text_edit->end_complex_operation();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FindReplaceDialog::_search() {
|
|
||||||
|
|
||||||
String text = get_search_text();
|
|
||||||
uint32_t flags = 0;
|
|
||||||
|
|
||||||
if (is_whole_words())
|
|
||||||
flags |= TextEdit::SEARCH_WHOLE_WORDS;
|
|
||||||
if (is_case_sensitive())
|
|
||||||
flags |= TextEdit::SEARCH_MATCH_CASE;
|
|
||||||
if (is_backwards())
|
|
||||||
flags |= TextEdit::SEARCH_BACKWARDS;
|
|
||||||
|
|
||||||
int line = text_edit->cursor_get_line(), col = text_edit->cursor_get_column();
|
|
||||||
|
|
||||||
if (is_backwards()) {
|
|
||||||
col -= 1;
|
|
||||||
if (col < 0) {
|
|
||||||
line -= 1;
|
|
||||||
if (line < 0) {
|
|
||||||
line = text_edit->get_line_count() - 1;
|
|
||||||
}
|
|
||||||
col = text_edit->get_line(line).length();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
bool found = text_edit->search(text, flags, line, col, line, col);
|
|
||||||
|
|
||||||
if (found) {
|
|
||||||
// print_line("found");
|
|
||||||
text_edit->unfold_line(line);
|
|
||||||
text_edit->cursor_set_line(line);
|
|
||||||
if (is_backwards())
|
|
||||||
text_edit->cursor_set_column(col);
|
|
||||||
else
|
|
||||||
text_edit->cursor_set_column(col + text.length());
|
|
||||||
text_edit->select(line, col, line, col + text.length());
|
|
||||||
set_error("");
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
|
|
||||||
set_error(TTR("Not found!"));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindReplaceDialog::_prompt_changed() {
|
|
||||||
|
|
||||||
if (prompt->is_pressed()) {
|
|
||||||
skip->show();
|
|
||||||
get_ok()->set_text(TTR("Next"));
|
|
||||||
selection_only->set_disabled(true);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
skip->hide();
|
|
||||||
get_ok()->set_text(TTR("Replace"));
|
|
||||||
selection_only->set_disabled(false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindReplaceDialog::_skip_pressed() {
|
|
||||||
|
|
||||||
_replace_skip_callback();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FindReplaceDialog::is_replace_mode() const {
|
|
||||||
|
|
||||||
return replace_text->is_visible_in_tree();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FindReplaceDialog::is_replace_all_mode() const {
|
|
||||||
|
|
||||||
return !prompt->is_pressed();
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FindReplaceDialog::is_replace_selection_only() const {
|
|
||||||
|
|
||||||
return selection_only->is_pressed();
|
|
||||||
}
|
|
||||||
void FindReplaceDialog::set_replace_selection_only(bool p_enable) {
|
|
||||||
|
|
||||||
selection_only->set_pressed(p_enable);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindReplaceDialog::ok_pressed() {
|
|
||||||
|
|
||||||
_search_callback();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindReplaceDialog::_search_text_entered(const String &p_text) {
|
|
||||||
|
|
||||||
if (replace_text->is_visible_in_tree())
|
|
||||||
return;
|
|
||||||
emit_signal("search");
|
|
||||||
_search();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindReplaceDialog::_replace_text_entered(const String &p_text) {
|
|
||||||
|
|
||||||
if (!replace_text->is_visible_in_tree())
|
|
||||||
return;
|
|
||||||
|
|
||||||
emit_signal("search");
|
|
||||||
_replace();
|
|
||||||
}
|
|
||||||
|
|
||||||
String FindReplaceDialog::get_search_text() const {
|
|
||||||
|
|
||||||
return search_text->get_text();
|
|
||||||
}
|
|
||||||
String FindReplaceDialog::get_replace_text() const {
|
|
||||||
|
|
||||||
return replace_text->get_text();
|
|
||||||
}
|
|
||||||
bool FindReplaceDialog::is_whole_words() const {
|
|
||||||
|
|
||||||
return whole_words->is_pressed();
|
|
||||||
}
|
|
||||||
bool FindReplaceDialog::is_case_sensitive() const {
|
|
||||||
|
|
||||||
return case_sensitive->is_pressed();
|
|
||||||
}
|
|
||||||
bool FindReplaceDialog::is_backwards() const {
|
|
||||||
|
|
||||||
return backwards->is_pressed();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindReplaceDialog::set_error(const String &p_error) {
|
|
||||||
|
|
||||||
error_label->set_text(p_error);
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindReplaceDialog::set_text_edit(TextEdit *p_text_edit) {
|
|
||||||
|
|
||||||
text_edit = p_text_edit;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindReplaceDialog::search_next() {
|
|
||||||
_search();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FindReplaceDialog::_bind_methods() {
|
|
||||||
|
|
||||||
ClassDB::bind_method("_search_text_entered", &FindReplaceDialog::_search_text_entered);
|
|
||||||
ClassDB::bind_method("_replace_text_entered", &FindReplaceDialog::_replace_text_entered);
|
|
||||||
ClassDB::bind_method("_prompt_changed", &FindReplaceDialog::_prompt_changed);
|
|
||||||
ClassDB::bind_method("_skip_pressed", &FindReplaceDialog::_skip_pressed);
|
|
||||||
ADD_SIGNAL(MethodInfo("search"));
|
|
||||||
ADD_SIGNAL(MethodInfo("skip"));
|
|
||||||
}
|
|
||||||
|
|
||||||
FindReplaceDialog::FindReplaceDialog() {
|
|
||||||
|
|
||||||
set_self_modulate(Color(1, 1, 1, 0.8));
|
|
||||||
|
|
||||||
VBoxContainer *vb = memnew(VBoxContainer);
|
|
||||||
add_child(vb);
|
|
||||||
|
|
||||||
search_text = memnew(LineEdit);
|
|
||||||
vb->add_margin_child(TTR("Search"), search_text);
|
|
||||||
search_text->connect("text_entered", this, "_search_text_entered");
|
|
||||||
|
|
||||||
replace_label = memnew(Label);
|
|
||||||
replace_label->set_text(TTR("Replace By"));
|
|
||||||
vb->add_child(replace_label);
|
|
||||||
replace_mc = memnew(MarginContainer);
|
|
||||||
vb->add_child(replace_mc);
|
|
||||||
|
|
||||||
replace_text = memnew(LineEdit);
|
|
||||||
replace_text->set_anchor(MARGIN_RIGHT, ANCHOR_END);
|
|
||||||
replace_text->set_begin(Point2(15, 132));
|
|
||||||
replace_text->set_end(Point2(-15, 135));
|
|
||||||
|
|
||||||
replace_mc->add_child(replace_text);
|
|
||||||
|
|
||||||
replace_text->connect("text_entered", this, "_replace_text_entered");
|
|
||||||
|
|
||||||
MarginContainer *opt_mg = memnew(MarginContainer);
|
|
||||||
vb->add_child(opt_mg);
|
|
||||||
VBoxContainer *svb = memnew(VBoxContainer);
|
|
||||||
opt_mg->add_child(svb);
|
|
||||||
|
|
||||||
svb->add_child(memnew(Label));
|
|
||||||
|
|
||||||
whole_words = memnew(CheckButton);
|
|
||||||
whole_words->set_text(TTR("Whole Words"));
|
|
||||||
svb->add_child(whole_words);
|
|
||||||
|
|
||||||
case_sensitive = memnew(CheckButton);
|
|
||||||
case_sensitive->set_text(TTR("Case Sensitive"));
|
|
||||||
svb->add_child(case_sensitive);
|
|
||||||
|
|
||||||
backwards = memnew(CheckButton);
|
|
||||||
backwards->set_text(TTR("Backwards"));
|
|
||||||
svb->add_child(backwards);
|
|
||||||
|
|
||||||
opt_mg = memnew(MarginContainer);
|
|
||||||
vb->add_child(opt_mg);
|
|
||||||
VBoxContainer *rvb = memnew(VBoxContainer);
|
|
||||||
opt_mg->add_child(rvb);
|
|
||||||
replace_vb = rvb;
|
|
||||||
//rvb ->add_child(memnew(HSeparator));
|
|
||||||
rvb->add_child(memnew(Label));
|
|
||||||
|
|
||||||
prompt = memnew(CheckButton);
|
|
||||||
prompt->set_text(TTR("Prompt On Replace"));
|
|
||||||
rvb->add_child(prompt);
|
|
||||||
prompt->connect("pressed", this, "_prompt_changed");
|
|
||||||
|
|
||||||
selection_only = memnew(CheckButton);
|
|
||||||
selection_only->set_text(TTR("Selection Only"));
|
|
||||||
rvb->add_child(selection_only);
|
|
||||||
|
|
||||||
int margin = get_constant("margin", "Dialogs");
|
|
||||||
int button_margin = get_constant("button_margin", "Dialogs");
|
|
||||||
|
|
||||||
skip = memnew(Button);
|
|
||||||
skip->set_anchor(MARGIN_LEFT, ANCHOR_END);
|
|
||||||
skip->set_anchor(MARGIN_TOP, ANCHOR_END);
|
|
||||||
skip->set_anchor(MARGIN_RIGHT, ANCHOR_END);
|
|
||||||
skip->set_anchor(MARGIN_BOTTOM, ANCHOR_END);
|
|
||||||
skip->set_begin(Point2(-70, -button_margin));
|
|
||||||
skip->set_end(Point2(-10, -margin));
|
|
||||||
skip->set_text(TTR("Skip"));
|
|
||||||
add_child(skip);
|
|
||||||
skip->connect("pressed", this, "_skip_pressed");
|
|
||||||
|
|
||||||
error_label = memnew(Label);
|
|
||||||
error_label->set_align(Label::ALIGN_CENTER);
|
|
||||||
error_label->add_color_override("font_color", EditorNode::get_singleton()->get_gui_base()->get_color("error_color", "Editor"));
|
|
||||||
|
|
||||||
vb->add_child(error_label);
|
|
||||||
|
|
||||||
set_hide_on_ok(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*** CODE EDITOR ****/
|
/*** CODE EDITOR ****/
|
||||||
|
|
||||||
void CodeTextEditor::_text_editor_gui_input(const Ref<InputEvent> &p_event) {
|
void CodeTextEditor::_text_editor_gui_input(const Ref<InputEvent> &p_event) {
|
||||||
|
|
|
@ -131,62 +131,6 @@ public:
|
||||||
FindReplaceBar();
|
FindReplaceBar();
|
||||||
};
|
};
|
||||||
|
|
||||||
class FindReplaceDialog : public ConfirmationDialog {
|
|
||||||
|
|
||||||
GDCLASS(FindReplaceDialog, ConfirmationDialog);
|
|
||||||
|
|
||||||
LineEdit *search_text;
|
|
||||||
LineEdit *replace_text;
|
|
||||||
CheckButton *whole_words;
|
|
||||||
CheckButton *case_sensitive;
|
|
||||||
CheckButton *backwards;
|
|
||||||
CheckButton *prompt;
|
|
||||||
CheckButton *selection_only;
|
|
||||||
Button *skip;
|
|
||||||
Label *error_label;
|
|
||||||
MarginContainer *replace_mc;
|
|
||||||
Label *replace_label;
|
|
||||||
VBoxContainer *replace_vb;
|
|
||||||
|
|
||||||
void _search_text_entered(const String &p_text);
|
|
||||||
void _replace_text_entered(const String &p_text);
|
|
||||||
void _prompt_changed();
|
|
||||||
void _skip_pressed();
|
|
||||||
|
|
||||||
TextEdit *text_edit;
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void _search_callback();
|
|
||||||
void _replace_skip_callback();
|
|
||||||
|
|
||||||
bool _search();
|
|
||||||
void _replace();
|
|
||||||
|
|
||||||
virtual void ok_pressed();
|
|
||||||
static void _bind_methods();
|
|
||||||
|
|
||||||
public:
|
|
||||||
String get_search_text() const;
|
|
||||||
String get_replace_text() const;
|
|
||||||
bool is_whole_words() const;
|
|
||||||
bool is_case_sensitive() const;
|
|
||||||
bool is_backwards() const;
|
|
||||||
bool is_replace_mode() const;
|
|
||||||
bool is_replace_all_mode() const;
|
|
||||||
bool is_replace_selection_only() const;
|
|
||||||
void set_replace_selection_only(bool p_enable);
|
|
||||||
|
|
||||||
void set_error(const String &p_error);
|
|
||||||
|
|
||||||
void popup_search();
|
|
||||||
void popup_replace();
|
|
||||||
|
|
||||||
void set_text_edit(TextEdit *p_text_edit);
|
|
||||||
|
|
||||||
void search_next();
|
|
||||||
FindReplaceDialog();
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef void (*CodeTextEditorCodeCompleteFunc)(void *p_ud, const String &p_code, List<String> *r_options, bool &r_forced);
|
typedef void (*CodeTextEditorCodeCompleteFunc)(void *p_ud, const String &p_code, List<String> *r_options, bool &r_forced);
|
||||||
|
|
||||||
class CodeTextEditor : public VBoxContainer {
|
class CodeTextEditor : public VBoxContainer {
|
||||||
|
|
Loading…
Reference in New Issue