mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 14:16:09 -06:00
136 lines
3.1 KiB
C++
136 lines
3.1 KiB
C++
#include "ide.h"
|
|
|
|
void AssistEditor::SyncNavigator()
|
|
{
|
|
if(IsNavigator()) {
|
|
browser.Load();
|
|
SyncCursor();
|
|
}
|
|
navigatorframe.Show(navigator);
|
|
}
|
|
|
|
void AssistEditor::SyncCursor()
|
|
{
|
|
String k = "(" + GetKeyDesc(IdeKeys::AK_SEARCHCODE().key[0]) + ") ";
|
|
browser.search.NullText(String("Find ") + k);
|
|
browser.search.Tip(IsNull(browser.search) ? String() : "Clear " + k);
|
|
// browser.clear.Tip(String("Clear (") + k);
|
|
if(IsNavigator()) {
|
|
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()
|
|
{
|
|
if(browser.scope.IsCursor()) {
|
|
Value x = browser.scope.Get(2);
|
|
if(IsNumber(x)) {
|
|
int file = (int)x;
|
|
theide->EditFile(GetCppFile(file));
|
|
return;
|
|
}
|
|
}
|
|
if(browser.item.GetCount()) {
|
|
browser.item.GoBegin();
|
|
BrowserGoto();
|
|
}
|
|
}
|
|
|
|
void AssistEditor::Navigator(bool nav)
|
|
{
|
|
navigator = nav;
|
|
navigatorframe.Show(navigator);
|
|
if(IsNavigator()) {
|
|
scope_item.Show();
|
|
browser.ClearSearch();
|
|
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()
|
|
{
|
|
editor.Navigator(!editor.navigator);
|
|
}
|
|
|
|
void Ide::SearchCode()
|
|
{
|
|
if(!editor.navigator)
|
|
editor.Navigator(true);
|
|
if(editor.browser.search.HasFocus() && editor.browser.IsSearch())
|
|
editor.browser.ClearSearch();
|
|
else {
|
|
String id = editor.GetI().ToString();
|
|
if(!IsNull(id)) {
|
|
editor.browser.search <<= Filter(id, SearchItemFilter);
|
|
editor.browser.search.SetSelection();
|
|
editor.browser.Load();
|
|
editor.browser.scope.GoBegin();
|
|
}
|
|
editor.browser.search.SetFocus();
|
|
}
|
|
}
|
|
|
|
void Ide::SwitchHeader() {
|
|
int c = filelist.GetCursor();
|
|
if(c < 0) return;
|
|
String currfile = filelist[c];
|
|
const char *ext = GetFileExtPos(currfile);
|
|
if(!stricmp(ext, ".h") || !stricmp(ext, ".hpp")
|
|
|| !stricmp(ext, ".lay") || !stricmp(ext, ".iml")) {
|
|
int f = filelist.Find(ForceExt(currfile, ".cpp"));
|
|
if(f < 0) f = filelist.Find(ForceExt(currfile, ".c"));
|
|
if(f < 0) f = filelist.Find(ForceExt(currfile, ".cc"));
|
|
if(f >= 0) filelist.SetCursor(f);
|
|
}
|
|
}
|