Files
TempleOS-Rijn/Demo/Doc/CallBack.CPP
T
2018-09-08 21:46:02 +02:00

79 lines
1.7 KiB
C++

U8 *tSCB(CDoc *,CDocEntry *,CTask *mem_task)
{
//This routine 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!!
SPrint(st,"%d=%T",cdt,cdt);
return st;
}
U8 *CurTimeCB(CDoc *,CDocEntry *,CTask *mem_task)
{
U8 *st=MAlloc(64,mem_task);
CDate cdt=Now;
SPrint(st,"%D %T",cdt,cdt);
return st;
}
U0 DoIt()
{
CDoc *bdoc=DocBorder,
*pdoc=DocPut;
CDocEntry *doc_e;
//We don't want an update between
//creating the CDocEntry and defining the
//callback, so we turn-off preemption.
Bool old_preempt=Preempt(OFF);
DocBottom(bdoc); //Ins at the bottom
DocPrint(bdoc,"$$RED$$$$CM+BY+LX,5,-3$$");
//The $LK,"DocPrint",A="MN: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:
// $LK,"::/Doc/Widget.TXT"$
// $LK,"::/Doc/Dollar.TXT"$
// $LK,"Dollar Flags",A="MN:DOCEf1_TAG"$
// $LK,"ST_DOC_FLAGS",A="FF:::/Adam/Doc/DocInit.CPP,ST_DOC_FLAGS"$
doc_e->tag_cb=&tSCB;
DocPrint(bdoc,"$$FG$$");
//$BK,1$WARNING:$BK,0$ If you use the put_doc you
//run the risk of the user pressing
//<CTRL-T> or using the clipboard, both
//of which will crash. So, you might want
//to use the border_doc.
DocPrint(pdoc,"$$LTRED$$");
doc_e=DocPrint(pdoc,"$$TX+TC,\" \"$$");
doc_e->tag_cb=&CurTimeCB;
DocPrint(pdoc,"$$FG$$");
Preempt(old_preempt);
//Send carriage return, new line, so
//that the timer string is not part
//of the next cmd on the cmd line.
NewLine;
}
U0 UndoIt()
{
//Clear-out entries without a +H hold flag.
DocClear(Fs->border_doc);
}
DoIt;