#include "ide.h" void AssistEditor::SyncNavigator() { if(navigator == NAV_BROWSER) { browser.Load(); SyncCursor(); } navigatorframe.Show(navigator); } void AssistEditor::SyncCursor() { String k = GetKeyDesc(IdeKeys::AK_SEARCHCODE().key[0]) + ") "; browser.search.NullText(String("Find (") + k); browser.clear.Tip(String("Clear (") + k); if(navigator == NAV_BROWSER) { int ii = GetCursorLine(); String coderef; while(ii >= 0 && IsNull(coderef)) coderef = GetAnnotation(ii--); browser.Goto(coderef, theide->editfile); } } void AssistEditor::SelectionChanged() { CodeEditor::SelectionChanged(); SyncCursor(); SyncParamInfo(); } void AssistEditor::BrowserGotoNF() { Value scope = browser.scope.GetKey(); // do not scroll browser.item erratically int scopesc = browser.scope.GetScroll(); String item = browser.item.GetKey(); int itemsc = browser.item.GetScroll(); String cref = browser.GetCodeRef(); if(assist_active && !(theide && theide->SwapSIf(cref))) theide->IdeGotoCodeRef(cref); if(scope == browser.scope.GetKey()) { browser.scope.ScrollTo(scopesc); browser.scope.ScrollIntoCursor(); if(item == browser.item.GetKey()) { browser.item.ScrollTo(itemsc); browser.item.ScrollIntoCursor(); } } } void AssistEditor::BrowserGoto() { BrowserGotoNF(); SetFocus(); } void AssistEditor::GotoBrowserScope() { browser.item.GoBegin(); BrowserGoto(); } void AssistEditor::Navigator(int nav) { navigator = nav; navigatorframe.Show(navigator); if(navigator == NAV_BROWSER) { scope_item.Show(); browser.ClearSearch(); } if(navigator) SetFocus(); SyncNavigator(); SyncCursor(); } void AssistEditor::SerializeNavigator(Stream& s) { int version = 1; s / version; s % navigatorframe; s % navigator; if(version >= 1) s % scope_item; Navigator(navigator); } void Ide::ToggleNavigator(int nav) { editor.Navigator(editor.GetNavigator() == nav ? 0 : nav); } void Ide::SearchCode() { if(editor.navigator != AssistEditor::NAV_BROWSER) editor.Navigator(AssistEditor::NAV_BROWSER); if(editor.browser.IsSearch()) editor.browser.ClearSearch(); else editor.browser.search.SetFocus(); }