ultimatepp/uppsrc/ide/Navigator.cpp
cxl 81a749cf59 theide - minor fixes
git-svn-id: svn://ultimatepp.org/upp/trunk@695 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2008-12-06 12:39:47 +00:00

104 lines
2.2 KiB
C++

#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();
}