ultimatepp/uppsrc/ide/Jump.cpp
cxl 3cecd831f1 ide: New 'jump' (ctrl+j) dialog
git-svn-id: svn://ultimatepp.org/upp/trunk@7625 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2014-08-31 14:16:45 +00:00

63 lines
1 KiB
C++

#include "ide.h"
struct JumpDlg : WithJumpLayout<TopWindow>, Navigator {
typedef JumpDlg CLASSNAME;
virtual bool Key(dword key, int count);
virtual int GetCurrentLine();
void Ok();
void Cancel();
JumpDlg();
};
JumpDlg::JumpDlg()
{
CtrlLayout(*this, "Navigator");
ok <<= THISBACK(Ok);
cancel <<= THISBACK(Cancel);
dlgmode = true;
}
bool JumpDlg::Key(dword key, int count)
{
if(key == K_UP || key == K_DOWN) {
if(list.IsCursor())
return list.Key(key, count);
else
list.GoBegin();
}
return TopWindow::Key(key, count);
}
void JumpDlg::Ok()
{
if(navlines.IsCursor()) {
const NavLine& l = navlines.Get(0).To<NavLine>();
theide->GotoPos(GetCppFile(l.file), l.line);
}
Close();
}
void JumpDlg::Cancel()
{
Close();
}
int JumpDlg::GetCurrentLine()
{
return theide->editor.GetCurrentLine();
}
void Ide::GotoGlobal()
{
static JumpDlg dlg;
dlg.theide = this;
if(dlg.IsOpen())
dlg.SetForeground();
else
dlg.Open();
dlg.Search();
}