U8 *tSCB(CDoc *,CDocEntry *,CTask *mem_task)
{//This is called by the window mgr.
//Things would get corrupted
//if the window mgr used it's own
//heap, so we use the owning task's heap.
U8 *st=MAlloc(64,mem_task);
CDate cdt=tS*CDATE_FREQ;
//Doesn't have to be fixed width!!
StrPrint(st,"%d=%T",cdt,cdt);
return st;
}
U8 *CurTimeCB(CDoc *,CDocEntry *,CTask *mem_task)
{
U8 *st=MAlloc(64,mem_task);
CDate cdt=Now;
StrPrint(st,"%D %T",cdt,cdt);
return st;
}
U0 DoIt()
{
CDoc *bdoc=DocBorder,*pdoc=DocPut;
CDocEntry *doc_e;
DocLock(bdoc);
DocBottom(bdoc); //Ins at the bottom
DocPrint(bdoc,"$RED$$CM+BY+LX,5,-3$");
//The DocPrint() routine returns the addr of the last entry.
doc_e=DocPrint(bdoc,"$TX+TC,\" \"$");
//The TC flag is "has tag callback".
//Flags are explained here:
///Doc/DolDocOverview.DD /Doc/Widget.DD
//Dollar Flags ST_DOC_FLAGS
doc_e->tag_cb=&tSCB;
DocPrint(bdoc,"$FG$");
DocUnlock(bdoc);
//WARNING: If you use the put_doc you
//run the risk of the user pressing
//<CTRL-t> or using the clip, both
//of which will crash. So, you might want
//to use the border_doc.
DocLock(pdoc);
DocPrint(pdoc,"$LTRED$");
doc_e=DocPrint(pdoc,"$TX+TC,\" \"$");
doc_e->tag_cb=&CurTimeCB;
DocPrint(pdoc,"$FG$");
DocUnlock(pdoc);
//Send carriage return, new line, so
//that the timer string is not part
//of the next cmd on the cmd line.
'\n';
}
U0 UndoIt()
{//Clear-out entries without a +H hold flag.
DocClear(Fs->border_doc);
}
DoIt;