summaryrefslogtreecommitdiff
path: root/tools/editor
diff options
context:
space:
mode:
authorreduz <reduzio@gmail.com>2014-05-06 08:59:34 -0300
committerreduz <reduzio@gmail.com>2014-05-06 08:59:34 -0300
commit5044bead5f344a24f971f0bb0c8d282f1785f06a (patch)
tree554effb91a3c96ae28017bb1ee60d0ef17fc5691 /tools/editor
parente27bc784ddb71423792f58e88266680d63f4d237 (diff)
parent6c0f3f8d0ca9e30951f0e6e643af07ca7ed695a9 (diff)
Merge pull request #373 from marynate/PR-contextual-help
Contextual help for Script Editor
Diffstat (limited to 'tools/editor')
-rw-r--r--tools/editor/editor_help.cpp30
-rw-r--r--tools/editor/editor_help.h2
-rw-r--r--tools/editor/editor_node.cpp5
-rw-r--r--tools/editor/plugins/script_editor_plugin.cpp18
-rw-r--r--tools/editor/plugins/script_editor_plugin.h3
5 files changed, 42 insertions, 16 deletions
diff --git a/tools/editor/editor_help.cpp b/tools/editor/editor_help.cpp
index 19e65f3844..ddbc8ee479 100644
--- a/tools/editor/editor_help.cpp
+++ b/tools/editor/editor_help.cpp
@@ -43,6 +43,7 @@ void EditorHelpSearch::popup(const String& p_term) {
if (p_term!="") {
search_box->set_text(p_term);
search_box->select_all();
+ _update_search();
} else
search_box->clear();
search_box->grab_focus();
@@ -70,7 +71,6 @@ void EditorHelpSearch::_sbox_input(const InputEvent& p_ie) {
void EditorHelpSearch::_update_search() {
-
search_options->clear();
search_options->set_hide_root(true);
@@ -249,6 +249,7 @@ void EditorHelpSearch::_confirmed() {
String mdata=ti->get_metadata(0);
emit_signal("go_to_help",mdata);
+ editor->call("_editor_select",3); // in case EditorHelpSearch beeen invoked on top of other editor window
// go to that
hide();
}
@@ -318,10 +319,14 @@ DocData *EditorHelp::doc=NULL;
void EditorHelp::_unhandled_key_input(const InputEvent& p_ev) {
- if (is_visible() && p_ev.key.mod.control && p_ev.key.scancode==KEY_F) {
+ if (!is_visible())
+ return;
+ if ( p_ev.key.mod.control && p_ev.key.scancode==KEY_F) {
search->grab_focus();
search->select_all();
+ } else if (p_ev.key.mod.shift && p_ev.key.scancode==KEY_F1) {
+ class_search->popup();
}
}
@@ -454,9 +459,11 @@ void EditorHelp::_scroll_changed(double p_scroll) {
history[p].scroll=p_scroll;
}
-void EditorHelp::_goto_desc(const String& p_class,bool p_update_history,int p_vscr) {
+Error EditorHelp::_goto_desc(const String& p_class,bool p_update_history,int p_vscr) {
- ERR_FAIL_COND(!doc->class_list.has(p_class));
+ //ERR_FAIL_COND(!doc->class_list.has(p_class));
+ if (!doc->class_list.has(p_class))
+ return ERR_DOES_NOT_EXIST;
if (tree_item_map.has(p_class)) {
@@ -470,7 +477,7 @@ void EditorHelp::_goto_desc(const String& p_class,bool p_update_history,int p_vs
description_line=0;
if (p_class==edited_class->get_text())
- return; //already there
+ return OK; //already there
scroll_locked=true;
@@ -858,13 +865,16 @@ void EditorHelp::_goto_desc(const String& p_class,bool p_update_history,int p_vs
scroll_locked=false;
+ return OK;
}
-void EditorHelp::_request_help(const String& p_string) {
-
- _goto_desc(p_string);
-
-
+void EditorHelp::_request_help(const String& p_string) {
+ Error err = _goto_desc(p_string);
+ if (err==OK) {
+ editor->call("_editor_select",3);
+ } else {
+ class_search->popup(p_string);
+ }
//100 palabras
}
diff --git a/tools/editor/editor_help.h b/tools/editor/editor_help.h
index eac33e5e16..94a31ce902 100644
--- a/tools/editor/editor_help.h
+++ b/tools/editor/editor_help.h
@@ -139,7 +139,7 @@ class EditorHelp : public VBoxContainer {
void _class_list_select(const String& p_select);
void _class_desc_select(const String& p_select);
- void _goto_desc(const String& p_class,bool p_update_history=true,int p_vscr=-1);
+ Error _goto_desc(const String& p_class,bool p_update_history=true,int p_vscr=-1);
void _update_history_buttons();
void _update_doc();
diff --git a/tools/editor/editor_node.cpp b/tools/editor/editor_node.cpp
index 3ea09fca47..3ef523a695 100644
--- a/tools/editor/editor_node.cpp
+++ b/tools/editor/editor_node.cpp
@@ -115,7 +115,10 @@ void EditorNode::_unhandled_input(const InputEvent& p_event) {
switch(p_event.key.scancode) {
- case KEY_F1: _editor_select(3); break;
+ case KEY_F1:
+ if (!p_event.key.mod.shift && !p_event.key.mod.command)
+ _editor_select(3);
+ break;
case KEY_F2: _editor_select(0); break;
case KEY_F3: _editor_select(1); break;
case KEY_F4: _editor_select(2); break;
diff --git a/tools/editor/plugins/script_editor_plugin.cpp b/tools/editor/plugins/script_editor_plugin.cpp
index a01565a046..83cf753692 100644
--- a/tools/editor/plugins/script_editor_plugin.cpp
+++ b/tools/editor/plugins/script_editor_plugin.cpp
@@ -394,7 +394,6 @@ ScriptTextEditor::ScriptTextEditor() {
/*** SCRIPT EDITOR ******/
-
String ScriptEditor::_get_debug_tooltip(const String&p_text,Node *_ste) {
ScriptTextEditor *ste=_ste->cast_to<ScriptTextEditor>();
@@ -752,6 +751,13 @@ void ScriptEditor::_menu_option(int p_option) {
debugger->show();
}
} break;
+ case HELP_CONTEXTUAL: {
+ String text = current->get_text_edit()->get_selection_text();
+ if (text == "")
+ text = current->get_text_edit()->get_word_under_cursor();
+ if (text != "")
+ editor->emit_signal("request_help", text);
+ } break;
case WINDOW_CLOSE: {
erase_tab_confirm->set_text("Close Tab?:\n\""+current->get_name()+"\"");
@@ -1051,9 +1057,6 @@ void ScriptEditor::_bind_methods() {
ObjectTypeDB::bind_method("_show_debugger",&ScriptEditor::_show_debugger);
ObjectTypeDB::bind_method("_get_debug_tooltip",&ScriptEditor::_get_debug_tooltip);
-
-
-
}
@@ -1362,6 +1365,12 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
window_menu->get_popup()->add_separator();
window_menu->get_popup()->connect("item_pressed", this,"_menu_option");
+ help_menu = memnew( MenuButton );
+ menu_hb->add_child(help_menu);
+ help_menu->set_text("Help");
+ help_menu->get_popup()->add_item("Contextual", HELP_CONTEXTUAL, KEY_MASK_SHIFT|KEY_F1);
+ help_menu->get_popup()->connect("item_pressed", this,"_menu_option");
+
tab_container->connect("tab_changed", this,"_tab_changed");
find_replace_dialog = memnew(FindReplaceDialog);
@@ -1414,6 +1423,7 @@ ScriptEditor::ScriptEditor(EditorNode *p_editor) {
v_split->add_child(debugger);
debugger->connect("breaked",this,"_breaked");
// debugger_gui->hide();
+
}
diff --git a/tools/editor/plugins/script_editor_plugin.h b/tools/editor/plugins/script_editor_plugin.h
index e0cf3c1a49..97f1702f8f 100644
--- a/tools/editor/plugins/script_editor_plugin.h
+++ b/tools/editor/plugins/script_editor_plugin.h
@@ -133,6 +133,7 @@ class ScriptEditor : public VBoxContainer {
DEBUG_BREAK,
DEBUG_CONTINUE,
DEBUG_SHOW,
+ HELP_CONTEXTUAL,
WINDOW_CLOSE,
WINDOW_MOVE_LEFT,
WINDOW_MOVE_RIGHT,
@@ -145,6 +146,7 @@ class ScriptEditor : public VBoxContainer {
MenuButton *search_menu;
MenuButton *window_menu;
MenuButton *debug_menu;
+ MenuButton *help_menu;
uint64_t idle;
TabContainer *tab_container;
@@ -185,6 +187,7 @@ class ScriptEditor : public VBoxContainer {
void _breaked(bool p_breaked,bool p_can_debug);
void _show_debugger(bool p_show);
void _update_window_menu();
+
static ScriptEditor *script_editor;
protected:
void _notification(int p_what);