mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-17 06:06:00 -06:00
83 lines
1.3 KiB
C++
83 lines
1.3 KiB
C++
#include "LogCtrl.h"
|
|
|
|
LoggerCtrl::LoggerCtrl() : maxlines(1000), ignore(false)
|
|
{
|
|
NoInitFocus();
|
|
NoWantFocus();
|
|
SetReadOnly();
|
|
//Reserve(maxlines*64);
|
|
}
|
|
|
|
void LoggerCtrl::Save()
|
|
{
|
|
FileSel fs;
|
|
fs.Type("Text file", "*.txt");
|
|
if(!fs.ExecuteSaveAs("Save Log to file")) return;
|
|
String fn = fs.Get();
|
|
if(fn.IsEmpty()) return;
|
|
FileOut out(fn);
|
|
Flush();
|
|
DocEdit::Save(out);
|
|
}
|
|
|
|
void LoggerCtrl::Updated()
|
|
{
|
|
int lc = GetLineCount();
|
|
if(lc <= maxlines) { DocEdit::Updated(); return; }
|
|
int lp = DocEdit::GetPos(lc/2);
|
|
Remove(0, lp);
|
|
DocEdit::Updated();
|
|
}
|
|
|
|
void LoggerCtrl::_Put(int w)
|
|
{
|
|
if(ignore) return;
|
|
String d;
|
|
d.Cat(w);
|
|
//String s = EscapeCh((unsigned)w);
|
|
GuiLock _;
|
|
Insert(GetLength(), d);
|
|
SetCursor(GetLength());
|
|
}
|
|
|
|
void LoggerCtrl::_Put(const void *data, dword size)
|
|
{
|
|
if(ignore) return;
|
|
String d;
|
|
d.Cat((const char*)data, size);
|
|
//String s = EscapeCh(d);
|
|
GuiLock _;
|
|
Insert(GetLength(), d);
|
|
SetCursor(GetLength());
|
|
}
|
|
|
|
LogCtrl::LogCtrl() : ps(NULL)
|
|
{
|
|
|
|
}
|
|
|
|
void LogCtrl::Log(bool b)
|
|
{
|
|
if(ps == this) return;
|
|
if(b)
|
|
{
|
|
ps = &VppLog();
|
|
SetVppLog(*this);
|
|
}
|
|
else if(ps)
|
|
{
|
|
SetVppLog(*ps);
|
|
ps = NULL;
|
|
}
|
|
}
|
|
|
|
void LogCtrl::Reset()
|
|
{
|
|
SetVppLog(StdLog());
|
|
ps = NULL;
|
|
}
|
|
|
|
INITBLOCK
|
|
{
|
|
LogLev(LDBG);
|
|
}
|