TempleOSTS_130707.ISO
This commit is contained in:
1 parent
17b71f1a2d
commit
1343005a29
617 files changed
+14399
-25130
No files matched your search
@@ -2,7 +2,6 @@
|
||||
#help_file "::/TempleOS/Doc/Doc"
|
||||
|
||||
//See $LK-A,"::/TempleOS/Doc/Doc.TXT"$
|
||||
|
||||
extern I64 EdLeftClickLink(CDoc *doc,CDocEntry *doc_e);
|
||||
extern I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e);
|
||||
extern U0 DocPutSPartial(CDoc *doc,U8 *st);
|
||||
@@ -10,10 +9,10 @@ extern U0 DocFormBackward(CDoc *doc,Bool giveup=FALSE);
|
||||
extern U0 EdUndoFilter(CDoc *doc);
|
||||
|
||||
U0 DocInit()
|
||||
{
|
||||
DefineLstLoad("ST_DOC_CMDS","TX\0CR\0SR\0CU\0TB\0CL\0PB\0DA\0PL\0LM\0RM\0HD\0FO\0ID\0"
|
||||
"FG\0BG\0FD\0BD\0F2\0FL\0FM\0FA\0FH\0FE\0FU\0FB\0FY\0FR\0FC\0FQ\0"
|
||||
"WW\0UL\0IV\0BK\0SX\0SY\0CM\0AN\0LK\0BT\0"
|
||||
{ //$LK,"CMD Defines","MN:DOCT_TEXT"$
|
||||
DefineLstLoad("ST_DOC_CMDS",
|
||||
"TX\0CR\0SR\0CU\0TB\0CL\0PB\0DA\0PL\0LM\0RM\0HD\0FO\0ID\0"
|
||||
"FG\0BG\0FD\0BD\0PT\0WW\0UL\0IV\0BK\0SX\0SY\0CM\0AN\0LK\0BT\0"
|
||||
"CB\0MA\0MU\0HX\0HS\0HE\0TR\0SP\0IB\0IT\0IS\0BP\0SO\0HL\0LP\0CC\0HI\0HV\0HC\0ER\0");
|
||||
DefineLstLoad("ST_DOC_FLAGS",
|
||||
//flags1
|
||||
|
||||
+293
-146
@@ -1,26 +1,22 @@
|
||||
#define EF_DONT_RECOMPILE 0
|
||||
#define EF_RECOMPILE 1
|
||||
#define EF_RENUM_ASM 2
|
||||
#define EF_SLIDER_CTRL 3
|
||||
#define EF_CH_SC 4
|
||||
#define C_INDENT_SPACES 2
|
||||
#define ASM_RENUM_SPACING 5
|
||||
|
||||
#define EF_REINDENT 0
|
||||
#define EF_CHK_COMPILE 1
|
||||
#define EF_RENUM_ASM 2
|
||||
#define EF_SLIDER_CTRL 3
|
||||
#define EF_CH_SC 4
|
||||
|
||||
I64 PopUpEdFmt()
|
||||
{
|
||||
I64 i;
|
||||
CDoc *doc=DocNew;
|
||||
DocPutS(doc,"$$FG,PURPLE$$Reformat Function$$FG$$\n"
|
||||
"If you enter $$FG,GREEN$$DONT RECOMPILE$$FG$$ the stored\n"
|
||||
"source line indentation information will\n"
|
||||
"be used. $$BK,1$$Be sure it is up-to-date!$$BK,0$$\n"
|
||||
"For $$FG,GREEN$$#exe$$FG$$ config'ed projects, enter $$FG,GREEN$$DONT RECOMPILE$$FG$$.\n"
|
||||
"$$MU,\"Recompile and autoindent CPP.Z Fun\",EF_RECOMPILE$$\n"
|
||||
"$$MU,\"Don't Recompile but autoindent CPP.Z Fun\",EF_DONT_RECOMPILE$$\n\n"
|
||||
"$$MU,\"Renum Asm Local @@ Labels for Fun\",EF_RENUM_ASM$$\n\n"
|
||||
"$$FG,PURPLE$$Insert Managed Code$$FG$$\n"
|
||||
"$$MU,\"Slider Ctrl\",EF_SLIDER_CTRL$$\n\n"
|
||||
"$$FG,PURPLE$$Misc$$FG$$\n"
|
||||
"$$MU,\"Insert ASCII/Scan Code Hex Codes for key pressed\",EF_CH_SC$$\n\n"
|
||||
"$$MU,\"CANCEL\",DOCM_CANCEL$$\n"
|
||||
DocPutS(doc,"$$FG,LTBLUE$$$$MU,\"Check Compile\",EF_CHK_COMPILE$$\n"
|
||||
"$$MU,\"Reindent CPP.Z Fun\",EF_REINDENT$$\n"
|
||||
"$$MU,\"Renum Asm Local @@ Labels for Fun\",EF_RENUM_ASM$$\n"
|
||||
"$$MU,\"Insert Mgd Code: Slider Ctrl\",EF_SLIDER_CTRL$$\n"
|
||||
"$$MU,\"Insert ASCII/Scan Code Hex Codes for key pressed\",EF_CH_SC$$\n"
|
||||
"$$MU,\"CANCEL\",DOCM_CANCEL$$\n\n"
|
||||
"$$FG,GREEN$$<ALT-BACKSPACE>$$FG$$ to undo if not happy\n"
|
||||
"with the results.\n");
|
||||
i=PopUpMenu(doc);
|
||||
@@ -28,14 +24,185 @@ I64 PopUpEdFmt()
|
||||
return i;
|
||||
}
|
||||
|
||||
class CRILex
|
||||
{
|
||||
CLex *lx1,*lx2;
|
||||
CQueVectU8 *indent;
|
||||
I64 depth,exp_depth;
|
||||
Bool was_new_line,is_not_cont,one_shot;
|
||||
};
|
||||
|
||||
#define C_INDENT_SPACES 2
|
||||
#define ASM_RENUM_SPACING 5
|
||||
I64 EdRILex(CRILex *rx)
|
||||
{
|
||||
Bool is_not_cont=FALSE;
|
||||
I64 i;
|
||||
do {
|
||||
Lex(rx->lx1);
|
||||
Lex(rx->lx2);
|
||||
|
||||
if (rx->lx1->token=='\n') {
|
||||
if (rx->lx2->token==TK_IDENT)
|
||||
i=PrsKeyWord(rx->lx2);
|
||||
else
|
||||
i=-1;
|
||||
if (rx->lx2->token==';' || rx->lx2->token=='{' || rx->lx2->token=='}' ||
|
||||
rx->lx2->token==':' || rx->lx2->token==')' && !rx->exp_depth ||
|
||||
i==KW_ELSE || i==KW_CATCH || i==KW_DO)
|
||||
is_not_cont=TRUE;
|
||||
}
|
||||
|
||||
if (rx->was_new_line && (rx->lx1->token!=':' || rx->lx2->token!=TK_IDENT ||
|
||||
PrsKeyWord(rx->lx2)==KW_DFT)) {
|
||||
if (rx->one_shot) {
|
||||
QueVectU8Put(rx->indent,rx->lx2->lfns[0].cur_entry->y,rx->depth+3);
|
||||
rx->one_shot=FALSE;
|
||||
} else
|
||||
QueVectU8Put(rx->indent,rx->lx2->lfns[0].cur_entry->y,rx->depth);
|
||||
}
|
||||
if (rx->lx2->token=='\n')
|
||||
rx->was_new_line=TRUE;
|
||||
else
|
||||
rx->was_new_line=FALSE;
|
||||
} while (rx->lx1->token=='\n');
|
||||
rx->is_not_cont=is_not_cont;
|
||||
return rx->lx1->token;
|
||||
}
|
||||
|
||||
U0 EdRIExp(CRILex *rx)
|
||||
{
|
||||
if (rx->lx1->token=='(') {
|
||||
if (!rx->exp_depth++)
|
||||
rx->depth+=3;
|
||||
EdRILex(rx);
|
||||
while (rx->lx1->token && rx->lx1->token!=')')
|
||||
EdRIExp(rx);
|
||||
if (!--rx->exp_depth)
|
||||
rx->depth-=3;
|
||||
}
|
||||
EdRILex(rx);
|
||||
}
|
||||
|
||||
U0 EdRIStmt(CRILex *rx,Bool indent)
|
||||
{
|
||||
I64 i;
|
||||
Bool cont;
|
||||
if (rx->lx1->token=='{') {
|
||||
rx->depth++;
|
||||
EdRILex(rx);
|
||||
while (rx->lx1->token && rx->lx1->token!='}')
|
||||
EdRIStmt(rx,FALSE);
|
||||
rx->depth--;
|
||||
EdRILex(rx);
|
||||
} else {
|
||||
if (indent) rx->depth++;
|
||||
do {
|
||||
cont=FALSE;
|
||||
switch (PrsKeyWord(rx->lx1)) {
|
||||
case KW_IF:
|
||||
EdRILex(rx);
|
||||
EdRIExp(rx);
|
||||
EdRIStmt(rx,TRUE);
|
||||
if (PrsKeyWord(rx->lx1)==KW_ELSE) {
|
||||
EdRILex(rx);
|
||||
if (PrsKeyWord(rx->lx1)==KW_IF && rx->lx2->token!='\n')
|
||||
EdRIStmt(rx,FALSE);
|
||||
else
|
||||
EdRIStmt(rx,TRUE);
|
||||
}
|
||||
break;
|
||||
case KW_TRY:
|
||||
EdRILex(rx);
|
||||
EdRIStmt(rx,TRUE);
|
||||
if (PrsKeyWord(rx->lx1)==KW_CATCH) {
|
||||
EdRILex(rx);
|
||||
EdRIStmt(rx,TRUE);
|
||||
}
|
||||
break;
|
||||
case KW_FOR:
|
||||
case KW_WHILE:
|
||||
EdRILex(rx);
|
||||
EdRIExp(rx);
|
||||
EdRIStmt(rx,TRUE);
|
||||
break;
|
||||
case KW_DO:
|
||||
EdRILex(rx);
|
||||
EdRIStmt(rx,TRUE);
|
||||
if (PrsKeyWord(rx->lx1)==KW_WHILE) {
|
||||
EdRILex(rx);
|
||||
EdRIExp(rx);
|
||||
}
|
||||
if (rx->lx1->token==';')
|
||||
EdRILex(rx);
|
||||
break;
|
||||
case KW_SWITCH:
|
||||
case KW_NOBOUND_SWITCH:
|
||||
EdRILex(rx);
|
||||
EdRIExp(rx);
|
||||
if (rx->lx1->token=='{') {
|
||||
rx->depth++;
|
||||
EdRILex(rx);
|
||||
while (rx->lx1->token && rx->lx1->token!='}') {
|
||||
while (TRUE) {
|
||||
i=PrsKeyWord(rx->lx1);
|
||||
if (i==KW_CASE || i==KW_DFT) {
|
||||
EdRILex(rx);
|
||||
while (rx->lx1->token && rx->lx1->token!=':')
|
||||
EdRILex(rx);
|
||||
EdRILex(rx);
|
||||
} else
|
||||
break;
|
||||
}
|
||||
if (rx->lx1->token)
|
||||
EdRIStmt(rx,TRUE);
|
||||
}
|
||||
rx->depth--;
|
||||
EdRILex(rx);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
while (rx->lx1->token && rx->lx1->token!=';' && rx->lx1->token!=':') {
|
||||
if (rx->lx2->token=='\n' && !rx->is_not_cont)
|
||||
rx->one_shot=TRUE;
|
||||
EdRILex(rx);
|
||||
}
|
||||
if (rx->lx1->token==':')
|
||||
cont=TRUE;
|
||||
EdRILex(rx);
|
||||
}
|
||||
} while (cont);
|
||||
if (indent) rx->depth--;
|
||||
}
|
||||
}
|
||||
|
||||
CQueVectU8 *EdRICode(CDoc *doc)
|
||||
{
|
||||
CQueVectU8 *result;
|
||||
CRILex *rx=CAlloc(sizeof(CRILex));
|
||||
|
||||
rx->lx1=LexNew(NULL,LF_KEEP_NEW_LINES|LF_DONT_FREE_BUF,doc->filename.name);
|
||||
Free(rx->lx1->lfns[0].name);
|
||||
LexAttachDoc(rx->lx1,&rx->lx1->lfns[0],doc,,doc->cur_entry,doc->cur_data_col);
|
||||
|
||||
rx->lx2=LexNew(NULL,LF_KEEP_NEW_LINES|LF_DONT_FREE_BUF,doc->filename.name);
|
||||
Free(rx->lx2->lfns[0].name);
|
||||
LexAttachDoc(rx->lx2,&rx->lx2->lfns[0],doc,,doc->cur_entry,doc->cur_data_col);
|
||||
|
||||
rx->indent=QueVectU8New(doc->cur_entry->y);
|
||||
|
||||
Lex(rx->lx1);
|
||||
EdRIStmt(rx,FALSE);
|
||||
|
||||
LexDel(rx->lx1);
|
||||
LexDel(rx->lx2);
|
||||
result=rx->indent;
|
||||
Free(rx);
|
||||
return result;
|
||||
}
|
||||
|
||||
U0 EdRemFunLeadingSpace(CDoc *doc)
|
||||
{
|
||||
Bool unlock=DocLock(doc),
|
||||
start_of_line=TRUE;
|
||||
start_of_line=TRUE;
|
||||
U8 ch,*ptr;
|
||||
I64 levels=1;
|
||||
CDocEntry *doc_e,*doc_e2;
|
||||
@@ -45,8 +212,8 @@ U0 EdRemFunLeadingSpace(CDoc *doc)
|
||||
do {
|
||||
doc_e2=doc_e->next;
|
||||
if (doc_e!=doc && doc_e!=doc->cur_entry &&
|
||||
!(doc_e->flags1&(DOCEG1_DONT_EDIT-DOCEF1_SCROLLING_X)) &&
|
||||
!(doc_e->flags2&DOCEG2_DONT_EDIT))
|
||||
!(doc_e->flags1&(DOCEG1_DONT_EDIT-DOCEF1_SCROLLING_X)) &&
|
||||
!(doc_e->flags2&DOCEG2_DONT_EDIT))
|
||||
switch (doc_e->type_u8) {
|
||||
case DOCT_TEXT:
|
||||
ptr=doc_e->tag;
|
||||
@@ -155,7 +322,7 @@ U0 EdRenumAsm(CDoc *doc)
|
||||
I64 num=0;
|
||||
CRenum root,*tempr,*tempr1;
|
||||
U8 buf[sizeof(CEdFindText.find_text)],
|
||||
buf2[sizeof(CEdFindText.find_text)];
|
||||
buf2[sizeof(CEdFindText.find_text)];
|
||||
|
||||
QueInit(&root);
|
||||
EdSelectFun(doc,TRUE);
|
||||
@@ -184,146 +351,105 @@ U0 EdRenumAsm(CDoc *doc)
|
||||
DocUnlock(doc);
|
||||
}
|
||||
|
||||
#define AC_ABORT -1
|
||||
#define AC_REINDENT 0
|
||||
#define AC_RENUM_ASM 1
|
||||
|
||||
U0 EdRefmtFun(CDoc *doc,I64 fmt_type)
|
||||
U0 EdCodeTools2(CDoc *doc,I64 tool_action)
|
||||
{
|
||||
Bool unlock=DocLock(doc),start_of_line=TRUE;
|
||||
Bool okay,unlock=DocLock(doc),start_of_line=TRUE;
|
||||
CDocEntry *doc_e,*doc_ne;
|
||||
I64 i,x,r,action=AC_ABORT,old_line_num;
|
||||
I64 i,start_y,end_y,x,r,goto_line_num;
|
||||
U8 *b,*st,*st2,*prj_file;
|
||||
CHashSrcSym *temph;
|
||||
CIndentInfo *indent;
|
||||
CTask *task=NULL;
|
||||
CTaskCmd *tempc;
|
||||
CSrvCmd *tempc;
|
||||
CQueVectU8 *indent;
|
||||
|
||||
DocRecalc(doc);
|
||||
old_line_num=doc->cur_entry->y+1;
|
||||
goto_line_num=doc->cur_entry->y+1;
|
||||
|
||||
DocCaptureUndo(doc,TRUE);
|
||||
switch (fmt_type) {
|
||||
case EF_RECOMPILE:
|
||||
if (EdGoToFun(doc,FALSE,FALSE)) {
|
||||
if (doc->flags&DOCF_PLAIN_TEXT)
|
||||
DocFlagsToggle(doc,DOCF_PLAIN_TEXT);
|
||||
DocWrite(doc);
|
||||
task=Spawn(&ServantUserCmdLine,NULL,"Servant",Fs);
|
||||
st2=CurDir;
|
||||
st=MSPrintF("Cd(\"%s\");",st2);
|
||||
tempc=TaskRqstQue(task,Fs,st,1<<TASKCf_WAKE_MASTER|1<<TASKCf_FOCUS_MASTER);
|
||||
Free(st2);
|
||||
switch (tool_action) {
|
||||
case EF_CHK_COMPILE:
|
||||
okay=FALSE;
|
||||
if (doc->flags&DOCF_PLAIN_TEXT)
|
||||
DocFlagsToggle(doc,DOCF_PLAIN_TEXT);
|
||||
DocWrite(doc);
|
||||
task=Spawn(&SrvUserCmdLine,NULL,"Srv",,Fs);
|
||||
st2=CurDir;
|
||||
st=MSPrintF("Cd(\"%s\");",st2);
|
||||
tempc=TaskExeStrQue(task,Fs,st,1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER);
|
||||
Free(st2);
|
||||
Free(st);
|
||||
SetWinHorz(Fs->win_left,Fs->win_right, task);
|
||||
SetWinVert(Fs->win_top, Fs->win_bottom,task);
|
||||
if (ScanResult(tempc,&r)) {
|
||||
st=DirFile(doc->filename.name,,"PRJ.Z"),
|
||||
prj_file=FileNameAbs(st,FUF_Z_OR_NOT_Z);
|
||||
Free(st);
|
||||
SetWinHorz(Fs->win_left,Fs->win_right, task);
|
||||
SetWinVert(Fs->win_top, Fs->win_bottom,task);
|
||||
if (GetRqstResult(tempc,&r)) {
|
||||
st=DirFile(doc->filename.name,,"PRJ.Z"),
|
||||
if (FileFind(prj_file)) {
|
||||
st2=DirFile(prj_file),
|
||||
st=MSPrintF("Cd(\"%s\");",st2);
|
||||
Free(st2);
|
||||
tempc=TaskExeStrQue(task,Fs,st,1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER|1<<SVCf_FREE_ON_COMPLETE);
|
||||
Free(st);
|
||||
st=MSPrintF("\"$$WW,1$$\";Cmp(\"%s\",\"SysTemp\",\"SysTemp\");",prj_file);
|
||||
tempc=TaskExeStrQue(task,Fs,st,1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER);
|
||||
Free(st);
|
||||
if (ScanResult(tempc,&r))
|
||||
if (!r) {
|
||||
tempc=TaskExeStrQue(task,Fs,
|
||||
"Load(\"SysTemp\",LDF_JUST_LOAD);",1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER);
|
||||
if (ScanResult(tempc,&r))
|
||||
okay=TRUE;
|
||||
}
|
||||
tempc=TaskExeStrQue(task,Fs,"Del(\"SysTemp.*\");",1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER);
|
||||
ScanResult(tempc,&r);
|
||||
} else {
|
||||
Free(prj_file);
|
||||
st=DirFile(doc->filename.name,"Load","CPP.Z");
|
||||
prj_file=FileNameAbs(st,FUF_Z_OR_NOT_Z);
|
||||
Free(st);
|
||||
if (FileFind(prj_file)) {
|
||||
st2=DirFile(prj_file),
|
||||
st=MSPrintF("Cd(\"%s\");",st2);
|
||||
Free(st2);
|
||||
tempc=TaskRqstQue(task,Fs,st,1<<TASKCf_WAKE_MASTER|1<<TASKCf_FOCUS_MASTER);
|
||||
Free(st);
|
||||
st=MSPrintF("\"$$WW,1$$\";Cmp(\"%s\",\"SysTemp\",\"SysTemp\");",prj_file);
|
||||
tempc=TaskRqstQue(task,Fs,st,1<<TASKCf_WAKE_MASTER|1<<TASKCf_FOCUS_MASTER);
|
||||
Free(st);
|
||||
if (GetRqstResult(tempc,&r))
|
||||
if (!r) {
|
||||
tempc=TaskRqstQue(task,Fs,
|
||||
"Load(\"SysTemp\",LDF_JUST_LOAD);"
|
||||
"MapFileLoad(\"SysTemp\");",1<<TASKCf_WAKE_MASTER|1<<TASKCf_FOCUS_MASTER);
|
||||
if (GetRqstResult(tempc,&r))
|
||||
action=AC_REINDENT;
|
||||
}
|
||||
tempc=TaskRqstQue(task,Fs,"Del(\"SysTemp.*\");",1<<TASKCf_WAKE_MASTER|1<<TASKCf_FOCUS_MASTER);
|
||||
GetRqstResult(tempc,&r);
|
||||
} else {
|
||||
Free(prj_file);
|
||||
st=DirFile(doc->filename.name,"Load","CPP.Z");
|
||||
prj_file=FileNameAbs(st,FUF_Z_OR_NOT_Z);
|
||||
Free(st);
|
||||
if (FileFind(prj_file))
|
||||
st=MSPrintF("\"$$WW,1$$\";ExeFile(\"%s\",TRUE);",prj_file);
|
||||
else
|
||||
st=MSPrintF("\"$$WW,1$$\";ExeFile(\"%s\",TRUE);",doc->filename.name);
|
||||
tempc=TaskRqstQue(task,Fs,st,1<<TASKCf_WAKE_MASTER|1<<TASKCf_FOCUS_MASTER);
|
||||
Free(st);
|
||||
if (GetRqstResult(tempc,&r) && r)
|
||||
action=AC_REINDENT;
|
||||
}
|
||||
Free(prj_file);
|
||||
}
|
||||
if (action==AC_REINDENT) {
|
||||
DocUnlock(doc);
|
||||
st=MSPrintF("DbgFunFind(0x%X,0);",doc);
|
||||
tempc=TaskRqstQue(task,Fs,st,1<<TASKCf_WAKE_MASTER|1<<TASKCf_FOCUS_MASTER);
|
||||
Free(st);
|
||||
if (GetRqstResult(tempc,&r))
|
||||
temph=r;
|
||||
if (FileFind(prj_file))
|
||||
st=MSPrintF("\"$$WW,1$$\";ExeFile(\"%s\",TRUE);",prj_file);
|
||||
else
|
||||
action=AC_ABORT;
|
||||
DocLock(doc);
|
||||
} else
|
||||
PopUpOk("Has Errors");
|
||||
}
|
||||
break;
|
||||
case EF_DONT_RECOMPILE:
|
||||
if (EdGoToFun(doc,FALSE,FALSE)) {
|
||||
if (temph=DbgFunFind(doc,0))
|
||||
action=AC_REINDENT;
|
||||
}
|
||||
break;
|
||||
case EF_RENUM_ASM:
|
||||
if (EdGoToFun(doc,FALSE,TRUE)) {
|
||||
if (EdCurU8(doc)=='{') {
|
||||
EdCursorRight(doc);
|
||||
DocRecalc(doc);
|
||||
} else if (EdCurU8(doc)==':') {
|
||||
EdCursorRight(doc);
|
||||
if (EdCurU8(doc)==':')
|
||||
EdCursorRight(doc);
|
||||
DocRecalc(doc);
|
||||
st=MSPrintF("\"$$WW,1$$\";ExeFile(\"%s\",TRUE);",doc->filename.name);
|
||||
tempc=TaskExeStrQue(task,Fs,st,1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER);
|
||||
Free(st);
|
||||
if (ScanResult(tempc,&r) && r)
|
||||
okay=TRUE;
|
||||
}
|
||||
action=AC_RENUM_ASM;
|
||||
Free(prj_file);
|
||||
}
|
||||
if (!okay) {
|
||||
PopUpOk("Has Errors");
|
||||
while (LBts(&sys_semas[SYS_SEMA_FIX],0))
|
||||
Yield;
|
||||
ToFileLine(sys_fix_file_line,&st,&i);
|
||||
LBtr(&sys_semas[SYS_SEMA_FIX],0);
|
||||
if (!StrCmp(st,doc->filename.name))
|
||||
goto_line_num=i;
|
||||
Free(st);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
switch (action) {
|
||||
case AC_RENUM_ASM:
|
||||
DocUnlock(doc);
|
||||
Snd(2000); Sleep(150); Snd(0);
|
||||
Sleep(100);
|
||||
Snd(2000); Sleep(150); Snd(0);
|
||||
DocLock(doc);
|
||||
EdRenumAsm(doc);
|
||||
break;
|
||||
case AC_REINDENT:
|
||||
if (temph->type&(HTT_FUN|HTT_EXPORT_SYS_SYM))
|
||||
indent=temph->indent;
|
||||
else
|
||||
indent=NULL;
|
||||
if (indent && indent->min_line<=indent->max_line) {
|
||||
case EF_REINDENT:
|
||||
if (EdGoToFun(doc,FALSE,FALSE)) {
|
||||
start_y=doc->cur_entry->y;
|
||||
indent=EdRICode(doc);
|
||||
DocUnlock(doc);
|
||||
Snd(2000); Sleep(150); Snd(0);
|
||||
Sleep(100);
|
||||
Snd(2000); Sleep(150); Snd(0);
|
||||
DocLock(doc);
|
||||
EdRemFunLeadingSpace(doc);
|
||||
DocLineNumGoTo(doc,indent->min_line);
|
||||
DocLineNumGoTo(doc,start_y+1);
|
||||
doc_e=doc->cur_entry;
|
||||
while (indent->min_line<=doc_e->y+1<=indent->max_line) {
|
||||
end_y=start_y+indent->total_cnt;
|
||||
while (start_y<=doc_e->y<end_y) {
|
||||
if (doc_e!=doc && doc_e!=doc->cur_entry &&
|
||||
!(doc_e->flags1&(DOCEG1_DONT_EDIT-DOCEF1_SCROLLING_X)) &&
|
||||
!(doc_e->flags2&DOCEG2_DONT_EDIT)) {
|
||||
!(doc_e->flags1&(DOCEG1_DONT_EDIT-DOCEF1_SCROLLING_X)) &&
|
||||
!(doc_e->flags2&DOCEG2_DONT_EDIT)) {
|
||||
if (doc_e->type_u8==DOCT_NEW_LINE||doc_e->type_u8==DOCT_SOFT_NEW_LINE)
|
||||
start_of_line=TRUE;
|
||||
else {
|
||||
if (start_of_line) {
|
||||
i=indent->body[doc_e->y+1-indent->min_line]*C_INDENT_SPACES;
|
||||
i=QueVectU8Get(indent,doc_e->y)*C_INDENT_SPACES;
|
||||
x=doc_e->x+1;
|
||||
while (i>8) {
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
@@ -339,7 +465,7 @@ U0 EdRefmtFun(CDoc *doc,I64 fmt_type)
|
||||
b=MAlloc(i+1,doc->mem_task);
|
||||
MemSet(b,CH_SPACE,i);
|
||||
b[i]=0;
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=DOCT_TEXT | doc->settings_root.dft_text_attr << 8;
|
||||
doc_ne->tag=b;
|
||||
doc_ne->max_col=1;
|
||||
@@ -354,11 +480,32 @@ U0 EdRefmtFun(CDoc *doc,I64 fmt_type)
|
||||
}
|
||||
doc_e=doc_e->next;
|
||||
}
|
||||
break;
|
||||
QueVectU8Del(indent);
|
||||
}
|
||||
break;
|
||||
case EF_RENUM_ASM:
|
||||
if (EdGoToFun(doc,FALSE,TRUE)) {
|
||||
if (EdCurU8(doc)=='{') {
|
||||
EdCursorRight(doc);
|
||||
DocRecalc(doc);
|
||||
} else if (EdCurU8(doc)==':') {
|
||||
EdCursorRight(doc);
|
||||
if (EdCurU8(doc)==':')
|
||||
EdCursorRight(doc);
|
||||
DocRecalc(doc);
|
||||
}
|
||||
DocUnlock(doc);
|
||||
Snd(2000); Sleep(150); Snd(0);
|
||||
Sleep(100);
|
||||
Snd(2000); Sleep(150); Snd(0);
|
||||
DocLock(doc);
|
||||
EdRenumAsm(doc);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
DocRecalc(doc);
|
||||
DocLineNumGoTo(doc,old_line_num);
|
||||
DocLineNumGoTo(doc,goto_line_num);
|
||||
|
||||
DocUnlock(doc);
|
||||
if (!unlock)
|
||||
@@ -371,7 +518,7 @@ U0 EdPopUpChSC(I64 *_ch,I64 *_sc)
|
||||
{
|
||||
I64 sc;
|
||||
"Press A Key\n";
|
||||
DocCur->flags|=DOCF_MIN_SIZE;
|
||||
DocPut->flags|=DOCF_MIN_SIZE;
|
||||
do GetMsg(_ch,&sc,1<<MSG_KEY_DOWN);
|
||||
while (sc.u8[0]==SC_SHIFT || sc.u8[0]==SC_CTRL || sc.u8[0]==SC_ALT);
|
||||
*_sc=sc;
|
||||
@@ -411,12 +558,12 @@ U0 EdChSC(CDoc *doc)
|
||||
|
||||
U0 EdCodeTools(CDoc *doc)
|
||||
{
|
||||
I64 fmt_type=PopUpEdFmt;
|
||||
switch (fmt_type) {
|
||||
case EF_DONT_RECOMPILE:
|
||||
case EF_RECOMPILE:
|
||||
I64 tool_action=PopUpEdFmt;
|
||||
switch (tool_action) {
|
||||
case EF_CHK_COMPILE:
|
||||
case EF_REINDENT:
|
||||
case EF_RENUM_ASM:
|
||||
EdRefmtFun(doc,fmt_type);
|
||||
EdCodeTools2(doc,tool_action);
|
||||
break;
|
||||
case EF_SLIDER_CTRL:
|
||||
MgdSliderCtrl(doc);
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
U8 *ctrl_L_footer=
|
||||
"\n$$MU,\"Abort\",DOCM_CANCEL$$\n"
|
||||
"\n\n$$LK+PU,\"Click for Help\",\"FI:::/TempleOS/Doc/Widget.TXT\"$$\n";
|
||||
|
||||
#define DFT_ADDR_LINK_BIN_SIZE 64
|
||||
|
||||
I64 PopUpLinkType(Bool include_anchor)
|
||||
{
|
||||
I64 i;
|
||||
CDoc *doc=DocNew;
|
||||
DocPutS(doc,"$$MU,\"To file\",LK_FILE$$\n"
|
||||
DocPutS(doc,"$$FG,PURPLE$$$$TX+CX,\"Link Type Menu\"$$\n"
|
||||
"\n$$FG,LTBLUE$$$$MU,\"To file\",LK_FILE$$\n"
|
||||
"$$MU,\"To anchor in file\",LK_FILE_ANCHOR$$\n"
|
||||
"$$MU,\"To str in file\",LK_FILE_FIND$$\n"
|
||||
"$$MU,\"To line in file\",LK_FILE_LINE$$\n"
|
||||
@@ -18,7 +23,7 @@ I64 PopUpLinkType(Bool include_anchor)
|
||||
"$$MU,\"To Addr\",LK_ADDR$$\n");
|
||||
if (include_anchor)
|
||||
DocPutS(doc,"$$MU,\"Place Anchor\",LK_PLACE_ANCHOR$$\n");
|
||||
DocPutS(doc,"\n$$MU,\"CANCEL\",DOCM_CANCEL$$");
|
||||
DocPrintF(doc,"%s",ctrl_L_footer);
|
||||
i=PopUpMenu(doc);
|
||||
DocDel(doc);
|
||||
return i;
|
||||
@@ -31,7 +36,8 @@ class CEdFileLink
|
||||
U8 aux[136];
|
||||
I64 num;
|
||||
U8 html_link[136] fmtstr "$$DA-P,135,\"Html Link :%s\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool hide;
|
||||
};
|
||||
|
||||
@@ -42,7 +48,8 @@ class CEdFileAnchorLink
|
||||
U8 aux[136] fmtstr "$$DA-P,135,\"Anchor Label :%s\"$$\n";
|
||||
I64 num;
|
||||
U8 html_link[136] fmtstr "$$DA-P,135,\"Html Link :%s\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool hide;
|
||||
};
|
||||
|
||||
@@ -53,7 +60,8 @@ class CEdFileFindLink
|
||||
U8 aux[136] fmtstr "$$DA-P,135,\"Str :%s\"$$\n";
|
||||
I64 num fmtstr "$$DA-T,135,\"Occurrence Num:%04d\"$$\n";
|
||||
U8 html_link[136] fmtstr "$$DA-P,135,\"Html Link :%s\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool hide;
|
||||
};
|
||||
|
||||
@@ -64,7 +72,8 @@ class CEdFileLineLink
|
||||
U8 aux[136];
|
||||
I64 num fmtstr "$$DA-T,135,\"Line Num :%04d\"$$\n";
|
||||
U8 html_link[136] fmtstr "$$DA-P,135,\"Html Link :%s\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool hide;
|
||||
};
|
||||
|
||||
@@ -75,7 +84,8 @@ class CEdManPageLink
|
||||
U8 aux[136] fmtstr "$$DA-P,135,\"Label :%s\"$$\n";
|
||||
I64 num;
|
||||
U8 html_link[136] fmtstr "$$DA-P,135,\"Html Link :%s\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool hide;
|
||||
};
|
||||
|
||||
@@ -86,7 +96,8 @@ class CEdAddrLink
|
||||
U8 aux[136] fmtstr "$$DA-P,135,\"Addr Exp :%s\"$$\n";
|
||||
I64 num fmtstr "$$DA-T,135,\"Bin Size :%04d\"$$\n";
|
||||
U8 html_link[136] fmtstr "$$DA-P,135,\"Html Link :%s\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool hide;
|
||||
};
|
||||
|
||||
@@ -97,8 +108,9 @@ class CEdPlaceAnchor
|
||||
U8 aux[136] fmtstr "$$DA-P,135,\"Anchor Label :%s\"$$\n";
|
||||
I64 num;
|
||||
U8 html_link[136] fmtstr "$$DA-P,135,\"Html Link :%s\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool hide fmtstr "$$CB,\"Hide\"$$\n";
|
||||
Bool pop_up;
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool hide fmtstr "$$CB,\"Hide\"$$\n";
|
||||
};
|
||||
|
||||
class CEdBibleLink
|
||||
@@ -108,7 +120,8 @@ class CEdBibleLink
|
||||
U8 aux[136] fmtstr "$$DA-P,135,\"Chapter Verse :%s\"$$\n";
|
||||
I64 num;
|
||||
U8 html_link[136] fmtstr "$$DA-P,135,\"Html Link :%s\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool hide;
|
||||
};
|
||||
|
||||
@@ -119,7 +132,8 @@ class CEdDefLink
|
||||
U8 aux[136] fmtstr "$$DA-P,135,\"Word :%s\"$$\n";
|
||||
I64 num fmtstr "$$DA-T,135,\"Def Num :%4d\"$$\n";
|
||||
U8 html_link[136] fmtstr "$$DA-P,135,\"Html Link :%s\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool hide;
|
||||
};
|
||||
|
||||
@@ -130,13 +144,12 @@ class CEdProject
|
||||
U8 aux[136];
|
||||
I64 num;
|
||||
U8 html_link[136] fmtstr "$$DA-P,135,\"Html Link :%s\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool pop_up fmtstr "$$CB,\"PopUp\"$$\n";
|
||||
Bool quote fmtstr "$$CB,\"Quote\"$$\n";
|
||||
Bool hide;
|
||||
};
|
||||
|
||||
U8 *ctrl_L_footer="\n\n$$LK,\"Click for Help\",\"FI:::/TempleOS/Doc/CtrlL.TXT\"$$\n";
|
||||
|
||||
Bool PmtLink(I64 type,U8 **_tag,U8 **_link,Bool *_quote,U8 **_html_link)
|
||||
Bool PmtLink(I64 type,U8 **_tag,U8 **_link,Bool *_pop_up,Bool *_quote,U8 **_html_link)
|
||||
{
|
||||
I64 i;
|
||||
CEdFileLink *el=CAlloc(sizeof(CEdFileLink));
|
||||
@@ -316,6 +329,10 @@ Bool PmtLink(I64 type,U8 **_tag,U8 **_link,Bool *_quote,U8 **_html_link)
|
||||
*_html_link=StrNew(el->html_link);
|
||||
else
|
||||
*_html_link=NULL;
|
||||
if (el->pop_up)
|
||||
*_pop_up=TRUE;
|
||||
else
|
||||
*_pop_up=FALSE;
|
||||
if (el->quote)
|
||||
*_quote=TRUE;
|
||||
else
|
||||
@@ -326,11 +343,15 @@ Bool PmtLink(I64 type,U8 **_tag,U8 **_link,Bool *_quote,U8 **_html_link)
|
||||
|
||||
U0 EdInsLink()
|
||||
{
|
||||
U8 *tag=NULL,*link=NULL,*st=NULL,*html_link=NULL;
|
||||
Bool quote=FALSE;
|
||||
U8 *tag=NULL,*link=NULL,*st=NULL,*html_link=NULL,*pop_up_st;
|
||||
Bool pop_up=FALSE,quote=FALSE;
|
||||
I64 type=PopUpLinkType(TRUE);
|
||||
if (type>=0) {
|
||||
if (PmtLink(type,&tag,&link,"e,&html_link)) {
|
||||
if (PmtLink(type,&tag,&link,&pop_up,"e,&html_link)) {
|
||||
if (pop_up)
|
||||
pop_up_st="+PU";
|
||||
else
|
||||
pop_up_st="";
|
||||
switch (type) {
|
||||
case LK_PLACE_ANCHOR:
|
||||
if (html_link)
|
||||
@@ -340,9 +361,9 @@ U0 EdInsLink()
|
||||
break;
|
||||
default:
|
||||
if (html_link)
|
||||
st=MSPrintF("$$LK+HTML,\"%Q\",\"%Q\",\"%Q\"$$",tag,link,html_link);
|
||||
st=MSPrintF("$$LK%s+HTML,\"%Q\",\"%Q\",\"%Q\"$$",pop_up_st,tag,link,html_link);
|
||||
else
|
||||
st=MSPrintF("$$LK,\"%Q\",\"%Q\"$$",tag,link);
|
||||
st=MSPrintF("$$LK%s,\"%Q\",\"%Q\"$$",pop_up_st,tag,link);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -362,23 +383,12 @@ I64 PopUpColorType()
|
||||
{
|
||||
I64 i;
|
||||
CDoc *doc=DocNew;
|
||||
DocPutS(doc,"$$MU,\"Foreground\",DOCT_FOREGROUND$$\n"
|
||||
DocPrintF(doc,"$$FG,PURPLE$$$$TX+CX,\"Color Type Menu\"$$\n"
|
||||
"\n$$FG,LTBLUE$$$$MU,\"Foreground\",DOCT_FOREGROUND$$\n"
|
||||
"$$MU,\"Background\",DOCT_BACKGROUND$$\n"
|
||||
"$$MU,\"Default Foreground\",DOCT_DFT_FOREGROUND$$\n"
|
||||
"$$MU,\"Default Background\",DOCT_DFT_BACKGROUND$$\n"
|
||||
"$$MU,\"Alt Foreground\",DOCT_ALT_FOREGROUND$$\n"
|
||||
"$$MU,\"Link Foreground\",DOCT_LINK_FOREGROUND$$\n"
|
||||
"$$MU,\"Macro Foreground\",DOCT_MACRO_FOREGROUND$$\n"
|
||||
"$$MU,\"Anchor Foreground\",DOCT_ANCHOR_FOREGROUND$$\n"
|
||||
"$$MU,\"Hidden Foreground\",DOCT_HIDDEN_FOREGROUND$$\n"
|
||||
"$$MU,\"Tree Foreground\",DOCT_TREE_FOREGROUND$$\n"
|
||||
"$$MU,\"User Foreground\",DOCT_USER_FOREGROUND$$\n"
|
||||
"$$MU,\"Binary Foreground\",DOCT_BINARY_FOREGROUND$$\n"
|
||||
"$$MU,\"Keyword Foreground\",DOCT_KEYWORD_FOREGROUND$$\n"
|
||||
"$$MU,\"Keyword2 Foreground\",DOCT_KEYWORD2_FOREGROUND$$\n"
|
||||
"$$MU,\"Comment Foreground\",DOCT_COMMENT_FOREGROUND$$\n"
|
||||
"$$MU,\"Quote Foreground\",DOCT_QUOTE_FOREGROUND$$\n"
|
||||
"\n$$MU,\"CANCEL\",DOCM_CANCEL$$");
|
||||
"%s",ctrl_L_footer);
|
||||
i=PopUpMenu(doc);
|
||||
DocDel(doc);
|
||||
return i;
|
||||
@@ -388,13 +398,15 @@ I64 PopUpPageSettingType()
|
||||
{
|
||||
I64 i;
|
||||
CDoc *doc=DocNew;
|
||||
DocPutS(doc,"$$MU,\"Page Length\",DOCT_PAGE_LEN$$\n"
|
||||
DocPrintF(doc,"$$FG,PURPLE$$$$TX+CX,\"Page Setting Menu\"$$\n"
|
||||
"\n$$FG,LTBLUE$$$$MU,\"Page Length\",DOCT_PAGE_LEN$$\n"
|
||||
"$$MU,\"Page Header\",DOCT_HEADER$$\n"
|
||||
"$$MU,\"Page Footer\",DOCT_FOOTER$$\n"
|
||||
"$$MU,\"Left Margin\",DOCT_LEFT_MARGIN$$\n"
|
||||
"$$MU,\"Right Margin\",DOCT_RIGHT_MARGIN$$\n"
|
||||
"$$MU,\"Lock To Page\",DOCT_LOCK_TO_PAGE$$\n"
|
||||
"$$MU,\"Lock To Center\",DOCT_LOCK_TO_CENTER$$\n");
|
||||
"$$MU,\"Lock To Center\",DOCT_LOCK_TO_CENTER$$\n"
|
||||
"%s",ctrl_L_footer);
|
||||
i=PopUpMenu(doc);
|
||||
DocDel(doc);
|
||||
return i;
|
||||
@@ -491,7 +503,8 @@ I64 PopUpDollarType()
|
||||
{
|
||||
I64 i;
|
||||
CDoc *doc=DocNew;
|
||||
DocPutS(doc,"$$MU,\"Link\",DOCT_LINK$$\n"
|
||||
DocPrintF(doc,"$$FG,PURPLE$$$$TX+CX,\"Text Widget Menu\"$$\n"
|
||||
"\n$$FG,LTBLUE$$$$MU,\"Link\",DOCT_LINK$$\n"
|
||||
"$$MU,\"Text\",DOCT_TEXT$$\n"
|
||||
"$$MU,\"Tree Branch\",DOCT_TREE$$\n"
|
||||
"$$MU,\"Color\",DOCT_FOREGROUND$$\n"
|
||||
@@ -507,7 +520,7 @@ I64 PopUpDollarType()
|
||||
"$$MU,\"Syntax Highlighting\",DOCT_HIGHLIGHT$$\n"
|
||||
"$$MU,\"HTML\",DOCT_HTML_CODE$$\n"
|
||||
"$$MU,\"Song\",DOCT_SONG$$\n"
|
||||
"\n$$MU,\"CANCEL\",DOCM_CANCEL$$");
|
||||
"%s",ctrl_L_footer);
|
||||
i=PopUpMenu(doc);
|
||||
DocDel(doc);
|
||||
return i;
|
||||
@@ -613,10 +626,10 @@ I64 PopUpHtmlType()
|
||||
{
|
||||
I64 i;
|
||||
CDoc *doc=DocNew;
|
||||
DocPutS(doc,"$$MU,\"Html Code\",HT_CODE$$\n"
|
||||
DocPutS(doc,"$$FG,LTBLUE$$$$MU,\"Html Code\",HT_CODE$$\n"
|
||||
"$$MU,\"Html Image\",HT_IMAGE$$\n"
|
||||
"$$MU,\"Html Video\",HT_VIDEO$$\n"
|
||||
"\n$$MU,\"CANCEL\",DOCM_CANCEL$$");
|
||||
"\n$$MU,\"Abort\",DOCM_CANCEL$$");
|
||||
i=PopUpMenu(doc);
|
||||
DocDel(doc);
|
||||
return i;
|
||||
@@ -953,7 +966,7 @@ U0 EdInsBinary(I64 bin_num,I64 type)
|
||||
"$$%Z+BP,\"%Q\",%d,\"%s,%d\"$$",type,"ST_DOC_CMDS",dt->tag,dt->bin_num,
|
||||
dt->bin_ptr_link_file,dt->bin_ptr_link_bin_num;
|
||||
} else {
|
||||
if (DocBinFindNum(DocCur,dt->bin_num))
|
||||
if (DocBinFindNum(DocPut,dt->bin_num))
|
||||
"$$%Z,\"%Q\",%d$$",type,"ST_DOC_CMDS",dt->tag,dt->bin_num;
|
||||
else
|
||||
PopUpOk("Invalid Binary Num");
|
||||
@@ -981,7 +994,7 @@ U0 EdInsTree()
|
||||
st=MSPrintF("%q",dt->label);
|
||||
st2=MSPrintF("$$TR%s,\"%Q\"$$\n$$ID,%d$$*\n$$ID,%d$$",
|
||||
buf,st,dt->indent,-dt->indent);
|
||||
DocInsSafe(DocCur,st2);
|
||||
DocInsSafe(DocPut,st2);
|
||||
Free(st);
|
||||
Free(st2);
|
||||
}
|
||||
@@ -990,7 +1003,7 @@ U0 EdInsTree()
|
||||
|
||||
U0 EdInsHidden()
|
||||
{
|
||||
DocInsSafe(DocCur,"$$HS$$*$$HE$$");
|
||||
DocInsSafe(DocPut,"$$HS$$*$$HE$$");
|
||||
}
|
||||
|
||||
U0 EdInsDollarCmd()
|
||||
@@ -1048,39 +1061,29 @@ U0 EdInsDollarCmd()
|
||||
}
|
||||
|
||||
#define PT_SPRITE 0
|
||||
#define PT_SPRITE_MACRO 1
|
||||
#define PT_SPRITE_MENU 2
|
||||
#define PT_SPRITE_LINK 3
|
||||
#define PT_SPRITE_PTR 4
|
||||
#define PT_SPRITE_SIZE 5
|
||||
#define PT_DUP_SPRITE 6
|
||||
#define PT_SPRITE_PTR 1
|
||||
#define PT_DUP_SPRITE 2
|
||||
#define PT_SPRITE_SIZE 3
|
||||
#define PT_SPRITE_MACRO 4
|
||||
#define PT_SPRITE_MENU 5
|
||||
#define PT_SPRITE_LINK 6
|
||||
#define PT_SPRITE_TYPE 7
|
||||
|
||||
I64 PopUpSpriteType()
|
||||
{
|
||||
I64 i;
|
||||
CDoc *doc=DocNew;
|
||||
DocPutS(doc,"A sprite is composed of an ordered lst of elements\n"
|
||||
"such as lines and color changes. You can create an icon\n"
|
||||
"by placing a sprite with a payload of C+ code to execute.\n"
|
||||
"This is a called a \"sprite macro\". Check \"Pop-Up\" for\n"
|
||||
"icons and \"Esc\" for shelling-to-the-cmd-line macros.\n\n"
|
||||
"In a program, you first make a sprite. Then, you insert\n"
|
||||
"a pointer to it.\n\n"
|
||||
"$$MU,\"Insert just Sprite\",PT_SPRITE$$\n"
|
||||
DocPutS(doc,"$$FG,PURPLE$$$$TX+CX,\"Graphic Resource Menu\"$$\n"
|
||||
"$$LK+PU+CX,\"Click for Help\",\"FI:::/TempleOS/Doc/Resource.TXT.Z\"$$\n"
|
||||
"\n$$FG,LTBLUE$$$$MU,\"Make Sprite\",PT_SPRITE$$\n"
|
||||
"$$MU,\"Pointer to Sprite\",PT_SPRITE_PTR$$\n"
|
||||
"$$MU,\"Duplicate Sprite\",PT_DUP_SPRITE$$\n"
|
||||
"$$MU,\"Sprite Size (not really needed)\",PT_SPRITE_SIZE$$\n"
|
||||
"$$MU,\"Sprite Macro (Icon)\",PT_SPRITE_MACRO$$\n"
|
||||
"$$MU,\"Sprite Menu Item\",PT_SPRITE_MENU$$\n"
|
||||
"$$MU,\"Sprite Link\",PT_SPRITE_LINK$$\n"
|
||||
"$$MU,\"Pointer to Sprite\",PT_SPRITE_PTR$$\n"
|
||||
"$$MU,\"Sprite Size (not really needed)\",PT_SPRITE_SIZE$$\n"
|
||||
"$$MU,\"Duplicate Sprite\",PT_DUP_SPRITE$$\n"
|
||||
"\n$$MU,\"CANCEL\",DOCM_CANCEL$$\n\n"
|
||||
"The potential exists for binary data besides $$FG,GREEN$$sprites$$FG$$.\n"
|
||||
"This is why the pointer to a sprite is known as\n"
|
||||
"\"Insert Binary\". There is one more option called\n"
|
||||
"\"Insert Binary Type\". The only other binary data type is\n"
|
||||
"source line info in map files.\n\n"
|
||||
"$$MU,\"Insert Binary Data Type\",PT_SPRITE_TYPE$$\n");
|
||||
"$$MU,\"Binary Data Type (not needed)\",PT_SPRITE_TYPE$$\n"
|
||||
"\n$$MU,\"Abort\",DOCM_CANCEL$$\n\n");
|
||||
i=PopUpMenu(doc);
|
||||
DocDel(doc);
|
||||
return i;
|
||||
@@ -1107,16 +1110,14 @@ class CEdMenuSprite
|
||||
Bool escape fmtstr "$$CB,\"Escape\"$$\n";
|
||||
};
|
||||
|
||||
U8 *EdSpriteLink(U8 **_html_link)
|
||||
U8 *EdSpriteLink(Bool *_pop_up,U8 **_html_link)
|
||||
{
|
||||
U8 *result=NULL,*tag=NULL,*link=NULL;
|
||||
Bool quote=FALSE;
|
||||
I64 type=PopUpLinkType(FALSE);
|
||||
*_html_link=NULL;
|
||||
if (type>=0) {
|
||||
if (PmtLink(type,&tag,&link,"e,_html_link))
|
||||
result=MSPrintF("\"%Q\",\"%Q\"",tag,link);
|
||||
}
|
||||
if (type>=0 && PmtLink(type,&tag,&link,_pop_up,"e,_html_link))
|
||||
result=MSPrintF("\"%Q\",\"%Q\"",tag,link);
|
||||
Free(tag);
|
||||
Free(link);
|
||||
return result;
|
||||
@@ -1125,6 +1126,7 @@ U8 *EdSpriteLink(U8 **_html_link)
|
||||
U8 *EdSprite(I64 bin_num)
|
||||
{
|
||||
I64 type=PopUpSpriteType;
|
||||
Bool pop_up;
|
||||
U8 *st,*st1=NULL,*st2=NULL,buf[1024],*html_link=NULL;
|
||||
CEdMacroSprite *dt=CAlloc(sizeof(CEdMacroSprite));
|
||||
*buf=0;
|
||||
@@ -1156,7 +1158,9 @@ U8 *EdSprite(I64 bin_num)
|
||||
break;
|
||||
case PT_SPRITE_LINK:
|
||||
StrCat(buf,"+L+A");
|
||||
st1=EdSpriteLink(&html_link);
|
||||
st1=EdSpriteLink(&pop_up,&html_link);
|
||||
if (pop_up)
|
||||
StrCat(buf,"+PU");
|
||||
break;
|
||||
case PT_SPRITE_PTR:
|
||||
EdInsBinary(--bin_num,DOCT_INS_BINARY);
|
||||
|
||||
+44
-37
@@ -8,6 +8,8 @@ public Bool DocLineNumGoTo(CDoc *doc,I64 line_num) //one based
|
||||
doc->y=line_num-1;
|
||||
DocRecalc(doc,FALSE,DOC_RECALC_FIND_CURSOR);
|
||||
DocCenter(doc);
|
||||
if (doc->cur_entry->y==line_num-1)
|
||||
result=TRUE;
|
||||
if (unlock)
|
||||
DocUnlock(doc);
|
||||
}
|
||||
@@ -124,7 +126,7 @@ public U0 EdCursorLeft(CDoc *doc,I64 sc=MIN_I64)
|
||||
!(doc_ce->flags1&DOCEG1_DONT_EDIT) &&
|
||||
!(doc_ce->flags2&DOCEG2_DONT_EDIT) &&
|
||||
cc<doc_ce->max_col) {
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=doc_ce->type;
|
||||
doc_ne->flags1=doc_ce->flags1;
|
||||
doc_ne->flags2=doc_ce->flags2;
|
||||
@@ -143,7 +145,7 @@ public U0 EdCursorLeft(CDoc *doc,I64 sc=MIN_I64)
|
||||
!(doc_ce->flags1&DOCEG1_DONT_EDIT) &&
|
||||
!(doc_ce->flags2&DOCEG2_DONT_EDIT) &&
|
||||
cc>doc_ce->min_col) {
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=doc_ce->type;
|
||||
doc_ne->flags1=doc_ce->flags1;
|
||||
doc_ne->flags2=doc_ce->flags2;
|
||||
@@ -186,7 +188,7 @@ public U0 EdCursorLeft(CDoc *doc,I64 sc=MIN_I64)
|
||||
!(doc_ce->flags1&DOCEG1_DONT_EDIT) &&
|
||||
!(doc_ce->flags2&DOCEG2_DONT_EDIT) &&
|
||||
cc>doc_ce->min_col) {
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=doc_ce->type;
|
||||
doc_ne->flags1=doc_ce->flags1;
|
||||
doc_ne->flags2=doc_ce->flags2;
|
||||
@@ -246,7 +248,7 @@ public U0 EdCursorRight(CDoc *doc,I64 sc=MIN_I64)
|
||||
!(doc_ce->flags1&DOCEG1_DONT_EDIT) &&
|
||||
!(doc_ce->flags2&DOCEG2_DONT_EDIT) &&
|
||||
cc>doc_ce->min_col) {
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=doc_ce->type;
|
||||
doc_ne->flags1=doc_ce->flags1;
|
||||
doc_ne->flags2=doc_ce->flags2;
|
||||
@@ -276,7 +278,7 @@ public U0 EdCursorRight(CDoc *doc,I64 sc=MIN_I64)
|
||||
!(doc_ce->flags1&DOCEG1_DONT_EDIT) &&
|
||||
!(doc_ce->flags2&DOCEG2_DONT_EDIT) &&
|
||||
cc<doc_ce->max_col) {
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=DOCT_TEXT | old_color & -0x100;
|
||||
doc_ne->flags1=old_flags1;
|
||||
doc_ne->flags2=old_flags2;
|
||||
@@ -358,7 +360,7 @@ public U0 EdLineUp(CDoc *doc,I64 sc=MIN_I64)
|
||||
!(doc_ce->flags1&DOCEG1_DONT_EDIT) &&
|
||||
!(doc_ce->flags2&DOCEG2_DONT_EDIT)) {
|
||||
if (doc_ce->min_col<doc->cur_data_col<doc_ce->max_col-1) {
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=doc_ce->type;
|
||||
doc_ne->flags1=doc_ce->flags1;
|
||||
doc_ne->flags2=doc_ce->flags2;
|
||||
@@ -456,7 +458,7 @@ public U0 EdLineUp(CDoc *doc,I64 sc=MIN_I64)
|
||||
!(doc_ce->flags1&DOCEG1_DONT_EDIT) &&
|
||||
!(doc_ce->flags2&DOCEG2_DONT_EDIT) && doc_ce->x<x) {
|
||||
if (doc->cur_data_col<doc_ce->max_col-1) {
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=doc_ce->type;
|
||||
doc_ne->flags1=doc_ce->flags1;
|
||||
doc_ne->flags2=doc_ce->flags2;
|
||||
@@ -513,7 +515,7 @@ public U0 EdLineDown(CDoc *doc,I64 sc=MIN_I64)
|
||||
!(doc_ce->flags1&DOCEG1_DONT_EDIT)&&
|
||||
!(doc_ce->flags2&DOCEG2_DONT_EDIT)) {
|
||||
if (doc->cur_data_col>doc_ce->min_col && doc->cur_data_col<doc_ce->max_col-1) {
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=doc_ce->type;
|
||||
doc_ne->flags1=doc_ce->flags1;
|
||||
doc_ne->flags2=doc_ce->flags2;
|
||||
@@ -590,7 +592,7 @@ public U0 EdLineDown(CDoc *doc,I64 sc=MIN_I64)
|
||||
!(doc_ce->flags1&DOCEG1_DONT_EDIT) &&
|
||||
!(doc_ce->flags2&DOCEG2_DONT_EDIT)) {
|
||||
if (doc_ce->min_col<doc->cur_data_col<doc_ce->max_col-1) {
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=DOCT_TEXT | old_color & -0x100;
|
||||
doc_ne->flags1=old_flags1;
|
||||
doc_ne->flags2=old_flags2;
|
||||
@@ -717,7 +719,7 @@ U0 EdInsChar(I64 ch,I64 sc,CDoc *doc)
|
||||
goto ic_done;
|
||||
}
|
||||
}
|
||||
if (ch==CH_CARRIAGE_RETURN) goto ic_done;
|
||||
if (ch=='\r') goto ic_done;
|
||||
|
||||
ic_cont:
|
||||
if ((ch==CH_SPACE || ch=='\n') &&
|
||||
@@ -792,7 +794,7 @@ ic_overstrike_char:
|
||||
b=MAlloc(2,doc->mem_task);
|
||||
*b=ch;
|
||||
b[1]=0;
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=DOCT_TEXT | doc->settings_root.dft_text_attr << 8;
|
||||
doc_ne->tag=b;
|
||||
doc_ne->max_col=1;
|
||||
@@ -862,7 +864,7 @@ ic_form_tab:
|
||||
b=MAlloc(2,doc->mem_task);
|
||||
*b=ch;
|
||||
b[1]=0;
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=DOCT_TEXT | doc->settings_root.dft_text_attr << 8;
|
||||
doc_ne->tag=b;
|
||||
doc_ne->max_col=1;
|
||||
@@ -973,7 +975,10 @@ public U0 EdFindNext(CDoc *doc)
|
||||
}
|
||||
}
|
||||
fn_skip:
|
||||
doc_e= doc->find_replace->scan_fwd ? doc_e->next:doc_e->last;
|
||||
if (doc->find_replace->scan_fwd)
|
||||
doc_e=doc_e->next;
|
||||
else
|
||||
doc_e=doc_e->last;
|
||||
} while (doc_e!=doc_ce);
|
||||
if (unlock)
|
||||
DocUnlock(doc);
|
||||
@@ -1475,8 +1480,7 @@ U0 DocEntryToggle(CDoc *doc)
|
||||
U0 DocFlagsToggle(CDoc *doc,I64 tog_flags)
|
||||
{
|
||||
Bool unlock=DocLock(doc);
|
||||
I64 size,start_text_attr=doc->start_text_attr,
|
||||
flags=doc->flags^tog_flags;
|
||||
I64 size,flags=doc->flags^tog_flags;
|
||||
U8 *st=DocSave(doc,&size);
|
||||
CDocUndo *u_next,*u_last;
|
||||
|
||||
@@ -1485,7 +1489,6 @@ U0 DocFlagsToggle(CDoc *doc,I64 tog_flags)
|
||||
doc->undo_root.next=doc->undo_root.last=&doc->undo_root;
|
||||
|
||||
DocRst(doc,TRUE);
|
||||
doc->start_text_attr=start_text_attr;
|
||||
doc->undo_root.next=u_next;
|
||||
doc->undo_root.last=u_last;
|
||||
DocUndoCntSet(doc);
|
||||
@@ -1506,7 +1509,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch,I64 sc)
|
||||
U8 *st,*st2;
|
||||
Bool unlock;
|
||||
|
||||
if (!doc || doc->doc_signature!=DOC_SIGNATURE_VAL)
|
||||
if (!doc && !(doc=DocPut) || doc->doc_signature!=DOC_SIGNATURE_VAL)
|
||||
return;
|
||||
if (doc->user_put_key)
|
||||
if ((*doc->user_put_key)(doc,doc->user_put_data,ch,sc))
|
||||
@@ -1590,7 +1593,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch,I64 sc)
|
||||
doc_ce=doc->cur_entry=doc_ce->last;
|
||||
if (doc_ce!=doc && doc_ce->type_u8==DOCT_SOFT_NEW_LINE)
|
||||
doc_ce=doc->cur_entry=doc_ce->last;
|
||||
if (doc_ce==doc || doc_ce->type_u8==DOCT_USER_FOREGROUND) {
|
||||
if (doc_ce==doc || doc_ce->type_u8==DOCT_PMT) {
|
||||
doc_ce=doc->cur_entry=doc_ce->next;
|
||||
doc->cur_data_col=doc_ce->min_col;
|
||||
} else {
|
||||
@@ -1803,7 +1806,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch,I64 sc)
|
||||
else
|
||||
SetKeyDesc("Edit/Autocomplete Word");
|
||||
} else {
|
||||
if (WordStat) {
|
||||
if (WordStat(ON)) {
|
||||
DocUnlock(doc);
|
||||
if (sc&SCF_SHIFT)
|
||||
WSDDef(ch-'0',Fs);
|
||||
@@ -1869,7 +1872,7 @@ public U0 DocPutKey(CDoc *doc,I64 ch,I64 sc)
|
||||
else
|
||||
SetKeyDesc("Edit/Autocomplete Sym");
|
||||
} else {
|
||||
if (WordStat) {
|
||||
if (WordStat(ON)) {
|
||||
DocUnlock(doc);
|
||||
if (sc&SCF_SHIFT)
|
||||
WSMan(sc2-SC_F1+1,Fs);
|
||||
@@ -1961,6 +1964,13 @@ public U0 DocPutKey(CDoc *doc,I64 ch,I64 sc)
|
||||
DocWrite(doc);
|
||||
st=StrNew(doc->filename.name);
|
||||
}
|
||||
if (st2=DirFile(st,"Run","CPP.Z")) {
|
||||
if (FileFind(st2)) {
|
||||
Free(st);
|
||||
st=st2;
|
||||
} else
|
||||
Free(st2);
|
||||
}
|
||||
if (st) {
|
||||
if (sc&SCF_SHIFT)
|
||||
AdamFile(st);
|
||||
@@ -2195,19 +2205,16 @@ public U0 DocPutKey(CDoc *doc,I64 ch,I64 sc)
|
||||
Yield;
|
||||
}
|
||||
|
||||
U0 DocNewLine(CDoc *doc=NULL,I64 cnt=1)
|
||||
{
|
||||
while (cnt-->0)
|
||||
DocPutKey(doc,'\n',0);
|
||||
}
|
||||
|
||||
Bool AKDDocPutKey(I64 ch,I64 scancode)
|
||||
{
|
||||
CDoc *doc;
|
||||
doc=Fs->next_doc;
|
||||
while (doc!=(&Fs->next_doc)(U8 *)-offset(CDoc.next_doc) &&
|
||||
doc->doc_in_que_signature==DOC_IN_QUE_SIGNATURE_VAL) {
|
||||
if (!(doc->flags&DOCF_DONT_SHOW) && doc->flags&DOCF_AUX_DOC && !doc->best_d) {
|
||||
DocPutKey(doc,ch,scancode);
|
||||
return FALSE;
|
||||
}
|
||||
doc=doc->next_doc;
|
||||
}
|
||||
if (doc=DocCur)
|
||||
if (doc=DocPut)
|
||||
DocPutKey(doc,ch,scancode);
|
||||
return FALSE;
|
||||
}
|
||||
@@ -2261,7 +2268,7 @@ public U0 DocPutSPartial(CDoc *doc,U8 *st)
|
||||
Free(doc_ce->tag);
|
||||
doc_ce->tag=b;
|
||||
} else {
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=DOCT_TEXT | doc->settings_root.dft_text_attr << 8;
|
||||
doc_ne->tag=MAlloc(j+1,doc->mem_task);
|
||||
MemCpy(doc_ne->tag,ptr2,j+1);
|
||||
@@ -2287,12 +2294,11 @@ public U0 DocPutSPartial(CDoc *doc,U8 *st)
|
||||
Bool DocFileEd(I64 type,U8 *filename,
|
||||
U8 *pattern,I64 *_num,I64 ed_flags)
|
||||
{
|
||||
I64 flags=0,i;
|
||||
I64 flags=0,i,old_border_src=Fs->border_src;
|
||||
CDocEntry *doc_e;
|
||||
CDoc *doc;
|
||||
Bool old_silent=Bt(&Fs->display_flags,DISPLAYf_SILENT),
|
||||
result=FALSE;
|
||||
|
||||
result=FALSE;
|
||||
try {
|
||||
switch (type) {
|
||||
case LK_PLAIN:
|
||||
@@ -2315,7 +2321,7 @@ Bool DocFileEd(I64 type,U8 *filename,
|
||||
flags|=DOCF_ALLOW_UNDO;
|
||||
|
||||
if (!*filename)
|
||||
doc=DocCur;
|
||||
doc=DocPut;
|
||||
else {
|
||||
Silent(ON);
|
||||
if (Bt(&ed_flags,EDf_BAIL)) //if bail, scan parents
|
||||
@@ -2326,7 +2332,7 @@ Bool DocFileEd(I64 type,U8 *filename,
|
||||
doc=DocRead(filename,flags);
|
||||
StrCpy(doc->desc,"Edit");
|
||||
Silent(old_silent);
|
||||
doc->flags|=DOCF_ATTR_BY_FILENAME;
|
||||
Fs->border_src=BDS_ED_FILENAME_PRT;
|
||||
}
|
||||
|
||||
if (Bt(&ed_flags,EDf_COLLAPSE))
|
||||
@@ -2360,7 +2366,7 @@ Bool DocFileEd(I64 type,U8 *filename,
|
||||
DocUnlock(doc);
|
||||
DocWrite(doc);
|
||||
}
|
||||
if (Fs->last_doc!=doc)
|
||||
if (DocPut!=doc)
|
||||
DocDel(doc);
|
||||
else
|
||||
result=FALSE;
|
||||
@@ -2368,6 +2374,7 @@ Bool DocFileEd(I64 type,U8 *filename,
|
||||
Silent(old_silent);
|
||||
result=FALSE;
|
||||
}
|
||||
Fs->border_src=old_border_src;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -138,7 +138,7 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
|
||||
break;
|
||||
case DOCT_NEW_LINE:
|
||||
if (doc->flags&DOCF_CARRIAGE_RETURN)
|
||||
*dst++=CH_CARRIAGE_RETURN;
|
||||
*dst++='\r';
|
||||
*dst++='\n';
|
||||
break;
|
||||
default:
|
||||
@@ -152,7 +152,6 @@ public U8 *DocSave(CDoc *doc,I64 *_size=NULL)
|
||||
*dst++='$$';
|
||||
Free(st);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -200,7 +199,7 @@ public U0 DocInsDoc(CDoc *doc,CDoc *doc2)
|
||||
if (doc->cur_entry->type_u8==DOCT_TEXT &&
|
||||
doc->cur_data_col>doc->cur_entry->min_col) {
|
||||
if (doc->cur_data_col<doc->cur_entry->max_col) {
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=DOCT_TEXT | doc->cur_entry->type & 0xFFFFFF00;
|
||||
doc_ne->flags1=doc->cur_entry->flags1;
|
||||
doc_ne->flags2=doc->cur_entry->flags2;
|
||||
@@ -424,32 +423,43 @@ U0 DocUndoRestore(CDoc *doc)
|
||||
DocUnlock(doc);
|
||||
}
|
||||
|
||||
#help_index "Graphics/Windows BMP Files;Doc/Output"
|
||||
|
||||
#help_index "File/Cmd Line (Typically);Doc/Cmd Line (Typically);Cmd Line (Typically)"
|
||||
|
||||
public Bool Type(U8 *fname)
|
||||
//Output a file to the cmd line.
|
||||
//Even graphics and macros will be sent.
|
||||
{
|
||||
CDoc *doc,*doc2;
|
||||
if (doc=DocCur) {
|
||||
if (FilesFindMatch(FILENAME_MASK_TXT,fname)) {
|
||||
doc2=DocRead(fname);
|
||||
DocInsDoc(doc,doc2);
|
||||
DocDel(doc2);
|
||||
return TRUE;
|
||||
} else if (FilesFindMatch("*.BMP.Z",fname)) {
|
||||
DocPutBMPFile(doc,fname,FALSE);
|
||||
return TRUE;
|
||||
} else if (FilesFindMatch("*.BMP;*.bmp",fname)) {
|
||||
DocPutBMPFile(doc,fname,TRUE);
|
||||
return TRUE;
|
||||
} else if (FilesFindMatch("*.GRA*",fname)) {
|
||||
DocPutGRAFile(doc,fname);
|
||||
return TRUE;
|
||||
}
|
||||
public Bool DocType(CDoc *doc=NULL,U8 *filename,I64 trailing_new_lines=1)
|
||||
{//This is like DOS "type" or Unix "cat".
|
||||
//Output a file to a document.
|
||||
//Even graphics can be sent.
|
||||
Bool result=FALSE;
|
||||
CDoc *doc2;
|
||||
if (!doc && !(doc=DocPut) || doc->doc_signature!=DOC_SIGNATURE_VAL)
|
||||
return FALSE;
|
||||
if (FilesFindMatch(FILENAME_MASK_TXT,filename)) {
|
||||
doc2=DocRead(filename);
|
||||
DocInsDoc(doc,doc2);
|
||||
DocDel(doc2);
|
||||
result=TRUE;
|
||||
} else if (FilesFindMatch("*.BMP.Z",filename)) {
|
||||
DocPutBMPFile(doc,filename,FALSE);
|
||||
result=TRUE;
|
||||
} else if (FilesFindMatch("*.BMP;*.bmp",filename)) {
|
||||
DocPutBMPFile(doc,filename,TRUE);
|
||||
result=TRUE;
|
||||
} else if (FilesFindMatch("*.GRA*",filename)) {
|
||||
DocPutGRAFile(doc,filename);
|
||||
result=TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
if (result)
|
||||
DocNewLine(doc,trailing_new_lines);
|
||||
return result;
|
||||
}
|
||||
|
||||
#help_index "Graphics/Windows BMP Files;File/Cmd Line (Typically);Doc/Cmd Line (Typically);Cmd Line (Typically)"
|
||||
|
||||
public Bool Type(U8 *filename,I64 trailing_new_lines=1)
|
||||
{//This is like DOS "type" or Unix "cat".
|
||||
//Output a file to the cmd line.
|
||||
//Even graphics can be sent.
|
||||
return DocType(,filename,trailing_new_lines);
|
||||
}
|
||||
|
||||
#help_index "Doc"
|
||||
@@ -10,7 +10,7 @@ DocHighlightInit;
|
||||
|
||||
U32 *DocHighlight(CDoc *doc,Bool full_refresh,CDocEntry *doc_e,CDocSettings **_s,
|
||||
U8 *src,I64 len,I64 _temp_u32_attr)
|
||||
{ //Be aware of $LK-A,"::/TempleOS/Adam/ToHtml.CPP"$.
|
||||
{ //Be aware of $LK-A,"::/TempleOS/Adam/Utils/ToHtml.CPP"$.
|
||||
U32 *result=MAlloc((len+1)*sizeof(U32)),*dst=result;
|
||||
U8 *ptr,ch,ch1,last_ch;
|
||||
CDocSettings *s=*_s;
|
||||
@@ -28,13 +28,13 @@ hl_normal:
|
||||
case '/':
|
||||
if (len>=2) {
|
||||
if (*src=='/') {
|
||||
temp_u32_attr=(s->comment_attr&15)<<8|mask_temp_u32_attr;
|
||||
temp_u32_attr=DOC_COLOR_COMMENT<<8|mask_temp_u32_attr;
|
||||
*dst++=ch1+temp_u32_attr;
|
||||
*dst++=*src++ +temp_u32_attr;
|
||||
len-=2;
|
||||
goto hl_cpp_comment;
|
||||
} else if (*src=='*') {
|
||||
temp_u32_attr=(s->comment_attr&15)<<8|mask_temp_u32_attr;
|
||||
temp_u32_attr=DOC_COLOR_COMMENT<<8|mask_temp_u32_attr;
|
||||
*dst++=ch1+temp_u32_attr;
|
||||
*dst++=*src++ +temp_u32_attr;
|
||||
len-=2;
|
||||
@@ -44,30 +44,30 @@ hl_normal:
|
||||
}
|
||||
break;
|
||||
case '\'':
|
||||
temp_u32_attr=(s->quote_attr&15)<<8|mask_temp_u32_attr;
|
||||
temp_u32_attr=DOC_COLOR_QUOTE<<8|mask_temp_u32_attr;
|
||||
*dst++=ch1+temp_u32_attr;
|
||||
len--;
|
||||
goto hl_single_quote;
|
||||
case '\"':
|
||||
temp_u32_attr=(s->quote_attr&15)<<8|mask_temp_u32_attr;
|
||||
temp_u32_attr=DOC_COLOR_QUOTE<<8|mask_temp_u32_attr;
|
||||
*dst++=ch1+temp_u32_attr;
|
||||
len--;
|
||||
goto hl_dbl_quote;
|
||||
case '(':
|
||||
if (paren_depth++&1)
|
||||
temp_u32_attr=(s->alt_text_attr&15)<<8|mask_temp_u32_attr;
|
||||
temp_u32_attr=DOC_COLOR_ALT_TEXT<<8|mask_temp_u32_attr;
|
||||
break;
|
||||
case ')':
|
||||
if (--paren_depth&1)
|
||||
temp_u32_attr=(s->alt_text_attr&15)<<8|mask_temp_u32_attr;
|
||||
temp_u32_attr=DOC_COLOR_ALT_TEXT<<8|mask_temp_u32_attr;
|
||||
break;
|
||||
case '{':
|
||||
if (brace_depth++&1)
|
||||
temp_u32_attr=(s->alt_text_attr&15)<<8|mask_temp_u32_attr;
|
||||
temp_u32_attr=DOC_COLOR_ALT_TEXT<<8|mask_temp_u32_attr;
|
||||
break;
|
||||
case '}':
|
||||
if (--brace_depth&1)
|
||||
temp_u32_attr=(s->alt_text_attr&15)<<8|mask_temp_u32_attr;
|
||||
temp_u32_attr=DOC_COLOR_ALT_TEXT<<8|mask_temp_u32_attr;
|
||||
break;
|
||||
}
|
||||
*dst++=ch1+temp_u32_attr;
|
||||
@@ -82,9 +82,9 @@ hl_normal:
|
||||
*src=0;
|
||||
if (temph=HashFind(ptr,doc_hash,HTT_KEYWORD|HTT_ASM_KEYWORD|HTT_OPCODE|HTT_REG)) {
|
||||
if (temph->type&(HTT_KEYWORD|HTT_ASM_KEYWORD|HTT_OPCODE))
|
||||
temp_u32_attr=(s->keyword_attr&15) <<8|mask_temp_u32_attr;
|
||||
temp_u32_attr=DOC_COLOR_KEYWORD<<8|mask_temp_u32_attr;
|
||||
else
|
||||
temp_u32_attr=(s->keyword2_attr&15)<<8|mask_temp_u32_attr;
|
||||
temp_u32_attr=DOC_COLOR_KEYWORD2<<8|mask_temp_u32_attr;
|
||||
} else
|
||||
temp_u32_attr=_temp_u32_attr;
|
||||
while (ch1=*ptr++)
|
||||
@@ -106,7 +106,7 @@ hl_normal_done:
|
||||
}
|
||||
break;
|
||||
case DOCSS_SINGLE_QUOTE:
|
||||
temp_u32_attr=(s->quote_attr&15)<<8|mask_temp_u32_attr;
|
||||
temp_u32_attr=DOC_COLOR_QUOTE<<8|mask_temp_u32_attr;
|
||||
hl_single_quote:
|
||||
last_ch=0;
|
||||
while (len--) {
|
||||
@@ -133,7 +133,7 @@ hl_single_quote:
|
||||
}
|
||||
break;
|
||||
case DOCSS_DBL_QUOTE:
|
||||
temp_u32_attr=(s->quote_attr&15)<<8|mask_temp_u32_attr;
|
||||
temp_u32_attr=DOC_COLOR_QUOTE<<8|mask_temp_u32_attr;
|
||||
hl_dbl_quote:
|
||||
last_ch=0;
|
||||
while (len--) {
|
||||
@@ -160,7 +160,7 @@ hl_dbl_quote:
|
||||
}
|
||||
break;
|
||||
case DOCSS_COMMENT:
|
||||
temp_u32_attr=(s->comment_attr&15)<<8|mask_temp_u32_attr;
|
||||
temp_u32_attr=DOC_COLOR_COMMENT<<8|mask_temp_u32_attr;
|
||||
comment_depth=s->comment_depth;
|
||||
hl_comment:
|
||||
last_ch=0;
|
||||
@@ -188,7 +188,7 @@ hl_comment:
|
||||
}
|
||||
break;
|
||||
case DOCSS_CPP_Z_COMMENT:
|
||||
temp_u32_attr=(s->comment_attr&15)<<8|mask_temp_u32_attr;
|
||||
temp_u32_attr=DOC_COLOR_COMMENT<<8|mask_temp_u32_attr;
|
||||
hl_cpp_comment:
|
||||
while (len--)
|
||||
*dst++=*src++ +temp_u32_attr;
|
||||
|
||||
@@ -78,7 +78,7 @@ U0 WatchLocals()
|
||||
if (!TaskValidate(dbg_task=task->dbg_task))
|
||||
Exit;
|
||||
DocDblBufStart;
|
||||
if (doc=DocCur(dbg_task)) {
|
||||
if (doc=DocPut(dbg_task)) {
|
||||
if (tempf=DbgFunFind(doc,0)) {
|
||||
"$$WW,1$$";
|
||||
rbp=task->rbp;
|
||||
@@ -145,7 +145,7 @@ public U0 IDE(U8 *filename)
|
||||
SetWinVert(2,TEXT_ROWS-2);
|
||||
LBts(&Fs->display_flags,DISPLAYf_CHILDREN_NOT_ON_TOP);
|
||||
|
||||
task=Spawn(&UserCmdLine,NULL,"Debug",Fs);
|
||||
task=Spawn(&UserCmdLine,NULL,"Debug",,Fs);
|
||||
TaskWait(task);
|
||||
SetWinHorz(TEXT_COLS>>1+1,TEXT_COLS-2,task);
|
||||
SetWinVert(12,TEXT_ROWS-2,task);
|
||||
@@ -153,7 +153,7 @@ public U0 IDE(U8 *filename)
|
||||
|
||||
Fs->dbg_task=task;
|
||||
|
||||
task=Spawn(&UserCmdLine,NULL,"Watch",Fs);
|
||||
task=Spawn(&UserCmdLine,NULL,"Watch",,Fs);
|
||||
TaskWait(task);
|
||||
SetWinHorz(TEXT_COLS>>1+1,TEXT_COLS-2,task);
|
||||
SetWinVert(2,10,task);
|
||||
@@ -405,12 +405,12 @@ U0 IDEEdTask(I64)
|
||||
CDoc *doc;
|
||||
CBpt *tempb;
|
||||
if (rip_filename=SrcFileName(rip)) {
|
||||
ed_task=Spawn(&UserCmdLine,NULL,"Debug",task);
|
||||
ed_task=Spawn(&UserCmdLine,NULL,"Debug",,task);
|
||||
TaskWait(ed_task);
|
||||
st=MSPrintF("Preempt(OFF);Ed(\"%s\");\n",rip_filename);
|
||||
XTalkWait(ed_task,st);
|
||||
Free(st);
|
||||
doc=DocCur(ed_task);
|
||||
doc=DocPut(ed_task);
|
||||
if (TaskValidate(dbg_task=task->dbg_task)) {
|
||||
SetWinHorz(dbg_task->win_left,dbg_task->win_right, ed_task);
|
||||
SetWinVert(dbg_task->win_top, dbg_task->win_bottom,ed_task);
|
||||
@@ -444,7 +444,7 @@ U0 IDEResumeDbg()
|
||||
CIDE *tempi=NamedFramePtr("IDEFrame",dbg_task);
|
||||
U8 *opcode;
|
||||
if (!tempi) {
|
||||
Spawn(&IDEEdTask,NULL,"Resume Dbg",Fs);
|
||||
Spawn(&IDEEdTask,NULL,"Resume Dbg",,Fs);
|
||||
Suspend(Fs);
|
||||
} else
|
||||
switch (tempi->type) {
|
||||
@@ -454,19 +454,19 @@ U0 IDEResumeDbg()
|
||||
LBtr(&Fs->rflags,RFLAGf_TRAP);
|
||||
if (Fs->rip==tempi->cur_line) {//Jmp to self
|
||||
tempi->cur_line=NULL;
|
||||
Spawn(&IDEEdTask,NULL,"Resume Dbg",Fs);
|
||||
Spawn(&IDEEdTask,NULL,"Resume Dbg",,Fs);
|
||||
Suspend(Fs);
|
||||
} else
|
||||
tempi->cur_line=NULL;
|
||||
} else {
|
||||
Spawn(&IDEEdTask,NULL,"Resume Dbg",Fs);
|
||||
Spawn(&IDEEdTask,NULL,"Resume Dbg",,Fs);
|
||||
Suspend(Fs);
|
||||
}
|
||||
break;
|
||||
case IDET_STEP_INTO:
|
||||
if (!tempi->cur_line ||
|
||||
Fs->rip<tempi->cur_line || Fs->rip>=tempi->next_line) {
|
||||
Spawn(&IDEEdTask,NULL,"Resume Dbg",Fs);
|
||||
Spawn(&IDEEdTask,NULL,"Resume Dbg",,Fs);
|
||||
Suspend(Fs);
|
||||
} else
|
||||
Suspend(Fs,FALSE);
|
||||
@@ -481,7 +481,7 @@ U0 IDEResumeDbg()
|
||||
}
|
||||
if (!tempi->cur_line ||
|
||||
Fs->rip<tempi->cur_line || Fs->rip>=tempi->next_line) {
|
||||
Spawn(&IDEEdTask,NULL,"Resume Dbg",Fs);
|
||||
Spawn(&IDEEdTask,NULL,"Resume Dbg",,Fs);
|
||||
Suspend(Fs);
|
||||
} else {
|
||||
opcode=Fs->rip;
|
||||
|
||||
@@ -3,20 +3,20 @@ StrCpy(captured_macro_name,"Test");
|
||||
|
||||
I64 sys_macro_repeat_n=1;
|
||||
|
||||
U0 SysMacroStripKey(CTaskCmd *macro_root,I64 p1,I64 p2)
|
||||
U0 SysMacroStripKey(CSrvCmd *macro_root,I64 p1,I64 p2)
|
||||
{
|
||||
CTaskCmd *tempc,*tempc1;
|
||||
CSrvCmd *tempc,*tempc1;
|
||||
tempc=macro_root->next;
|
||||
while (tempc!=macro_root) {
|
||||
tempc1=tempc->next;
|
||||
if (tempc->cmd_code==TASKCT_MSG &&
|
||||
if (tempc->cmd_code==SVCT_MSG &&
|
||||
(tempc->msg_code==MSG_KEY_DOWN ||
|
||||
tempc->msg_code==MSG_KEY_UP ||
|
||||
tempc->msg_code==MSG_KEY_DOWN_UP) &&
|
||||
p1 && tempc->p1==p1 ||
|
||||
!p1 && tempc->p2==p2) {
|
||||
p1 && tempc->aux1==p1 ||
|
||||
!p1 && tempc->aux2==p2) {
|
||||
QueRem(tempc);
|
||||
Free(tempc);
|
||||
SrvCmdDel(tempc);
|
||||
}
|
||||
tempc=tempc1;
|
||||
}
|
||||
@@ -33,27 +33,27 @@ class CMacroTemp
|
||||
U8 buf[136];
|
||||
};
|
||||
|
||||
CMacroTemp *Cmd2MT(CTaskCmd *tempc)
|
||||
CMacroTemp *Cmd2MT(CSrvCmd *tempc)
|
||||
{
|
||||
U8 buf[8];
|
||||
CMacroTemp *tempmt=CAlloc(sizeof(CMacroTemp));
|
||||
if (Bt(getkey_chars_bitmap,tempc->p1) && tempc->msg_code==MSG_KEY_DOWN) {
|
||||
if (Bt(getkey_chars_bitmap,tempc->aux1) && tempc->msg_code==MSG_KEY_DOWN) {
|
||||
tempmt->type=MT_CHAR;
|
||||
buf[0]=tempc->p1;
|
||||
buf[0]=tempc->aux1;
|
||||
buf[1]=0;
|
||||
SPrintF(tempmt->buf,"%Q",buf);
|
||||
} else {
|
||||
tempmt->type=MT_MSG;
|
||||
SPrintF(tempmt->buf,"Msg(0x%X,0x%X,0x%X);",
|
||||
tempc->msg_code,tempc->p1,tempc->p2);
|
||||
tempc->msg_code,tempc->aux1,tempc->aux2);
|
||||
}
|
||||
return tempmt;
|
||||
}
|
||||
|
||||
|
||||
U8 *SysMacro2Str(CTaskCmd *macro_root)
|
||||
U8 *SysMacro2Str(CSrvCmd *macro_root)
|
||||
{
|
||||
CTaskCmd *tempc;
|
||||
CSrvCmd *tempc;
|
||||
I64 cnt=1; //terminating zero
|
||||
U8 *ptr,*m;
|
||||
CMacroTemp *tempmt,*tempmt1,root;
|
||||
@@ -147,7 +147,7 @@ U0 EdInsCapturedMacro()
|
||||
I64 PopUpExitRecordPlayStopIns()
|
||||
{
|
||||
U8 buf[136];
|
||||
CTaskCmd *tempc;
|
||||
CSrvCmd *tempc;
|
||||
CDoc *doc=DocNew;
|
||||
CDocEntry *doc_e=DocPutS(doc,"$$DA-P,135,\"Name:%s\"$$");
|
||||
I64 result=0;
|
||||
@@ -166,12 +166,12 @@ I64 PopUpExitRecordPlayStopIns()
|
||||
"\n\n\n$$FG,GREEN$$SHIFT-F2$$FG$$ will play macro.\n");
|
||||
doc->flags|=DOCF_MIN_SIZE | DOCF_FORM;
|
||||
SPrintF(buf,"DocMenuDo(0x%X);",doc);
|
||||
sys_macro_util_task=Spawn(&ServantUserCmdLine,NULL,"Macro Popup",Fs);
|
||||
sys_macro_util_task=Spawn(&SrvUserCmdLine,NULL,"Macro Popup",,Fs);
|
||||
Fs->popup_task=sys_macro_util_task;
|
||||
LBts(&sys_macro_util_task->display_flags,DISPLAYf_WIN_ON_TOP);
|
||||
tempc=TaskRqstQue(sys_macro_util_task,Fs,buf,
|
||||
1<<TASKCf_WAKE_MASTER | 1<<TASKCf_FOCUS_MASTER);
|
||||
GetRqstResult(tempc,&result);
|
||||
tempc=TaskExeStrQue(sys_macro_util_task,Fs,buf,
|
||||
1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER);
|
||||
ScanResult(tempc,&result);
|
||||
Fs->popup_task=NULL;
|
||||
Kill(sys_macro_util_task);
|
||||
sys_macro_util_task=NULL;
|
||||
|
||||
@@ -58,10 +58,9 @@ public Bool Plain(U8 *filename)
|
||||
public Bool DocLinkChk(U8 *link_st)
|
||||
{
|
||||
U8 *filename;
|
||||
I64 num;
|
||||
Bool result=FALSE;
|
||||
if (link_st) {
|
||||
switch (EdLinkCvt(link_st,&filename,,&num)) {
|
||||
switch (EdLinkCvt(link_st,&filename)) {
|
||||
case -1:
|
||||
break;
|
||||
case LK_FILE_LINE:
|
||||
@@ -108,70 +107,68 @@ public U8 *DocLinkFile(U8 *link_st,CTask *mem_task=NULL)
|
||||
}
|
||||
|
||||
#help_index "Doc/Task"
|
||||
public CDoc *SysAuxDocInit()
|
||||
public CDoc *SysBorderDocInit()
|
||||
{
|
||||
CDocEntry *doc_e;
|
||||
CDoc *aux,*doc=DocCur;
|
||||
CDoc *bdoc,*doc=DocPut;
|
||||
|
||||
aux=DocNew;
|
||||
aux->flags|=DOCF_AUX_DOC;
|
||||
bdoc=DocNew;
|
||||
bdoc->flags|=DOCF_BORDER_DOC;
|
||||
|
||||
if (doc) {
|
||||
DocPutS(aux,"$$CM+H+BY+RX+NC,-7,1$$");
|
||||
doc_e=DocPutS(aux,"$$TX+H+BD+TC,\" \"$$");
|
||||
DocPutS(bdoc,"$$CM+H+BY+RX+NC,-7,1$$");
|
||||
doc_e=DocPutS(bdoc,"$$TX+H+BD+TC,\" \"$$");
|
||||
doc_e->user_data=doc;
|
||||
doc_e->tag_cb=&EdFilterCB;
|
||||
doc_e=DocPutS(aux,"$$TX+H+BD+TC,\" \"$$");
|
||||
doc_e=DocPutS(bdoc,"$$TX+H+BD+TC,\" \"$$");
|
||||
doc_e->user_data=doc;
|
||||
doc_e->tag_cb=&EdOverStrikeCB;
|
||||
doc_e=DocPutS(aux,"$$TX+H+BD+TC,\" \"$$");
|
||||
doc_e=DocPutS(bdoc,"$$TX+H+BD+TC,\" \"$$");
|
||||
doc_e->user_data=doc;
|
||||
doc_e->tag_cb=&EdDollarCB;
|
||||
}
|
||||
|
||||
DocPutS(aux,"$$CM+H+BY+RX+NC,-4,1$$");
|
||||
doc_e=DocPutS(aux,"$$TX+H+BD+TC,\" \"$$");
|
||||
DocPutS(bdoc,"$$CM+H+BY+RX+NC,-4,1$$");
|
||||
doc_e=DocPutS(bdoc,"$$TX+H+BD+TC,\" \"$$");
|
||||
doc_e->tag_cb=&EdQuotesCB;
|
||||
doc_e=DocPutS(aux,"$$TX+H+BD+TC,\" \"$$");
|
||||
doc_e=DocPutS(bdoc,"$$TX+H+BD+TC,\" \"$$");
|
||||
doc_e->tag_cb=&EdBracesCB;
|
||||
doc_e=DocPutS(aux,"$$TX+H+BD+TC,\" \"$$");
|
||||
doc_e=DocPutS(bdoc,"$$TX+H+BD+TC,\" \"$$");
|
||||
doc_e->tag_cb=&EdSemicolonCB;
|
||||
|
||||
if (doc) {
|
||||
DocPutS(aux,"$$CM+H+BY+RX+NC,-18,1$$");
|
||||
doc_e=DocPutS(aux,"$$TX+BD+TC,\" \"$$");
|
||||
DocPutS(bdoc,"$$CM+H+BY+RX+NC,-18,1$$");
|
||||
doc_e=DocPutS(bdoc,"$$TX+BD+TC,\" \"$$");
|
||||
doc_e->user_data=doc;
|
||||
doc_e->tag_cb=&EdMoreCB;
|
||||
doc_e=DocPutS(aux,"$$TX+H+BD+TC,\" \"$$");
|
||||
doc_e=DocPutS(bdoc,"$$TX+H+BD+TC,\" \"$$");
|
||||
doc_e->user_data=doc;
|
||||
doc_e->tag_cb=&EdDollarTypeCB;
|
||||
}
|
||||
|
||||
if (Fs->user_num)
|
||||
DocPrintF(aux,"$$CM+H+TY+LX+NC,5,-1$$$$TX+H+BD,\"#%d\"$$",Fs->user_num);
|
||||
DocPutS(aux,"$$CM+H+TY+NC,0,-1$$");
|
||||
doc_e=DocPutS(aux,"$$DA+H-T-P+BD+RD+CX+SCX+IV,140,\"%s...\",16$$");
|
||||
DocPrintF(bdoc,"$$CM+H+TY+LX+NC,5,-1$$$$TX+H+BD,\"#%d\"$$",Fs->user_num);
|
||||
DocPutS(bdoc,"$$CM+H+TY+NC,0,-1$$");
|
||||
doc_e=DocPutS(bdoc,"$$DA+H-T-P+BD+RD+CX+SCX+IV,140,\"%s...\",16$$");
|
||||
doc_e->data=&Fs->task_title;
|
||||
DocDataFmt(doc_e);
|
||||
DocPrintF(aux,"$$CM+H+NC,1,0$$$$TX+H+BD+IV,\"%X\"$$",Fs);
|
||||
aux->settings_root.dft_text_attr=Fs->border_attr;
|
||||
DocPrintF(bdoc,"$$CM+H+NC,1,0$$$$TX+H+BD+IV,\"%X\"$$",Fs);
|
||||
if (Bt(&Fs->display_flags,DISPLAYf_HAS_CLOSE_WIN))
|
||||
DocPutS(aux,"$$TX+H+RX+BD,\"[X]\"$$");
|
||||
DocPutS(aux,"$$BK,1$$$$TX+H+LX+BD,\"MENU\"$$$$BK,0$$");
|
||||
return aux;
|
||||
DocPutS(bdoc,"$$TX+H+RX+BD,\"[X]\"$$");
|
||||
DocPutS(bdoc,"$$BK,1$$$$TX+H+LX+BD,\"MENU\"$$$$BK,0$$");
|
||||
return bdoc;
|
||||
}
|
||||
|
||||
public U0 UseTermDoc()
|
||||
{
|
||||
Bool old_preempt=Preempt(OFF);
|
||||
CDoc *doc=DocNew;
|
||||
doc->start_text_attr=WHITE<<4+BLUE;
|
||||
DocQueIns(doc,Fs->last_doc);
|
||||
doc->right_click_link=&TermRightClickLink;
|
||||
doc->max_entries=4096;
|
||||
doc->flags|=DOCF_ATTR_BY_PRT;
|
||||
Fs->border_src=BDS_CUR_PRT;
|
||||
StrCpy(doc->desc,"Term");
|
||||
DocQueInsRev(SysAuxDocInit,Fs->next_doc);
|
||||
Fs->put_doc=Fs->display_doc=doc;
|
||||
Fs->border_doc=SysBorderDocInit;
|
||||
Fs->cur_menu=MenuFile("::/TempleOS/Doc/EdPullDown.TXT");
|
||||
WinScrollsInit(Fs);
|
||||
Preempt(old_preempt);
|
||||
@@ -219,7 +216,7 @@ public U8 *DocGetLine(CDoc *doc,CDocEntry *doc_e,I64 *cur_col=NULL,CDocEntry **_
|
||||
}
|
||||
|
||||
#help_index "Doc/Output"
|
||||
public U0 DocDump(CDoc *doc,I64 uS_delay=0)
|
||||
U0 DocDump(CDoc *doc,I64 uS_delay=0)
|
||||
{
|
||||
U8 *st;
|
||||
CDocEntry *doc_e,*doc_e2;
|
||||
@@ -240,10 +237,14 @@ public U0 DocDump(CDoc *doc,I64 uS_delay=0)
|
||||
DocUnlock(doc);
|
||||
}
|
||||
|
||||
public CDocEntry *DocPutLine(CDocEntry *doc_e)
|
||||
public CDocEntry *DocPutLine(CDoc *doc=NULL,CDocEntry *doc_e)
|
||||
{
|
||||
U8 ch,*ptr,*ptr2;
|
||||
while (doc_e->type_u8!=DOCT_ERROR && doc_e->type_u8!=DOCT_NEW_LINE) {
|
||||
Bool unlock;
|
||||
if (!doc && !(doc=DocPut) || doc->doc_signature!=DOC_SIGNATURE_VAL)
|
||||
return NULL;
|
||||
unlock=DocLock(doc);
|
||||
while (doc_e!=doc && doc_e->type_u8!=DOCT_NEW_LINE) {
|
||||
if (Bt(doc_tag_types,doc_e->type_u8)) {
|
||||
ptr=doc_e->tag;
|
||||
do {
|
||||
@@ -266,7 +267,11 @@ public CDocEntry *DocPutLine(CDocEntry *doc_e)
|
||||
doc_e=doc_e->next;
|
||||
}
|
||||
NewLine;
|
||||
return doc_e->type_u8==DOCT_ERROR ? doc_e:doc_e->next;
|
||||
if (doc_e!=doc)
|
||||
doc_e=doc_e->next;
|
||||
if (unlock)
|
||||
DocUnlock(doc);
|
||||
return doc_e;
|
||||
}
|
||||
|
||||
#help_index "Doc/Input"
|
||||
@@ -278,29 +283,19 @@ public U8 *DocMGetS(I64 flags=0)
|
||||
Bool old_preempt=IsPreempt;
|
||||
U8 *st,*result;
|
||||
I64 ch,sc;
|
||||
"$$FU$$";
|
||||
"$$PT$$";
|
||||
do {
|
||||
ch=DocGetKey(&sc);
|
||||
if (ch==CH_ESC) {
|
||||
doc=Fs->next_doc;
|
||||
while (doc!=(&Fs->next_doc)(U8 *)-offset(CDoc.next_doc) &&
|
||||
doc->doc_in_que_signature==DOC_IN_QUE_SIGNATURE_VAL) {
|
||||
if (doc=DocPut) {
|
||||
DocLock(doc);
|
||||
if (!(doc->flags&DOCF_DONT_SHOW) &&
|
||||
(!doc->best_d || !(doc->flags&DOCF_AUX_DOC)) &&
|
||||
doc->doc_in_que_signature==DOC_IN_QUE_SIGNATURE_VAL && doc->cur_entry!=doc) {
|
||||
if (doc->doc_signature==DOC_SIGNATURE_VAL && doc->cur_entry!=doc) {
|
||||
doc_e=DocEntryCopy(doc,doc->cur_entry);
|
||||
if (doc->flags&DOCF_AUX_DOC && DocCur)
|
||||
DocBottom;
|
||||
else
|
||||
DocBottom(doc);
|
||||
DocBottom(doc);
|
||||
DocEntryRun(doc,doc_e,TRUE);
|
||||
DocEntryDel(doc,doc_e);
|
||||
DocUnlock(doc);
|
||||
break;
|
||||
}
|
||||
DocUnlock(doc);
|
||||
doc=doc->next_doc;
|
||||
}
|
||||
if (flags&GETSF_WITH_NEW_LINE)
|
||||
break;
|
||||
@@ -316,12 +311,12 @@ public U8 *DocMGetS(I64 flags=0)
|
||||
} while (flags&GETSF_WITH_NEW_LINE || ch!='\n' || sc & SCF_CTRL && sc & SCF_SHIFT);
|
||||
|
||||
Preempt(OFF);
|
||||
doc=DocCur;
|
||||
doc=DocPut;
|
||||
DocLock(doc);
|
||||
if (flags&GETSF_WITH_NEW_LINE) {
|
||||
doc_e=doc->cur_entry;
|
||||
do doc_e=doc_e->last;
|
||||
while (doc_e!=doc && doc_e->type_u8!=DOCT_USER_FOREGROUND);
|
||||
while (doc_e!=doc && doc_e->type_u8!=DOCT_PMT);
|
||||
doc_e=doc_e->next;
|
||||
if (result=DocGetLine(doc,doc_e,NULL,&doc_e_end)) {
|
||||
while (doc_e_end!=doc && doc_e_end->type_u8==DOCT_NEW_LINE) {
|
||||
@@ -336,18 +331,18 @@ public U8 *DocMGetS(I64 flags=0)
|
||||
doc_e=doc->cur_entry;
|
||||
do doc_e=doc_e->last;
|
||||
while (doc_e!=doc && doc_e->type_u8!=DOCT_NEW_LINE &&
|
||||
doc_e->type_u8!=DOCT_USER_FOREGROUND);
|
||||
if (doc_e!=doc && doc_e->type_u8!=DOCT_USER_FOREGROUND) {
|
||||
doc_e->type_u8!=DOCT_PMT);
|
||||
if (doc_e!=doc && doc_e->type_u8!=DOCT_PMT) {
|
||||
do doc_e=doc_e->last;
|
||||
while (doc_e!=doc && doc_e->type_u8!=DOCT_NEW_LINE &&
|
||||
doc_e->type_u8!=DOCT_USER_FOREGROUND);
|
||||
doc_e->type_u8!=DOCT_PMT);
|
||||
}
|
||||
doc_e=doc_e->next;
|
||||
result=DocGetLine(doc,doc_e,NULL);
|
||||
}
|
||||
DocUnlock(doc);
|
||||
mgets_done:
|
||||
"$$FU$$$$FG$$$$BG$$";
|
||||
"$$PT$$$$FG$$$$BG$$";
|
||||
Preempt(old_preempt);
|
||||
return result;
|
||||
}
|
||||
@@ -367,11 +362,12 @@ public I64 PmtI64(U8 *msg,I64 dft,I64 lo=MIN_I64,I64 hi=MAX_I64)
|
||||
return dft;
|
||||
}
|
||||
try {
|
||||
okay=FALSE;
|
||||
result=ExePrintF3("ToI64(%s);",st);
|
||||
okay=TRUE;
|
||||
} catch
|
||||
} catch {
|
||||
Fs->catch_except=TRUE;
|
||||
okay=FALSE;
|
||||
}
|
||||
Free(st);
|
||||
if (okay && lo<=result<=hi)
|
||||
return result;
|
||||
@@ -391,11 +387,12 @@ public F64 PmtF64(U8 *msg,F64 dft,F64 lo=MIN_F64,F64 hi=MAX_F64)
|
||||
return dft;
|
||||
}
|
||||
try {
|
||||
okay=FALSE;
|
||||
result=ExePrintF3("ToF64(%s);",st)(F64);
|
||||
okay=TRUE;
|
||||
} catch
|
||||
} catch {
|
||||
Fs->catch_except=TRUE;
|
||||
okay=FALSE;
|
||||
}
|
||||
Free(st);
|
||||
if (okay && lo<=result<=hi)
|
||||
return result;
|
||||
@@ -433,7 +430,7 @@ public CDate PmtCDate(U8 *msg,CDate dft,CDate lo=MIN_I64,CDate hi=MAX_I64)
|
||||
Free(st);
|
||||
return dft;
|
||||
}
|
||||
result=A2CDate(st);
|
||||
result=A2Date(st);
|
||||
Free(st);
|
||||
if (result>=lo && result<=hi)
|
||||
return result;
|
||||
@@ -495,10 +492,15 @@ I64 PopUpCancelIncludeDelAuto(U8 *header=NULL,U8 *footer=NULL)
|
||||
I64 EdLeftClickLink(CDoc *doc,CDocEntry *doc_e)
|
||||
{ //called with doc locked, exit unlocked
|
||||
Bool result;
|
||||
U8 *st;
|
||||
U8 *st,*st2;
|
||||
if (st=DocEntryLink(doc,doc_e)) {
|
||||
DocUnlock(doc);
|
||||
result=Ed(st);
|
||||
if (doc_e->flags1 & DOCEF1_POPUP) {
|
||||
st2=MSPrintF("Ed(\"%Q\");",st);
|
||||
result=PopUp(st2);
|
||||
Free(st2);
|
||||
} else
|
||||
result=Ed(st);
|
||||
Free(st);
|
||||
return result;
|
||||
}
|
||||
@@ -523,7 +525,7 @@ I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e)
|
||||
break;
|
||||
}
|
||||
}
|
||||
"#include \"%s\";\n$$FU$$$$FG$$$$BG$$",st;
|
||||
"#include \"%s\";\n$$PT$$$$FG$$$$BG$$",st;
|
||||
WinZBufUpdate;
|
||||
ExeFile(st);
|
||||
result=TRUE;
|
||||
@@ -535,11 +537,11 @@ I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e)
|
||||
result=Type(st);
|
||||
break;
|
||||
case RIGHT_ED:
|
||||
"Ed(\"%s\");\n$$FU$$$$FG$$$$BG$$",st;
|
||||
"Ed(\"%s\");\n$$PT$$$$FG$$$$BG$$",st;
|
||||
result=Ed(st);
|
||||
break;
|
||||
case RIGHT_PLAIN:
|
||||
"Plain(\"%s\");\n$$FU$$$$FG$$$$BG$$",st;
|
||||
"Plain(\"%s\");\n$$PT$$$$FG$$$$BG$$",st;
|
||||
result=Plain(st);
|
||||
break;
|
||||
case RIGHT_AUTOFILE:
|
||||
@@ -549,7 +551,7 @@ I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e)
|
||||
break;
|
||||
}
|
||||
}
|
||||
"AutoFile(\"%s\");\n$$FU$$$$FG$$$$BG$$",st;
|
||||
"AutoFile(\"%s\");\n$$PT$$$$FG$$$$BG$$",st;
|
||||
WinZBufUpdate;
|
||||
AutoStr("%F\n",st);
|
||||
result=TRUE;
|
||||
@@ -561,7 +563,7 @@ I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e)
|
||||
break;
|
||||
}
|
||||
}
|
||||
"Adam(\"#include \\\"%s\\\"\" );\n$$FU$$$$FG$$$$BG$$",st;
|
||||
"Adam(\"#include \\\"%s\\\"\" );\n$$PT$$$$FG$$$$BG$$",st;
|
||||
WinZBufUpdate;
|
||||
AdamFile(st,FALSE);
|
||||
result=TRUE;
|
||||
@@ -573,7 +575,7 @@ I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e)
|
||||
break;
|
||||
}
|
||||
}
|
||||
"Cmp(\"%s\");\n$$FU$$$$FG$$$$BG$$",st;
|
||||
"Cmp(\"%s\");\n$$PT$$$$FG$$$$BG$$",st;
|
||||
WinZBufUpdate;
|
||||
result=!ToBool(Cmp(st));
|
||||
break;
|
||||
@@ -584,7 +586,7 @@ I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e)
|
||||
break;
|
||||
}
|
||||
}
|
||||
"Load(\"%s\");\n$$FU$$$$FG$$$$BG$$",st;
|
||||
"Load(\"%s\");\n$$PT$$$$FG$$$$BG$$",st;
|
||||
WinZBufUpdate;
|
||||
result=ToBool(Load(st));
|
||||
break;
|
||||
@@ -595,7 +597,7 @@ I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e)
|
||||
break;
|
||||
}
|
||||
}
|
||||
"BinRep(\"%s\");\n$$FU$$$$FG$$$$BG$$",st;
|
||||
"BinRep(\"%s\");\n$$PT$$$$FG$$$$BG$$",st;
|
||||
WinZBufUpdate;
|
||||
result=BinRep(st);
|
||||
break;
|
||||
@@ -620,7 +622,7 @@ I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e)
|
||||
break;
|
||||
}
|
||||
}
|
||||
"IDE(\"%s\");\n$$FU$$$$FG$$$$BG$$",st;
|
||||
"IDE(\"%s\");\n$$PT$$$$FG$$$$BG$$",st;
|
||||
WinZBufUpdate;
|
||||
IDE(st);
|
||||
result=TRUE;
|
||||
@@ -635,7 +637,7 @@ I64 TermRightClickLink(CDoc *doc,CDocEntry *doc_e)
|
||||
} else
|
||||
send_new_line=TRUE;
|
||||
DocBottom(doc);
|
||||
"$$FU$$$$FG$$$$BG$$";
|
||||
"$$PT$$$$FG$$$$BG$$";
|
||||
if (send_new_line)
|
||||
'\n';
|
||||
return result;
|
||||
@@ -648,7 +650,7 @@ public U0 DocDm(U8 *buf,I64 cnt=0x80)
|
||||
//edited.
|
||||
{
|
||||
CDocEntry *doc_e;
|
||||
CDoc *doc=DocCur;
|
||||
CDoc *doc=DocPut;
|
||||
Bool unlock=DocLock(doc);
|
||||
doc_e=DocPrintF(doc,"$$HX-Z,%d,16$$",cnt);
|
||||
doc_e->data=buf;
|
||||
@@ -664,7 +666,7 @@ public U0 DocD(U8 *buf,I64 cnt=0x80)
|
||||
//edited.
|
||||
{
|
||||
CDocEntry *doc_e;
|
||||
CDoc *doc=DocCur;
|
||||
CDoc *doc=DocPut;
|
||||
Bool unlock=DocLock(doc);
|
||||
doc_e=DocPrintF(doc,"$$HX,%d,16$$",cnt);
|
||||
doc_e->data=buf;
|
||||
@@ -678,13 +680,13 @@ public U0 DocD(U8 *buf,I64 cnt=0x80)
|
||||
Bool AKDDocPutS(U8 *st)
|
||||
{
|
||||
CDoc *doc;
|
||||
if (doc=DocCur)
|
||||
if (doc=DocPut)
|
||||
DocPutSPartial(doc,st);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
KeyDevAdd(&AKDDocPutKey,&AKDDocPutS,0x80000000,TRUE);
|
||||
fp_mgets=&DocMGetS;
|
||||
fp_doc_cur=&DocCur;
|
||||
fp_doc_put=&DocPut;
|
||||
|
||||
#help_index "Doc"
|
||||
+93
-163
@@ -40,18 +40,7 @@ U0 DocTablesInit()
|
||||
1<<DOCT_BACKGROUND|
|
||||
1<<DOCT_DFT_FOREGROUND|
|
||||
1<<DOCT_DFT_BACKGROUND|
|
||||
1<<DOCT_ALT_FOREGROUND|
|
||||
1<<DOCT_LINK_FOREGROUND|
|
||||
1<<DOCT_MACRO_FOREGROUND|
|
||||
1<<DOCT_ANCHOR_FOREGROUND|
|
||||
1<<DOCT_HIDDEN_FOREGROUND|
|
||||
1<<DOCT_TREE_FOREGROUND|
|
||||
1<<DOCT_USER_FOREGROUND|
|
||||
1<<DOCT_BINARY_FOREGROUND|
|
||||
1<<DOCT_KEYWORD_FOREGROUND|
|
||||
1<<DOCT_KEYWORD2_FOREGROUND|
|
||||
1<<DOCT_COMMENT_FOREGROUND|
|
||||
1<<DOCT_QUOTE_FOREGROUND|
|
||||
1<<DOCT_PMT|
|
||||
1<<DOCT_WORD_WRAP|
|
||||
1<<DOCT_UNDERLINE|
|
||||
1<<DOCT_INVERT|
|
||||
@@ -391,7 +380,7 @@ public U0 DocHome(CDoc *doc=NULL)
|
||||
{
|
||||
Bool unlock;
|
||||
if (!doc) {
|
||||
doc=DocCur;
|
||||
doc=DocPut;
|
||||
if (!doc) return;
|
||||
}
|
||||
unlock=DocLock(doc);
|
||||
@@ -454,7 +443,7 @@ public U0 DocRst(CDoc *doc,Bool is_old)
|
||||
CDocSettings *s;
|
||||
CDocBin *b,*b1;
|
||||
if (!doc) {
|
||||
doc=DocCur;
|
||||
doc=DocPut;
|
||||
if (!doc) return;
|
||||
}
|
||||
unlock=DocLock(doc);
|
||||
@@ -511,19 +500,7 @@ public U0 DocRst(CDoc *doc,Bool is_old)
|
||||
s->shifted_x=0;
|
||||
s->shifted_y=0;
|
||||
|
||||
s->cur_text_attr=s->dft_text_attr=doc->start_text_attr=WHITE<<4+BLACK;
|
||||
s->alt_text_attr =LTGRAY;
|
||||
s->link_attr =RED;
|
||||
s->macro_attr =LTBLUE;
|
||||
s->anchor_attr =DKGRAY;
|
||||
s->hidden_attr =DKGRAY;
|
||||
s->tree_attr =PURPLE;
|
||||
s->user_attr =GREEN;
|
||||
s->bin_attr =CYAN;
|
||||
s->keyword_attr =BLUE;
|
||||
s->keyword2_attr =LTRED;
|
||||
s->comment_attr =GREEN;
|
||||
s->quote_attr =BROWN;
|
||||
s->cur_text_attr=s->dft_text_attr=DOC_ATTR_DFT_TEXT;
|
||||
|
||||
doc_e=&doc->root;
|
||||
doc_e->type=DOCT_ERROR;
|
||||
@@ -547,7 +524,6 @@ public U0 DocDel(CDoc *doc)
|
||||
if (!doc || doc->doc_signature!=DOC_SIGNATURE_VAL) return;
|
||||
DocLock(doc);
|
||||
doc->doc_signature=0;
|
||||
doc->doc_in_que_signature=0;
|
||||
DocRst(doc,TRUE);
|
||||
Free(doc->find_replace);
|
||||
Free(doc->dollar_buf);
|
||||
@@ -683,7 +659,7 @@ U0 DocRemSoftNewLines(CDoc *doc=NULL,CDocEntry *doc_e=NULL)
|
||||
CDocEntry *doc_e2,*saved_ll=doc_e;
|
||||
Bool unlock;
|
||||
if (!doc) {
|
||||
doc=DocCur;
|
||||
doc=DocPut;
|
||||
if (!doc) return;
|
||||
}
|
||||
unlock=DocLock(doc);
|
||||
@@ -712,7 +688,7 @@ public I64 DocMax(I64 i=MAX_I32)
|
||||
//entries after a while.
|
||||
{
|
||||
I64 result;
|
||||
CDoc *doc=DocCur;
|
||||
CDoc *doc=DocPut;
|
||||
if (doc) {
|
||||
result=doc->max_entries;
|
||||
doc->max_entries=i;
|
||||
@@ -747,162 +723,116 @@ public CDoc *DocNew(CTask *task=NULL)
|
||||
sys_clipboard_doc=DocNew;
|
||||
|
||||
#help_index "Doc/Task"
|
||||
public U0 DocQueIns(CDoc *doc,CDoc *pred)
|
||||
{
|
||||
CDoc *succ;
|
||||
Bool *old_preempt;
|
||||
if (!doc) return;
|
||||
old_preempt=Preempt(OFF);
|
||||
succ=pred->next_doc;
|
||||
doc->last_doc=pred;
|
||||
doc->next_doc=succ;
|
||||
pred->next_doc=doc;
|
||||
succ->last_doc=doc;
|
||||
doc->doc_in_que_signature=DOC_IN_QUE_SIGNATURE_VAL;
|
||||
Preempt(old_preempt);
|
||||
}
|
||||
|
||||
public U0 DocQueInsRev(CDoc *doc,CDoc *succ)
|
||||
{
|
||||
CDoc *pred;
|
||||
Bool *old_preempt;
|
||||
if (!doc) return;
|
||||
old_preempt=Preempt(OFF);
|
||||
pred=succ->last_doc;
|
||||
doc->last_doc=pred;
|
||||
doc->next_doc=succ;
|
||||
pred->next_doc=doc;
|
||||
succ->last_doc=doc;
|
||||
doc->doc_in_que_signature=DOC_IN_QUE_SIGNATURE_VAL;
|
||||
Preempt(old_preempt);
|
||||
}
|
||||
|
||||
public U0 DocQueRem(CDoc *doc)
|
||||
{
|
||||
CDoc *succ,*pred;
|
||||
Bool *old_preempt;
|
||||
if (!doc) return;
|
||||
old_preempt=Preempt(OFF);
|
||||
doc->doc_in_que_signature=0;
|
||||
succ=doc->next_doc;
|
||||
pred=doc->last_doc;
|
||||
pred->next_doc=succ;
|
||||
succ->last_doc=pred;
|
||||
Preempt(old_preempt);
|
||||
}
|
||||
|
||||
public CDoc *DocCur(CTask *task=NULL)
|
||||
{
|
||||
public CDoc *DocPut(CTask *task=NULL)
|
||||
{//Current document that PUT goes to.
|
||||
//Basically, StdOut unless double buffering.
|
||||
CDoc *result;
|
||||
if (!task) task=Fs;
|
||||
result=task->last_doc;
|
||||
if (result==(&task->next_doc)(U8 *)-offset(CDoc.next_doc) ||
|
||||
result->flags&DOCF_AUX_DOC ||
|
||||
result->doc_in_que_signature!=DOC_IN_QUE_SIGNATURE_VAL)
|
||||
result=NULL;
|
||||
return result;
|
||||
if ((result=task->put_doc) && result->doc_signature==DOC_SIGNATURE_VAL)
|
||||
return result;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
public CDoc *DocAux(CTask *task=NULL)
|
||||
{
|
||||
public CDoc *DocDisplay(CTask *task=NULL)
|
||||
{//StdOut unless double buffering.
|
||||
CDoc *result;
|
||||
if (!task) task=Fs;
|
||||
result=task->next_doc;
|
||||
if (result==(&task->next_doc)(U8 *)-offset(CDoc.next_doc) ||
|
||||
!(result->flags&DOCF_AUX_DOC) ||
|
||||
result->doc_in_que_signature!=DOC_IN_QUE_SIGNATURE_VAL)
|
||||
result=NULL;
|
||||
return result;
|
||||
if ((result=task->display_doc) && result->doc_signature==DOC_SIGNATURE_VAL)
|
||||
return result;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
public CDoc *DocBorder(CTask *task=NULL)
|
||||
{//Doc holding border of window text.
|
||||
CDoc *result;
|
||||
if (!task) task=Fs;
|
||||
if ((result=task->border_doc) && result->doc_signature==DOC_SIGNATURE_VAL)
|
||||
return result;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
public CDoc *DocDblBufStart(CTask *task=NULL)
|
||||
{ //See $LK-A,"::/TempleOS/Demo/Spy.CPP"$
|
||||
CDoc *doc,*doc2;
|
||||
Bool unlock_doc2,old_preempt=Preempt(OFF);
|
||||
if (!task) task=Fs;
|
||||
doc2=task->last_doc;
|
||||
unlock_doc2=DocLock(doc2); //dont want change during winupdate, so lock DocCur$WW,0$
|
||||
doc=DocNew(task);
|
||||
doc->win_task =doc2->win_task;
|
||||
doc->start_text_attr=doc2->start_text_attr;
|
||||
doc->max_entries=doc2->max_entries;
|
||||
MemCpy(doc->find_replace,doc2->find_replace,sizeof(CEdFindText));
|
||||
doc->start_x =doc2->start_x;
|
||||
doc->start_y =doc2->start_y;
|
||||
MemCpy(&doc->filename,&doc2->filename,sizeof(CEdFileName));
|
||||
doc->left_click_link =doc2->left_click_link;
|
||||
doc->right_click_link=doc2->right_click_link;
|
||||
doc->user_put_data=doc2->user_put_data;
|
||||
doc->user_put_key =doc2->user_put_key;
|
||||
doc->user_put_s =doc2->user_put_s;
|
||||
doc->parent_doc =doc2->parent_doc;
|
||||
doc->desc[0](I64)=doc2->desc[0](I64);
|
||||
doc->user_data =doc2->user_data;
|
||||
doc->flags|=doc2->flags&DOCG_DBL_BUF_FLAGS | DOCF_DONT_SHOW;
|
||||
DocQueIns(doc,task->last_doc);
|
||||
if (unlock_doc2)
|
||||
DocUnlock(doc2);
|
||||
Bool unlock_ddoc,old_preempt=Preempt(OFF);
|
||||
CDoc *pdoc=DocPut(task),*ddoc=DocDisplay(task),*result;
|
||||
if (!pdoc || !ddoc || pdoc!=ddoc)
|
||||
result=NULL; //Already Double buffering
|
||||
else {
|
||||
if (!task) task=Fs;
|
||||
unlock_ddoc=DocLock(ddoc); //dont want change during winupdate, so lock DocPut$WW,0$
|
||||
result=DocNew(task);
|
||||
result->win_task =ddoc->win_task;
|
||||
result->max_entries =ddoc->max_entries;
|
||||
MemCpy(result->find_replace,ddoc->find_replace,sizeof(CEdFindText));
|
||||
result->start_x =ddoc->start_x;
|
||||
result->start_y =ddoc->start_y;
|
||||
MemCpy(&result->filename,&ddoc->filename,sizeof(CEdFileName));
|
||||
result->left_click_link =ddoc->left_click_link;
|
||||
result->right_click_link =ddoc->right_click_link;
|
||||
result->user_put_data =ddoc->user_put_data;
|
||||
result->user_put_key =ddoc->user_put_key;
|
||||
result->user_put_s =ddoc->user_put_s;
|
||||
result->parent_doc =ddoc->parent_doc;
|
||||
result->desc[0](I64) =ddoc->desc[0](I64);
|
||||
result->user_data =ddoc->user_data;
|
||||
result->flags|=ddoc->flags&DOCG_DBL_BUF_FLAGS | DOCF_DONT_SHOW;
|
||||
task->put_doc=result;
|
||||
if (unlock_ddoc)
|
||||
DocUnlock(ddoc);
|
||||
}
|
||||
Preempt(old_preempt);
|
||||
return doc;
|
||||
return result;
|
||||
}
|
||||
|
||||
public Bool DocDblBufEnd(CTask *task=NULL)
|
||||
{ //See $LK-A,"::/TempleOS/Demo/Spy.CPP"$
|
||||
Bool okay=FALSE,old_preempt=Preempt(OFF);
|
||||
CDoc *doc1,*doc2;
|
||||
if (!task) task=Fs;
|
||||
if (doc1=DocCur(task)) {
|
||||
doc2=doc1->last_doc;
|
||||
if (doc2!=(&task->next_doc)(U8 *)-offset(CDoc.next_doc) &&
|
||||
!(doc2->flags&DOCF_AUX_DOC) &&
|
||||
doc2->doc_in_que_signature==DOC_IN_QUE_SIGNATURE_VAL) {
|
||||
doc2->flags|=DOCF_DONT_SHOW;
|
||||
doc1->flags&=~DOCF_DONT_SHOW;
|
||||
DocLock(doc2);
|
||||
DocQueRem(doc2);
|
||||
DocUnlock(doc2);
|
||||
DocDel(doc2);
|
||||
okay=TRUE;
|
||||
}
|
||||
Bool result=FALSE,old_preempt=Preempt(OFF);
|
||||
CDoc *pdoc=DocPut(task),*ddoc=DocDisplay(task);
|
||||
if (pdoc && ddoc && pdoc!=ddoc) {//Double buffering?
|
||||
if (!task) task=Fs;
|
||||
ddoc->flags|=DOCF_DONT_SHOW;
|
||||
pdoc->flags&=~DOCF_DONT_SHOW;
|
||||
DocLock(ddoc);
|
||||
task->display_doc=pdoc;
|
||||
DocUnlock(ddoc);
|
||||
DocDel(ddoc);
|
||||
result=TRUE;
|
||||
}
|
||||
Preempt(old_preempt);
|
||||
return okay;
|
||||
return result;
|
||||
}
|
||||
|
||||
public Bool DocDblBufSwap(CTask *task=NULL)
|
||||
{ //See $LK-A,"::/TempleOS/Demo/Spy.CPP"$
|
||||
Bool okay=FALSE,old_preempt=Preempt(OFF);
|
||||
CDoc *doc1,*doc2;
|
||||
if (!task) task=Fs;
|
||||
if (doc1=DocCur(task)) {
|
||||
doc2=doc1->last_doc;
|
||||
if (doc2!=(&task->next_doc)(U8 *)-offset(CDoc.next_doc) &&
|
||||
!(doc2->flags&DOCF_AUX_DOC) &&
|
||||
doc2->doc_in_que_signature==DOC_IN_QUE_SIGNATURE_VAL) {
|
||||
doc2->flags|=DOCF_DONT_SHOW;
|
||||
doc1->flags&=~DOCF_DONT_SHOW;
|
||||
DocLock(doc2);
|
||||
DocQueRem(doc2);
|
||||
DocUnlock(doc2);
|
||||
DocRst(doc2,TRUE);
|
||||
MemCpy(doc2->find_replace,doc1->find_replace,sizeof(CEdFindText));
|
||||
MemCpy(&doc2->filename,&doc1->filename,sizeof(CEdFileName));
|
||||
doc2->start_text_attr=doc1->start_text_attr;
|
||||
doc2->max_entries =doc1->max_entries;
|
||||
doc2->flags =doc1->flags&DOCG_DBL_BUF_FLAGS | doc2->flags&~DOCG_DBL_BUF_FLAGS;
|
||||
doc2->left_click_link =doc1->left_click_link;
|
||||
doc2->right_click_link=doc1->right_click_link;
|
||||
doc2->user_put_data=doc1->user_put_data;
|
||||
doc2->user_put_key =doc1->user_put_key;
|
||||
doc2->user_put_s =doc1->user_put_s;
|
||||
doc2->desc[0](I64)=doc1->desc[0](I64);
|
||||
doc2->user_data =doc1->user_data;
|
||||
DocQueIns(doc2,task->last_doc);
|
||||
okay=TRUE;
|
||||
}
|
||||
Bool result=FALSE,old_preempt=Preempt(OFF);
|
||||
CDoc *pdoc=DocPut(task),*ddoc=DocDisplay(task);
|
||||
if (pdoc && ddoc && pdoc!=ddoc) {//Double buffering?
|
||||
if (!task) task=Fs;
|
||||
ddoc->flags|=DOCF_DONT_SHOW;
|
||||
pdoc->flags&=~DOCF_DONT_SHOW;
|
||||
DocLock(ddoc);
|
||||
task->display_doc=pdoc;
|
||||
DocUnlock(ddoc);
|
||||
DocRst(ddoc,TRUE);
|
||||
MemCpy(ddoc->find_replace,pdoc->find_replace,sizeof(CEdFindText));
|
||||
MemCpy(&ddoc->filename,&pdoc->filename,sizeof(CEdFileName));
|
||||
ddoc->max_entries =pdoc->max_entries;
|
||||
ddoc->flags =pdoc->flags&DOCG_DBL_BUF_FLAGS | ddoc->flags&~DOCG_DBL_BUF_FLAGS;
|
||||
ddoc->left_click_link =pdoc->left_click_link;
|
||||
ddoc->right_click_link =pdoc->right_click_link;
|
||||
ddoc->user_put_data =pdoc->user_put_data;
|
||||
ddoc->user_put_key =pdoc->user_put_key;
|
||||
ddoc->user_put_s =pdoc->user_put_s;
|
||||
ddoc->desc[0](I64) =pdoc->desc[0](I64);
|
||||
ddoc->user_data =pdoc->user_data;
|
||||
task->put_doc=ddoc;
|
||||
result=TRUE;
|
||||
}
|
||||
Preempt(old_preempt);
|
||||
return okay;
|
||||
return result;
|
||||
}
|
||||
#help_index "Doc"
|
||||
@@ -4,6 +4,7 @@ I64 DocOptEntry(CDoc *,CDocEntry *doc_e)
|
||||
{
|
||||
U8 *st,*st2,**dst;
|
||||
I64 i,result=0;
|
||||
|
||||
if (doc_e->flags1&DOCEF1_LINK) {
|
||||
if (doc_e->flags1 & DOCEF1_AUX_STR &&
|
||||
Bt(doc_tag_types,doc_e->type_u8) &&
|
||||
|
||||
+11
-134
@@ -80,40 +80,7 @@ DOCEF1_DATA_IS_PTR | DOCEF1_HAS_TERMINATOR | DOCEF1_AUX_STR | DOCEF1_U64,
|
||||
//DOCT_DFT_BACKGROUND
|
||||
0,
|
||||
|
||||
//DOCT_ALT_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_LINK_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_MACRO_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_ANCHOR_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_HIDDEN_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_TREE_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_USER_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_BINARY_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_KEYWORD_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_KEYWORD2_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_COMMENT_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_QUOTE_FOREGROUND
|
||||
//DOCT_PMT
|
||||
0,
|
||||
|
||||
//DOCT_WORD_WRAP
|
||||
@@ -261,40 +228,7 @@ I64 doc_dft_flags2[DOCT_NUM_TYPES]={
|
||||
//DOCT_DFT_BACKGROUND
|
||||
0,
|
||||
|
||||
//DOCT_ALT_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_LINK_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_MACRO_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_ANCHOR_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_HIDDEN_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_TREE_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_USER_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_BINARY_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_KEYWORD_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_KEYWORD2_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_COMMENT_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_QUOTE_FOREGROUND
|
||||
//DOCT_PMT
|
||||
0,
|
||||
|
||||
//DOCT_WORD_WRAP
|
||||
@@ -442,40 +376,7 @@ I64 doc_dft_type_flags[DOCT_NUM_TYPES]={
|
||||
//DOCT_DFT_BACKGROUND
|
||||
0,
|
||||
|
||||
//DOCT_ALT_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_LINK_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_MACRO_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_ANCHOR_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_HIDDEN_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_TREE_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_USER_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_BINARY_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_KEYWORD_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_KEYWORD2_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_COMMENT_FOREGROUND
|
||||
0,
|
||||
|
||||
//DOCT_QUOTE_FOREGROUND
|
||||
//DOCT_PMT
|
||||
0,
|
||||
|
||||
//DOCT_WORD_WRAP
|
||||
@@ -703,18 +604,6 @@ U8 *Doc2PlainText(CDoc *doc,CDocEntry *doc_e)
|
||||
case DOCT_BACKGROUND:
|
||||
case DOCT_DFT_FOREGROUND:
|
||||
case DOCT_DFT_BACKGROUND:
|
||||
case DOCT_ALT_FOREGROUND:
|
||||
case DOCT_LINK_FOREGROUND:
|
||||
case DOCT_MACRO_FOREGROUND:
|
||||
case DOCT_ANCHOR_FOREGROUND:
|
||||
case DOCT_HIDDEN_FOREGROUND:
|
||||
case DOCT_TREE_FOREGROUND:
|
||||
case DOCT_USER_FOREGROUND:
|
||||
case DOCT_BINARY_FOREGROUND:
|
||||
case DOCT_KEYWORD_FOREGROUND:
|
||||
case DOCT_KEYWORD2_FOREGROUND:
|
||||
case DOCT_COMMENT_FOREGROUND:
|
||||
case DOCT_QUOTE_FOREGROUND:
|
||||
case DOCT_WORD_WRAP:
|
||||
case DOCT_HIGHLIGHT:
|
||||
case DOCT_LOCK_TO_PAGE:
|
||||
@@ -907,18 +796,6 @@ CDocEntry *PrsDollarCmd(CDoc *doc,U8 *st)
|
||||
case DOCT_BACKGROUND:
|
||||
case DOCT_DFT_FOREGROUND:
|
||||
case DOCT_DFT_BACKGROUND:
|
||||
case DOCT_ALT_FOREGROUND:
|
||||
case DOCT_LINK_FOREGROUND:
|
||||
case DOCT_MACRO_FOREGROUND:
|
||||
case DOCT_ANCHOR_FOREGROUND:
|
||||
case DOCT_HIDDEN_FOREGROUND:
|
||||
case DOCT_TREE_FOREGROUND:
|
||||
case DOCT_USER_FOREGROUND:
|
||||
case DOCT_BINARY_FOREGROUND:
|
||||
case DOCT_KEYWORD_FOREGROUND:
|
||||
case DOCT_KEYWORD2_FOREGROUND:
|
||||
case DOCT_COMMENT_FOREGROUND:
|
||||
case DOCT_QUOTE_FOREGROUND:
|
||||
case DOCT_WORD_WRAP:
|
||||
case DOCT_HIGHLIGHT:
|
||||
case DOCT_LOCK_TO_PAGE:
|
||||
@@ -1077,7 +954,7 @@ public U0 DocIns(CDoc *doc,CDocEntry *doc_e)
|
||||
!(doc_ce->flags1&(DOCEF1_TAG_CB|DOCEF1_DEFINE|DOCEF1_HTML_LINK)) &&
|
||||
!(doc_ce->flags2&DOCEF2_BIN_PTR_LINK) &&
|
||||
doc->cur_data_col<doc_ce->max_col) {
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_ne=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_ne->type=DOCT_TEXT|doc_ce->type&0xFFFFFF00;
|
||||
doc_ne->x=doc_ce->x;
|
||||
doc_ne->y=doc_ce->y;
|
||||
@@ -1116,7 +993,7 @@ public CDocEntry *DocPutS(CDoc *doc,U8 *st)
|
||||
Bool unlock;
|
||||
I64 j;
|
||||
CDocEntry *doc_e=NULL,*result=NULL,*doc_ce;
|
||||
if (!st || !doc || doc->doc_signature!=DOC_SIGNATURE_VAL)
|
||||
if (!st || !doc && !(doc=DocPut) || doc->doc_signature!=DOC_SIGNATURE_VAL)
|
||||
return NULL;
|
||||
unlock=DocLock(doc);
|
||||
if (doc->flags & DOCF_PLAIN_TEXT_WITH_TABS)
|
||||
@@ -1134,7 +1011,7 @@ public CDocEntry *DocPutS(CDoc *doc,U8 *st)
|
||||
ptr--;
|
||||
if (!ch) {
|
||||
if (j=ptr-ptr2) {
|
||||
doc_e=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_e->type=DOCT_TEXT | doc->settings_root.dft_text_attr << 8;
|
||||
if (doc->flags & DOCF_NO_CURSOR) {
|
||||
src=MAlloc(j+1);
|
||||
@@ -1153,7 +1030,7 @@ public CDocEntry *DocPutS(CDoc *doc,U8 *st)
|
||||
} else {
|
||||
if (j=ptr-ptr2) {
|
||||
*ptr=0;
|
||||
doc_e=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_e->type=DOCT_TEXT | doc->settings_root.dft_text_attr << 8;
|
||||
if (doc->flags & DOCF_NO_CURSOR) {
|
||||
src=MAlloc(j+1);
|
||||
@@ -1210,7 +1087,7 @@ public CDocEntry *DocPutS(CDoc *doc,U8 *st)
|
||||
ptr2++;
|
||||
}
|
||||
if (ptr==ptr2) {
|
||||
doc_e=CAlloc(sizeof(CDocEntryBase)+sizeof(U8 *),doc->mem_task);
|
||||
doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_e->type=DOCT_TEXT | doc->settings_root.dft_text_attr << 8;
|
||||
doc_e->max_col=1;
|
||||
if (doc->flags & DOCF_DBL_DOLLARS)
|
||||
@@ -1248,12 +1125,12 @@ public CDocEntry *DocPutS(CDoc *doc,U8 *st)
|
||||
doc_e=CAlloc(sizeof(CDocEntryBase),doc->mem_task);
|
||||
doc_e->type=DOCT_NEW_LINE | doc->settings_root.dft_text_attr << 8;
|
||||
DocIns(doc,doc_e);
|
||||
if (ch==CH_CARRIAGE_RETURN)
|
||||
while (*ptr==CH_CARRIAGE_RETURN)
|
||||
if (ch=='\r')
|
||||
while (*ptr=='\r')
|
||||
ptr++;
|
||||
if (*ptr=='\n')
|
||||
ptr++;
|
||||
while (*ptr==CH_CARRIAGE_RETURN)
|
||||
while (*ptr=='\r')
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
+115
-78
@@ -5,27 +5,26 @@ public I64 DocEntryRun(CDoc *doc,CDocEntry *doc_e,Bool exited)
|
||||
DocLock(doc);
|
||||
if (!exited) {
|
||||
if (doc_e->flags1 & DOCEF1_ESC) {
|
||||
Msg(MSG_KEY_DOWN,CH_ESC,0,1<<TASKCf_DONT_FILTER);
|
||||
Msg(MSG_KEY_DOWN,CH_ESC,0,1<<SVCf_DONT_FILTER);
|
||||
return 0;
|
||||
} if (doc_e->flags1 & DOCEF1_QUIT) {
|
||||
Msg(MSG_KEY_DOWN,CH_SHIFT_ESC,0,1<<TASKCf_DONT_FILTER);
|
||||
Msg(MSG_KEY_DOWN,CH_SHIFT_ESC,0,1<<SVCf_DONT_FILTER);
|
||||
return 0;
|
||||
} else if (doc_e->flags1 & DOCEF1_CHECK_COLLAPSABLE)
|
||||
doc_e->flags1^=DOCEF1_CHECKED_COLLAPSED;
|
||||
}
|
||||
doc->best_d=MAX_I64;
|
||||
try {
|
||||
if (ch==CH_SPACE) {
|
||||
if (doc_e->flags1 & DOCEF1_LINK && doc->left_click_link)
|
||||
result=(*doc->left_click_link)(doc,doc_e);
|
||||
if (doc_e->flags1 & DOCEF1_LEFT_EXP) {
|
||||
result=doc_e->left_exp;
|
||||
Msg(MSG_CMD,result,0,1<<TASKCf_DONT_FILTER);
|
||||
Msg(MSG_CMD,result,0,1<<SVCf_DONT_FILTER);
|
||||
}
|
||||
if (doc_e->flags1 & DOCEF1_LEFT_CB && doc_e->left_cb) {
|
||||
DocUnlock(doc);
|
||||
result=(*doc_e->left_cb)(doc,doc_e);
|
||||
Msg(MSG_CMD,result,0,1<<TASKCf_DONT_FILTER);
|
||||
Msg(MSG_CMD,result,0,1<<SVCf_DONT_FILTER);
|
||||
}
|
||||
if (doc_e->flags1 & DOCEF1_LEFT_MACRO) {
|
||||
if (doc_e->flags1 & DOCEF1_POPUP) {
|
||||
@@ -45,12 +44,12 @@ public I64 DocEntryRun(CDoc *doc,CDocEntry *doc_e,Bool exited)
|
||||
result=(*doc->right_click_link)(doc,doc_e);
|
||||
if (doc_e->flags1 & DOCEF1_RIGHT_EXP) {
|
||||
result=doc_e->right_exp;
|
||||
Msg(MSG_CMD,result,0,1<<TASKCf_DONT_FILTER);
|
||||
Msg(MSG_CMD,result,0,1<<SVCf_DONT_FILTER);
|
||||
}
|
||||
if (doc_e->flags1 & DOCEF1_RIGHT_CB && doc_e->right_cb) {
|
||||
DocUnlock(doc);
|
||||
result=(*doc_e->right_cb)(doc,doc_e);
|
||||
Msg(MSG_CMD,result,0,1<<TASKCf_DONT_FILTER);
|
||||
Msg(MSG_CMD,result,0,1<<SVCf_DONT_FILTER);
|
||||
}
|
||||
if (doc_e->flags1 & DOCEF1_RIGHT_MACRO) {
|
||||
if (doc_e->flags1 & DOCEF1_POPUP) {
|
||||
@@ -77,7 +76,10 @@ U8 *EdOverStrikeCB(CDoc *,CDocEntry *doc_e,CTask *mem_task)
|
||||
{
|
||||
CDoc *doc=doc_e->user_data;
|
||||
U8 *st=MAlloc(8,mem_task);
|
||||
*st=doc->flags & DOCF_OVERSTRIKE ? 'O':'Ä';
|
||||
if (doc->flags & DOCF_OVERSTRIKE)
|
||||
*st='O';
|
||||
else
|
||||
*st='Ä';
|
||||
st[1]=0;
|
||||
return st;
|
||||
}
|
||||
@@ -86,7 +88,10 @@ U8 *EdFilterCB(CDoc *,CDocEntry *doc_e,CTask *mem_task)
|
||||
{
|
||||
CDoc *doc=doc_e->user_data;
|
||||
U8 *st=MAlloc(8,mem_task);
|
||||
*st=doc->find_replace->filter_lines ? 'F':'Ä';
|
||||
if (doc->find_replace->filter_lines)
|
||||
*st='F';
|
||||
else
|
||||
*st='Ä';
|
||||
st[1]=0;
|
||||
return st;
|
||||
}
|
||||
@@ -95,7 +100,10 @@ U8 *EdDollarCB(CDoc *,CDocEntry *doc_e,CTask *mem_task)
|
||||
{
|
||||
CDoc *doc=doc_e->user_data;
|
||||
U8 *st=MAlloc(8,mem_task);
|
||||
*st=doc->flags & DOCF_IN_DOLLAR ? '$$':'Ä';
|
||||
if (doc->flags & DOCF_IN_DOLLAR)
|
||||
*st='$$';
|
||||
else
|
||||
*st='Ä';
|
||||
st[1]=0;
|
||||
return st;
|
||||
}
|
||||
@@ -115,7 +123,10 @@ U8 *EdQuotesCB(CDoc *,CDocEntry *,CTask *mem_task)
|
||||
{
|
||||
CLex *lx=mem_task->last_lex;
|
||||
U8 *st=MAlloc(8,mem_task);
|
||||
*st=lx->flags & LF_IN_QUOTES ? '"':'Ä';
|
||||
if (lx->flags & LF_IN_QUOTES)
|
||||
*st='"';
|
||||
else
|
||||
*st='Ä';
|
||||
st[1]=0;
|
||||
return st;
|
||||
}
|
||||
@@ -124,7 +135,10 @@ U8 *EdBracesCB(CDoc *,CDocEntry *,CTask *mem_task)
|
||||
{
|
||||
CLex *lx=mem_task->last_lex;
|
||||
U8 *st=MAlloc(8,mem_task);
|
||||
*st=lx->braces_cnt ? '}':'Ä';
|
||||
if (lx->braces_cnt)
|
||||
*st='}';
|
||||
else
|
||||
*st='Ä';
|
||||
st[1]=0;
|
||||
return st;
|
||||
}
|
||||
@@ -133,7 +147,10 @@ U8 *EdSemicolonCB(CDoc *,CDocEntry *,CTask *mem_task)
|
||||
{
|
||||
CLex *lx=mem_task->last_lex;
|
||||
U8 *st=MAlloc(8,mem_task);
|
||||
*st=lx->statement_cnt ? ';':'Ä';
|
||||
if (lx->statement_cnt)
|
||||
*st=';';
|
||||
else
|
||||
*st='Ä';
|
||||
st[1]=0;
|
||||
return st;
|
||||
}
|
||||
@@ -157,12 +174,12 @@ public I64 DocGetKey(I64 *_sc=NULL)
|
||||
Bool cont,old_preempt=IsPreempt;
|
||||
do {
|
||||
ch=GetKey(&sc,TRUE);
|
||||
DocRecalc(DocCur);
|
||||
DocRecalc(DocPut);
|
||||
cont=FALSE;
|
||||
if (ch==CH_ESC || ch==CH_SHIFT_ESC) { //Check for exit filter mode
|
||||
Preempt(OFF);
|
||||
if (DocCur && DocCur->find_replace->filter_lines) {
|
||||
EdUndoFilter(DocCur);
|
||||
if (DocPut && DocPut->find_replace->filter_lines) {
|
||||
EdUndoFilter(DocPut);
|
||||
cont=TRUE;
|
||||
}
|
||||
Preempt(old_preempt);
|
||||
@@ -184,72 +201,78 @@ public Bool View()
|
||||
#help_index "Doc"
|
||||
public Bool DocDo(CDoc *doc,I64 doc_flags=0)
|
||||
{
|
||||
CDoc *old_doc=DocCur,*old_aux_doc=DocAux,*aux;
|
||||
CDoc *old_put_doc =DocPut,
|
||||
*old_display_doc=DocDisplay,
|
||||
*old_border_doc =DocBorder,*bdoc;
|
||||
CDocEntry *doc_e;
|
||||
I64 old_attr=Fs->text_attr,
|
||||
old_top =Fs->win_top, old_bottom=Fs->win_bottom,
|
||||
old_left=Fs->win_left,old_right =Fs->win_right;
|
||||
old_left=Fs->win_left,old_right =Fs->win_right,
|
||||
old_title_src=Fs->title_src;
|
||||
Bool result,unlock,old_preempt;
|
||||
|
||||
U8 *old_task_title;
|
||||
if (doc_flags&DOF_WIN_MAX)
|
||||
WinMax;
|
||||
|
||||
unlock=DocLock(doc);
|
||||
doc->win_task=Fs;
|
||||
aux=DocNew;
|
||||
aux->flags|=DOCF_AUX_DOC;
|
||||
aux->settings_root.dft_text_attr=Fs->border_attr;
|
||||
DocPutS(aux,"$$CM+TY+LX+NC,0,-1$$");
|
||||
bdoc=DocNew;
|
||||
bdoc->flags|=DOCF_BORDER_DOC;
|
||||
DocPutS(bdoc,"$$CM+TY+LX+NC,0,-1$$");
|
||||
if (Bt(&Fs->display_flags,DISPLAYf_HAS_CLOSE_WIN))
|
||||
DocPutS(aux,"$$TX+RX+BD,\"[X]\"$$");
|
||||
DocPutS(aux,"$$BK,1$$$$TX+LX+BD,\"MENU\"$$$$BK,0$$");
|
||||
DocPutS(bdoc,"$$TX+RX+BD,\"[X]\"$$");
|
||||
DocPutS(bdoc,"$$BK,1$$$$TX+LX+BD,\"MENU\"$$$$BK,0$$");
|
||||
|
||||
doc_e=DocPutS(aux,"$$DA-T-P+BD+RD+CX+SCX+IV,256,\"%s...\",16$$");
|
||||
doc_e->data=&doc->filename.name;
|
||||
old_task_title=StrNew(Fs->task_title);
|
||||
if (Fs->title_src!=TTS_LOCKED_CONST) {
|
||||
Fs->title_src=TTS_ED_FILENAME;
|
||||
MemCpy(Fs->task_title,doc->filename.name,TASK_TITLE_LEN);
|
||||
}
|
||||
doc_e=DocPutS(bdoc,"$$DA-T-P+BD+RD+CX+SCX+IV,140,\"%s...\",16$$");
|
||||
doc_e->data=&Fs->task_title;
|
||||
DocDataFmt(doc_e);
|
||||
|
||||
if (doc->flags & DOCF_ALLOW_UNDO) {
|
||||
DocPutS(aux,"$$CM+BY+LX+NC,1,1$$");
|
||||
doc_e=DocPutS(aux,"$$DA+BD+RD-T,32,\"Undo:%03d\"$$\n");
|
||||
DocPutS(bdoc,"$$CM+BY+LX+NC,1,1$$");
|
||||
doc_e=DocPutS(bdoc,"$$DA+BD+RD-T,32,\"Undo:%03d\"$$\n");
|
||||
doc_e->data=&doc->undo_cnt;
|
||||
DocDataFmt(doc_e);
|
||||
}
|
||||
|
||||
DocPutS(aux,"$$CM+BY+RX+NC,-30,1$$");
|
||||
doc_e=DocPutS(aux,"$$TX+BD+TC,\" \"$$");
|
||||
DocPutS(bdoc,"$$CM+BY+RX+NC,-30,1$$");
|
||||
doc_e=DocPutS(bdoc,"$$TX+BD+TC,\" \"$$");
|
||||
doc_e->user_data=doc;
|
||||
doc_e->tag_cb=&EdMoreCB;
|
||||
doc_e=DocPutS(aux,"$$TX+BD+TC,\" \"$$");
|
||||
doc_e=DocPutS(bdoc,"$$TX+BD+TC,\" \"$$");
|
||||
doc_e->user_data=doc;
|
||||
doc_e->tag_cb=&EdDollarTypeCB;
|
||||
doc_e=DocPutS(aux,"$$TX+BD+TC,\" \"$$");
|
||||
doc_e=DocPutS(bdoc,"$$TX+BD+TC,\" \"$$");
|
||||
doc_e->user_data=doc;
|
||||
doc_e->tag_cb=&EdFilterCB;
|
||||
doc_e=DocPutS(aux,"$$TX+BD+TC,\" \"$$");
|
||||
doc_e=DocPutS(bdoc,"$$TX+BD+TC,\" \"$$");
|
||||
doc_e->user_data=doc;
|
||||
doc_e->tag_cb=&EdOverStrikeCB;
|
||||
doc_e=DocPutS(aux,"$$TX+BD+TC,\" \"$$");
|
||||
doc_e=DocPutS(bdoc,"$$TX+BD+TC,\" \"$$");
|
||||
doc_e->user_data=doc;
|
||||
doc_e->tag_cb=&EdDollarCB;
|
||||
doc_e=DocPutS(aux,"$$DA+BD+RD-T,32,\"Line:%04d \"$$");
|
||||
doc_e=DocPutS(bdoc,"$$DA+BD+RD-T,32,\"Line:%04d \"$$");
|
||||
doc_e->data=&doc->line;
|
||||
DocDataFmt(doc_e);
|
||||
doc_e=DocPutS(aux,"$$DA+BD+RD-T,32,\"Col:%04d\"$$\n");
|
||||
doc_e=DocPutS(bdoc,"$$DA+BD+RD-T,32,\"Col:%04d\"$$\n");
|
||||
doc_e->data=&doc->col;
|
||||
DocDataFmt(doc_e);
|
||||
|
||||
DocRecalc(aux);
|
||||
DocRecalc(bdoc);
|
||||
DocRecalc(doc);
|
||||
if (!(doc_flags&DOF_DONT_HOME))
|
||||
DocHome(doc);
|
||||
old_preempt=Preempt(OFF);
|
||||
DocQueRem(old_aux_doc);
|
||||
DocQueInsRev(aux,Fs->next_doc);
|
||||
if (doc!=old_doc)
|
||||
doc->parent_doc=old_doc;
|
||||
DocQueRem(old_doc);
|
||||
DocQueIns(doc,Fs->last_doc);
|
||||
Fs->text_attr=doc->settings_root.dft_text_attr;
|
||||
Fs->border_doc=bdoc;
|
||||
if (doc!=old_display_doc)
|
||||
doc->parent_doc=old_display_doc;
|
||||
Fs->put_doc=Fs->display_doc=doc;
|
||||
if (!(doc_flags&DOF_DONT_TEXT_ATTR))
|
||||
Fs->text_attr=DOC_ATTR_DFT_TEXT;
|
||||
LBts(&Fs->display_flags,DISPLAYf_SHOW);
|
||||
WinZBufUpdate;
|
||||
if (doc_flags&DOF_MIN_SIZE)
|
||||
@@ -274,13 +297,16 @@ public Bool DocDo(CDoc *doc,I64 doc_flags=0)
|
||||
}
|
||||
if (unlock)
|
||||
DocUnlock(doc);
|
||||
|
||||
DocQueRem(aux);
|
||||
DocQueInsRev(old_aux_doc,Fs->next_doc);
|
||||
DocDel(aux);
|
||||
DocQueRem(doc);
|
||||
DocQueIns(old_doc,Fs->last_doc);
|
||||
Fs->text_attr=old_attr;
|
||||
Fs->border_doc =old_border_doc;
|
||||
Fs->display_doc=old_display_doc;
|
||||
Fs->put_doc =old_put_doc;
|
||||
Fs->text_attr =old_attr;
|
||||
if (Fs->title_src!=TTS_LOCKED_CONST) {
|
||||
Fs->title_src =old_title_src;
|
||||
StrCpy(Fs->task_title,old_task_title);
|
||||
}
|
||||
Free(old_task_title);
|
||||
DocDel(bdoc);
|
||||
if (doc_flags&DOF_MIN_SIZE) {
|
||||
SetWinHorz(old_left,old_right);
|
||||
SetWinVert(old_top,old_bottom);
|
||||
@@ -302,6 +328,7 @@ public Bool DocFormDo(U8 *D,U8 *class_name,
|
||||
CHashClass *tempc;
|
||||
CDoc *doc;
|
||||
Bool result=FALSE;
|
||||
I64 old_border_src=Fs->border_src;
|
||||
if (!(tempc=HashFind(class_name,Fs->hash_table,HTT_CLASS)))
|
||||
return FALSE;
|
||||
doc=DocNew;
|
||||
@@ -322,7 +349,7 @@ public Bool DocFormDo(U8 *D,U8 *class_name,
|
||||
}
|
||||
if (footer) DocPutS(doc,footer);
|
||||
if (doc->root.next!=doc) {
|
||||
doc->flags&=~(DOCF_ATTR_BY_PRT | DOCF_ATTR_BY_FILENAME);
|
||||
Fs->border_src=BDS_CONST;
|
||||
DocRecalc(doc);
|
||||
if (DocDo(doc,doc_flags)) {
|
||||
doc_e=doc->cur_entry;
|
||||
@@ -334,6 +361,7 @@ public Bool DocFormDo(U8 *D,U8 *class_name,
|
||||
}
|
||||
}
|
||||
DocDel(doc);
|
||||
Fs->border_src=old_border_src;
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -348,12 +376,12 @@ public I64 DocMenuDo(CDoc *m,I64 doc_flags=0)
|
||||
U8 *old_end_cb=Fs->task_end_cb;
|
||||
Bool old_break_shift_esc=LBts(&Fs->task_flags,TASKf_BREAK_TO_SHIFT_ESC);
|
||||
CDocEntry *doc_e;
|
||||
I64 old_doc_flags=m->flags,result=DOCM_CANCEL;
|
||||
I64 old_border_src=Fs->border_src,result=DOCM_CANCEL;
|
||||
Fs->task_end_cb=&DocMenuDoEndTaskCB;
|
||||
try {
|
||||
if (m) {
|
||||
StrCpy(m->desc,"Menu");
|
||||
m->flags&=~(DOCF_ATTR_BY_PRT | DOCF_ATTR_BY_FILENAME);
|
||||
Fs->border_src=BDS_CONST;
|
||||
if (DocDo(m,doc_flags)) {
|
||||
doc_e=m->cur_entry;
|
||||
if (doc_e!=m) {
|
||||
@@ -369,8 +397,8 @@ public I64 DocMenuDo(CDoc *m,I64 doc_flags=0)
|
||||
Fs->catch_except=TRUE;
|
||||
}
|
||||
}
|
||||
m->flags|=old_doc_flags&(DOCF_ATTR_BY_PRT | DOCF_ATTR_BY_FILENAME);
|
||||
LBEqu(&Fs->task_flags,TASKf_BREAK_TO_SHIFT_ESC,old_break_shift_esc);
|
||||
Fs->border_src=old_border_src;
|
||||
Fs->task_end_cb=old_end_cb;
|
||||
return result;
|
||||
}
|
||||
@@ -378,21 +406,20 @@ public I64 DocMenuDo(CDoc *m,I64 doc_flags=0)
|
||||
#help_index "Doc"
|
||||
public I64 PopUp(U8 *msg,CTask *parent=NULL,CTask **_pu_task=NULL)
|
||||
{
|
||||
I64 result=0;
|
||||
I64 result;
|
||||
CSrvCmd *tempc;
|
||||
Bool old_preempt=Preempt(OFF);
|
||||
CTaskCmd *tempc;
|
||||
CTask *task=Spawn(&ServantUserCmdLine,NULL,"System",parent);
|
||||
CTask *task=Spawn(&SrvUserCmdLine,NULL,"System",,parent);
|
||||
if (!parent) {
|
||||
TaskRqstQue(task,parent,msg,1<<TASKCf_EXIT_ON_COMPLETE);
|
||||
TaskExeStrQue(task,parent,msg,1<<SVCf_EXIT_ON_COMPLETE|1<<SVCf_FREE_ON_COMPLETE);
|
||||
if (_pu_task) *_pu_task=task;
|
||||
Preempt(old_preempt);
|
||||
return 0;
|
||||
} else {
|
||||
Fs->popup_task=task;
|
||||
tempc=TaskRqstQue(task,parent,msg,
|
||||
1<<TASKCf_WAKE_MASTER | 1<<TASKCf_FOCUS_MASTER);
|
||||
tempc=TaskExeStrQue(task,parent,msg,1<<SVCf_WAKE_MASTER|1<<SVCf_FOCUS_MASTER);
|
||||
if (_pu_task) *_pu_task=task;
|
||||
GetRqstResult(tempc,&result);
|
||||
ScanResult(tempc,&result);
|
||||
Fs->popup_task=NULL;
|
||||
Kill(task);
|
||||
if (_pu_task) *_pu_task=NULL;
|
||||
@@ -405,8 +432,8 @@ public I64 PopUp(U8 *msg,CTask *parent=NULL,CTask **_pu_task=NULL)
|
||||
public CTask *PopUpViewDoc(CDoc *doc,I64 doc_flags=0)
|
||||
{
|
||||
U8 *buf=MSPrintF("if (!IsSysDeterministic) Preempt(ON);DocDo(0x%X,0x%X);",doc,doc_flags);
|
||||
CTask *task=Spawn(&ServantUserCmdLine,NULL,"View",Fs);
|
||||
TaskRqstQue(task,NULL,buf,1<<TASKCf_EXIT_ON_COMPLETE);
|
||||
CTask *task=Spawn(&SrvUserCmdLine,NULL,"View",,Fs);
|
||||
TaskExeStrQue(task,NULL,buf,1<<SVCf_EXIT_ON_COMPLETE|1<<SVCf_FREE_ON_COMPLETE);
|
||||
Free(buf);
|
||||
return task;
|
||||
}
|
||||
@@ -432,13 +459,13 @@ public CTask *PopUpViewStr(U8 *msg)
|
||||
public I64 PopUpMenu(CDoc *doc,I64 doc_flags=0)
|
||||
{
|
||||
doc->flags|=DOCF_MIN_SIZE | DOCF_FORM;
|
||||
return ServantUser("DocMenuDo(0x%X,0x%X);",doc,doc_flags);
|
||||
return SrvUser("DocMenuDo(0x%X,0x%X);",doc,doc_flags);
|
||||
}
|
||||
|
||||
public Bool PopUpForm(U8 *D,U8 *class_name,I64 doc_flags=DOF_MIN_SIZE,
|
||||
U8 *header=NULL,U8 *footer=NULL)
|
||||
{
|
||||
return ServantUser("DocFormDo(0x%X,0x%X,0x%X,0x%X,0x%X);",D,class_name,
|
||||
return SrvUser("DocFormDo(0x%X,0x%X,0x%X,0x%X,0x%X);",D,class_name,
|
||||
doc_flags,header,footer);
|
||||
}
|
||||
|
||||
@@ -495,7 +522,7 @@ public U8 *PopUpFileName(U8 *dft=NULL,I64 doc_flags=0)
|
||||
}
|
||||
|
||||
#help_index "Doc"
|
||||
public Bool PopUpCd()
|
||||
Bool PopUpCd()
|
||||
{
|
||||
Bool result;
|
||||
U8 *st=PopUpPickDir;
|
||||
@@ -512,6 +539,7 @@ public U8 *PopUpPickLstEntry(U8 *lst)
|
||||
{
|
||||
I64 i=0;
|
||||
CDoc *doc=DocNew;
|
||||
DocPutS(doc,"$$FG,LTBLUE$$");
|
||||
while (*lst) {
|
||||
if (*lst=='@') { //Check for '@' alias lst entry
|
||||
i--;
|
||||
@@ -623,6 +651,7 @@ public I64 PopUpRangeI64(I64 lo,I64 hi,I64 step=1,U8 *header=NULL,U8 *footer=NUL
|
||||
CDoc *doc=DocNew;
|
||||
if (header)
|
||||
DocPutS(doc,header);
|
||||
DocPutS(doc,"$$FG,LTBLUE$$");
|
||||
for (i=lo;i<=hi;i+=step)
|
||||
DocPrintF(doc,"$$MU,\"%d\",%d$$\n",i,i);
|
||||
if (footer)
|
||||
@@ -641,6 +670,7 @@ public F64 PopUpRangeF64(F64 lo,F64 hi,F64 step,
|
||||
CDoc *doc=DocNew;
|
||||
if (header)
|
||||
DocPutS(doc,header);
|
||||
DocPutS(doc,"$$FG,LTBLUE$$");
|
||||
for (d=lo;d<=hi;d+=step) {
|
||||
SPrintF(buf,fmt,d);
|
||||
DocPrintF(doc,"$$MU,\"%s\",0x%X$$\n",buf,d);
|
||||
@@ -661,6 +691,7 @@ public F64 PopUpRangeF64Exp(F64 lo,F64 hi,F64 factor,
|
||||
CDoc *doc=DocNew;
|
||||
if (header)
|
||||
DocPutS(doc,header);
|
||||
DocPutS(doc,"$$FG,LTBLUE$$");
|
||||
for (d=lo;d<=hi;d*=factor) {
|
||||
SPrintF(buf,fmt,d);
|
||||
DocPrintF(doc,"$$MU,\"%s\",0x%X$$\n",buf,d);
|
||||
@@ -678,7 +709,7 @@ public F64 PopUpRangeF64Log(F64 lo,F64 hi,I64 steps,
|
||||
return PopUpRangeF64Exp(lo,hi,Exp(Ln(hi/lo)/(steps-1)),fmt,header,footer);
|
||||
}
|
||||
|
||||
#help_index "Task/Rqsts"
|
||||
#help_index "Task/Requests"
|
||||
public I64 AdamFile(U8 *filename,Bool warn_ext=TRUE)
|
||||
{
|
||||
Bool okay=TRUE;
|
||||
@@ -725,8 +756,7 @@ public I64 PopUpColor(U8 *header=NULL,Bool allow_transparent=TRUE,Bool allow_dft
|
||||
if (header)
|
||||
DocPutS(doc,header);
|
||||
if (allow_transparent)
|
||||
DocPutS(doc,"$$BG,WHITE$$$$MU,\"TRANSPARENT\",COLOR_TRANSPARENT$$$$BG$$\n");
|
||||
DocPutS(doc,"$$FM,BLACK$$");
|
||||
DocPutS(doc,"$$MU,\"TRANSPARENT\",COLOR_TRANSPARENT$$\n");
|
||||
for (i=0;i<16;i++)
|
||||
DocPrintF(doc,"$$BG,%d$$$$MU,\"__%-8Z__\",%d$$$$BG$$\n",i,i,"ST_COLORS",i);
|
||||
if (allow_dft)
|
||||
@@ -736,18 +766,25 @@ public I64 PopUpColor(U8 *header=NULL,Bool allow_transparent=TRUE,Bool allow_dft
|
||||
return i;
|
||||
}
|
||||
|
||||
public I64 PopUpLightingColor(U8 *header=NULL)
|
||||
public I64 PopUpColorLighting(U8 *header=NULL)
|
||||
{
|
||||
I64 i;
|
||||
CDoc *doc=DocNew;
|
||||
if (header)
|
||||
DocPutS(doc,header);
|
||||
DocPutS(doc,"\n$$FM,BLACK$$Single-Sided Full-Range Double-Sided Full-Range\n");
|
||||
DocPutS(doc,"\nSingle-Sided means both sides same color."
|
||||
"\nDouble-Sided means back side darker."
|
||||
"\n"
|
||||
"\nHalf-Range means 0 to [0,7]"
|
||||
"\n [8,15]-8 to [8,15]"
|
||||
"\nFull-Range means 0 to [0,7] to [0,7]+8"
|
||||
"\n");
|
||||
DocPutS(doc,"\n$$FG,LTPURPLE$$Single-Sided Full-Range Double-Sided Full-Range\n$$FG,BLACK$$");
|
||||
for (i=0;i<8;i++) {
|
||||
DocPrintF(doc,"$$BG,%d$$$$MU,\"__%-19Z__\",%d$$$$BG$$ ",i,i,"ST_COLORS",i);
|
||||
DocPrintF(doc,"$$BG,%d$$$$MU,\"__%-19Z__\",%d$$$$BG$$\n",i,i,"ST_COLORS",ROPF_TWO_SIDED+i);
|
||||
}
|
||||
DocPutS(doc,"\nSingle-Sided Half-Range Double-Sided Half-Range\n");
|
||||
DocPutS(doc,"\n$$FG,LTPURPLE$$Single-Sided Half-Range Double-Sided Half-Range\n$$FG,BLACK$$");
|
||||
for (i=0;i<16;i++) {
|
||||
DocPrintF(doc,"$$BG,%d$$$$MU,\"__%-19Z__\",%d$$$$BG$$ ",i,i,"ST_COLORS",ROPF_HALF_RANGE_COLOR+i);
|
||||
DocPrintF(doc,"$$BG,%d$$$$MU,\"__%-19Z__\",%d$$$$BG$$\n",i,i,"ST_COLORS",ROPF_TWO_SIDED+ROPF_HALF_RANGE_COLOR+i);
|
||||
@@ -806,7 +843,7 @@ Bool PopUpTransform(I64 *r)
|
||||
U0 DrawIt(CTask *task,CDC *dc)
|
||||
{
|
||||
I64 i,j,i1,j1;
|
||||
CDoc *doc=DocCur(task);
|
||||
CDoc *doc=DocPut(task);
|
||||
for (j=0;j<17;j++)
|
||||
for (i=0;i<17;i++) {
|
||||
if (j<16)
|
||||
@@ -831,8 +868,8 @@ I64 DitherColorDo(U8 *header=NULL)
|
||||
I64 msg_code,p1,p2,result=-1,i,j;
|
||||
DocClear;
|
||||
"" header;
|
||||
DocRecalc(DocCur);
|
||||
NamedFramePtrAdd("DitherDoFrame",(DocCur->max_y+1)*FONT_HEIGHT);
|
||||
DocRecalc(DocPut);
|
||||
NamedFramePtrAdd("DitherDoFrame",(DocPut->max_y+1)*FONT_HEIGHT);
|
||||
SettingsPush; //See $LK,"SettingsPush","MN:SettingsPush"$
|
||||
Fs->draw_it=&DrawIt;
|
||||
do {
|
||||
@@ -857,7 +894,7 @@ dcd_done:
|
||||
return result;
|
||||
}
|
||||
|
||||
public I64 PopUpDitherColor(U8 *header=NULL)
|
||||
public I64 PopUpColorDither(U8 *header=NULL)
|
||||
{
|
||||
U8 buf[136];
|
||||
SPrintF(buf,"DitherColorDo(0x%X);",header);
|
||||
|
||||
+147
-289
@@ -24,14 +24,14 @@ public U0 DocCenter(CDoc *doc=NULL,I64 recalc=DOC_RECALC_ALL)
|
||||
Bool unlock;
|
||||
CTask *task;
|
||||
if (!doc) {
|
||||
doc=DocCur;
|
||||
doc=DocPut;
|
||||
if (!doc)
|
||||
return;
|
||||
}
|
||||
unlock=DocLock(doc);
|
||||
task=doc->win_task;
|
||||
DocRecalc(doc,FALSE,recalc);
|
||||
if (!(doc->flags&DOCF_AUX_DOC))
|
||||
if (!(doc->flags&DOCF_BORDER_DOC))
|
||||
doc->cur_top_line_num=doc->y-(task->win_height+1)>>1;
|
||||
LockToPage(doc);
|
||||
if (unlock)
|
||||
@@ -103,23 +103,23 @@ U0 DocBorderLstDraw(CDoc *doc)
|
||||
}
|
||||
|
||||
U8 doc_spaces[9]=
|
||||
{0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0};
|
||||
{CH_SPACE,CH_SPACE,CH_SPACE,CH_SPACE,CH_SPACE,CH_SPACE,CH_SPACE,CH_SPACE,0};
|
||||
|
||||
Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC_ALL)
|
||||
{
|
||||
I64 i,ii,j,k,x,x0,y,y0,D,d2,col,col2,best_col=0,best_d=MAX_I64,xx,yy,zz,
|
||||
num_entries=0,ijif,cur_u8_attr,temp_u32_attr,
|
||||
hide_collapsed[2],
|
||||
cursor_y=MIN_I64,left_margin,right_margin,
|
||||
y_plot_top,y_plot_bottom,
|
||||
top,left,bottom,right,width,height,scroll_x,scroll_y,
|
||||
pixel_top,pixel_left;
|
||||
num_entries=0,ijif,cur_u8_attr,temp_u32_attr,
|
||||
hide_collapsed[2],
|
||||
cursor_y=MIN_I64,left_margin,right_margin,
|
||||
y_plot_top,y_plot_bottom,
|
||||
top,left,bottom,right,width,height,scroll_x,scroll_y,
|
||||
pixel_top,pixel_left;
|
||||
CDocEntry reg *doc_e,reg *doc_e2,*best_do_e,*alias,*next_clear_found=NULL;
|
||||
CDocBin *tempb;
|
||||
CDocSettings *s;
|
||||
Bool del_cl,skipped_update,tree_collapsed,
|
||||
resize=FALSE,same_win,more=FALSE,find_cursor=FALSE,
|
||||
blink_flag,full_refresh=TRUE,unlock;
|
||||
resize=FALSE,same_win,more=FALSE,find_cursor=FALSE,
|
||||
blink_flag,full_refresh=TRUE,unlock;
|
||||
CTask *win_task,*mem_task;
|
||||
CDC *dc;
|
||||
U8 *bptr,*ptr,buf[136],ch;
|
||||
@@ -154,19 +154,19 @@ Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC_ALL)
|
||||
nobound_switch (recalc) {
|
||||
case DOC_RECALC_FIND_CURSOR:
|
||||
if (win_task)
|
||||
dc=DCAlias(gr_dc,win_task);
|
||||
dc=DCAlias(gr_dc2,win_task);
|
||||
find_cursor=TRUE;
|
||||
case DOC_RECALC_ALL:
|
||||
doc->recalc_start=doc;
|
||||
break;
|
||||
case DOC_RECALC_TO_SCREEN:
|
||||
if (doc->refresh_cnt++%(ToI64(win_actual_refresh/10)+1) &&
|
||||
!Bt(&doc->flags,DOCf_DO_FULL_REFRESH) &&
|
||||
!(doc->flags&DOCF_BACKWARD_MOVEMENT))
|
||||
!Bt(&doc->flags,DOCf_DO_FULL_REFRESH) &&
|
||||
!(doc->flags&DOCF_BACKWARD_MOVEMENT))
|
||||
full_refresh=FALSE;
|
||||
doc->recalc_start=doc;
|
||||
if (win_task)
|
||||
dc=DCAlias(gr_dc,win_task);
|
||||
dc=DCAlias(gr_dc2,win_task);
|
||||
break;
|
||||
case DOC_RECALC_PARTIAL:
|
||||
DocRemSoftNewLines(doc,doc->recalc_start);
|
||||
@@ -188,14 +188,14 @@ Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC_ALL)
|
||||
left_margin=left;
|
||||
right_margin=right;
|
||||
PopFD;
|
||||
if (doc->flags&DOCF_AUX_DOC) {
|
||||
if (doc->flags&DOCF_BORDER_DOC) {
|
||||
scroll_x=0;
|
||||
scroll_y=0;
|
||||
}
|
||||
best_do_e=doc->cur_entry;
|
||||
|
||||
if (!(doc->flags&(DOCF_PLAIN_TEXT|DOCF_PLAIN_TEXT_WITH_TABS)) &&
|
||||
FilesFindMatch(FILENAME_MASK_SRC,doc->filename.name))
|
||||
FilesFindMatch(FILENAME_MASK_SRC,doc->filename.name))
|
||||
doc->flags|=DOCF_HIGHLIGHT;
|
||||
else
|
||||
doc->flags&=~DOCF_HIGHLIGHT;
|
||||
@@ -214,41 +214,44 @@ Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC_ALL)
|
||||
|
||||
hss=&win_task->horz_scroll;
|
||||
vss=&win_task->vert_scroll;
|
||||
if (doc->flags&DOCF_AUX_DOC) {
|
||||
if (doc->flags&DOCF_BORDER_DOC) {
|
||||
doc->cur_top_line_num=0;
|
||||
doc->line_start_col=0;
|
||||
has_cursor=FALSE;
|
||||
} else if (has_cursor && full_refresh) {
|
||||
if (Bt(&hss->flags,WSSf_SET_TO_POS)||Bt(&vss->flags,WSSf_SET_TO_POS)) {
|
||||
if (!(doc->flags&DOCF_NO_SCROLL_BARS)) {
|
||||
if (Bt(&hss->flags,WSSf_SET_TO_POS)) {
|
||||
doc->line_start_col=hss->pos;
|
||||
LBtr(&hss->flags,WSSf_SET_TO_POS);
|
||||
}
|
||||
if (Bt(&vss->flags,WSSf_SET_TO_POS)) {
|
||||
doc->cur_top_line_num=vss->pos;
|
||||
LBtr(&vss->flags,WSSf_SET_TO_POS);
|
||||
doc->settings_root.cur_text_attr=doc->settings_root.dft_text_attr=win_task->border_attr;
|
||||
} else {
|
||||
if (has_cursor && full_refresh) {
|
||||
if (Bt(&hss->flags,WSSf_SET_TO_POS)||Bt(&vss->flags,WSSf_SET_TO_POS)) {
|
||||
if (!(doc->flags&DOCF_NO_SCROLL_BARS)) {
|
||||
if (Bt(&hss->flags,WSSf_SET_TO_POS)) {
|
||||
doc->line_start_col=hss->pos;
|
||||
LBtr(&hss->flags,WSSf_SET_TO_POS);
|
||||
}
|
||||
if (Bt(&vss->flags,WSSf_SET_TO_POS)) {
|
||||
doc->cur_top_line_num=vss->pos;
|
||||
LBtr(&vss->flags,WSSf_SET_TO_POS);
|
||||
}
|
||||
}
|
||||
doc->x=doc->line_start_col+width/2;
|
||||
doc->y=doc->cur_top_line_num+height/2;
|
||||
find_cursor=TRUE;
|
||||
doc->recalc_start=doc;
|
||||
}
|
||||
doc->x=doc->line_start_col+width/2;
|
||||
doc->y=doc->cur_top_line_num+height/2;
|
||||
find_cursor=TRUE;
|
||||
doc->recalc_start=doc;
|
||||
}
|
||||
doc->settings_root.cur_text_attr=doc->settings_root.dft_text_attr=win_task->text_attr;
|
||||
}
|
||||
x0=doc->line_start_col;
|
||||
y0=doc->cur_top_line_num;
|
||||
doc->settings_root.cur_text_attr=doc->settings_root.dft_text_attr=doc->start_text_attr;
|
||||
same_win=top ==doc->old_win_top &&
|
||||
bottom==doc->old_win_bottom &&
|
||||
left ==doc->old_win_left &&
|
||||
right ==doc->old_win_right &&
|
||||
doc->cur_entry==doc->old_cur_entry &&
|
||||
doc->cur_data_col==doc->old_cur_data_col;
|
||||
bottom==doc->old_win_bottom &&
|
||||
left ==doc->old_win_left &&
|
||||
right ==doc->old_win_right &&
|
||||
doc->cur_entry==doc->old_cur_entry &&
|
||||
doc->cur_data_col==doc->old_cur_data_col;
|
||||
if (recalc==DOC_RECALC_TO_SCREEN) {
|
||||
y_plot_top=y0-scroll_y/FONT_HEIGHT;
|
||||
y_plot_bottom=y0+height-1-scroll_y/FONT_HEIGHT;
|
||||
if (!(doc->flags&DOCF_AUX_DOC) && !Bt(&win_task->display_flags,DISPLAYf_NO_BORDER))
|
||||
if (!(doc->flags&DOCF_BORDER_DOC) && !Bt(&win_task->display_flags,DISPLAYf_NO_BORDER))
|
||||
DocBorderLstDraw(doc);
|
||||
}
|
||||
|
||||
@@ -264,17 +267,19 @@ Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC_ALL)
|
||||
i=doc->ww_lines_back;
|
||||
ii=i/2; //Threshold for stopping on SOFT_CR
|
||||
while (i-- && doc_e->type_u8!=DOCT_NEW_LINE &&
|
||||
(i>ii || doc_e->type_u8!=DOCT_SOFT_NEW_LINE) &&
|
||||
doc_e->flags1 & DOCEF1_WORD_WRAP &&
|
||||
doc_e->last!=doc)
|
||||
(i>ii || doc_e->type_u8!=DOCT_SOFT_NEW_LINE) &&
|
||||
doc_e->flags1 & DOCEF1_WORD_WRAP &&
|
||||
doc_e->last!=doc)
|
||||
doc_e=doc_e->last;
|
||||
x=doc_e->x; y=doc_e->y;
|
||||
doc->page_line_num=doc_e->page_line_num;
|
||||
}
|
||||
|
||||
s=DocSettingsLast(doc_e);
|
||||
if (doc_e==doc->root.next)
|
||||
s=&doc->settings_root;
|
||||
else
|
||||
s=DocSettingsLast(doc_e);
|
||||
doc->flags=doc_e->flags1& (DOCG_BL_IV_UL|DOCEF1_WORD_WRAP|DOCEF1_LOCK_TO_PAGE|DOCEF1_LOCK_TO_CENTER) |
|
||||
doc->flags&~(DOCG_BL_IV_UL|DOCEF1_WORD_WRAP|DOCEF1_LOCK_TO_PAGE|DOCEF1_LOCK_TO_CENTER);
|
||||
doc->flags&~(DOCG_BL_IV_UL|DOCEF1_WORD_WRAP|DOCEF1_LOCK_TO_PAGE|DOCEF1_LOCK_TO_CENTER);
|
||||
cur_u8_attr=s->cur_text_attr;
|
||||
if (doc_e==doc->root.next) {
|
||||
doc->flags&=~DOCF_BACKWARD_MOVEMENT;
|
||||
@@ -282,7 +287,7 @@ Bool DocRecalc(CDoc *doc,Bool has_cursor=FALSE,I64 recalc=DOC_RECALC_ALL)
|
||||
doc->flags&=~DOCF_HAS_SONG;
|
||||
} else
|
||||
doc->flags=doc_e->flags1& DOCEF1_HIGHLIGHT |
|
||||
doc->flags&~DOCEF1_HIGHLIGHT;
|
||||
doc->flags&~DOCEF1_HIGHLIGHT;
|
||||
|
||||
if (doc->root.next==doc) {
|
||||
best_do_e=doc;
|
||||
@@ -352,10 +357,10 @@ word_wrap_start:
|
||||
}
|
||||
}
|
||||
if (doc_e->type_u8==DOCT_TEXT &&
|
||||
!(doc_e->flags1&DOCEG1_DONT_EDIT) &&
|
||||
!(doc_e->flags2&DOCEG2_DONT_EDIT)) {
|
||||
!(doc_e->flags1&DOCEG1_DONT_EDIT) &&
|
||||
!(doc_e->flags2&DOCEG2_DONT_EDIT)) {
|
||||
if (doc_e->flags1==doc_e2->flags1 && doc_e->flags2==doc_e2->flags2 &&
|
||||
doc_e->type==doc_e2->type) {
|
||||
doc_e->type==doc_e2->type) {
|
||||
j=StrLen(doc_e2->tag);
|
||||
ptr=MAlloc(k+j+1,mem_task);
|
||||
MemCpy(ptr,doc_e->tag,k);
|
||||
@@ -383,8 +388,8 @@ word_wrap2:
|
||||
if (doc_e->flags1 & DOCEF1_SCROLLING_X)
|
||||
k=doc_e->scroll_len;
|
||||
if (doc_e->flags1 &
|
||||
(DOCEF1_LEFT_X|DOCEF1_RIGHT_X|DOCEF1_CENTER_X|
|
||||
DOCEF1_TOP_Y|DOCEF1_BOTTOM_Y|DOCEF1_CENTER_Y)) {
|
||||
(DOCEF1_LEFT_X|DOCEF1_RIGHT_X|DOCEF1_CENTER_X|
|
||||
DOCEF1_TOP_Y|DOCEF1_BOTTOM_Y|DOCEF1_CENTER_Y)) {
|
||||
if (doc_e->flags1 & DOCEF1_MARGIN_REL_X) {
|
||||
if (doc_e->flags1 & DOCEF1_LEFT_X)
|
||||
x=left_margin-left;
|
||||
@@ -425,7 +430,7 @@ word_wrap2:
|
||||
else
|
||||
doc->page_line_num=doc->page_line_num%s->page_len;
|
||||
if (s->header!=DOC_DFT &&
|
||||
doc->page_line_num<s->header) {
|
||||
doc->page_line_num<s->header) {
|
||||
y+=s->header-doc->page_line_num;
|
||||
doc->page_line_num=s->header;
|
||||
}
|
||||
@@ -457,8 +462,8 @@ word_wrap2:
|
||||
i=right_margin+1-(x+left); //Space left on line
|
||||
ii=x+1-s->left_margin;
|
||||
if (doc_e->type_u8==DOCT_TEXT &&
|
||||
!(doc_e->flags1&DOCEG1_DONT_EDIT) &&
|
||||
!(doc_e->flags2&DOCEG2_DONT_EDIT)) {
|
||||
!(doc_e->flags1&DOCEG1_DONT_EDIT) &&
|
||||
!(doc_e->flags2&DOCEG2_DONT_EDIT)) {
|
||||
if (doc->cur_entry==doc_e->next) {
|
||||
if (doc->cur_data_col==doc_e->next->min_col)
|
||||
i--;
|
||||
@@ -471,7 +476,7 @@ word_wrap2:
|
||||
if (k>i) {
|
||||
for (j=i;j>8-ii && j>=0;j--)
|
||||
if (doc_e->tag[j]==CH_SPACE ||
|
||||
doc_e->tag[j]==CH_SHIFT_SPACE) {
|
||||
doc_e->tag[j]==CH_SHIFT_SPACE) {
|
||||
i=j+1;
|
||||
break;
|
||||
}
|
||||
@@ -506,12 +511,12 @@ word_wrap2:
|
||||
if (k>=i) {
|
||||
doc_e2=doc_e->last;
|
||||
if (doc_e2->type_u8!=DOCT_SOFT_NEW_LINE &&
|
||||
doc_e2->type_u8!=DOCT_NEW_LINE &&
|
||||
doc_e2->type_u8!=DOCT_CURSOR_MOVEMENT) {
|
||||
doc_e2->type_u8!=DOCT_NEW_LINE &&
|
||||
doc_e2->type_u8!=DOCT_CURSOR_MOVEMENT) {
|
||||
doc_e2=CAlloc(sizeof(CDocEntryBase),mem_task);
|
||||
doc_e2->type=DOCT_SOFT_NEW_LINE | doc_e->type & 0xFFFFFF00;
|
||||
doc_e2->flags1=DOCEF1_WORD_WRAP |
|
||||
doc_e->flags1 & (DOCEF1_LOCK_TO_PAGE|DOCEF1_HIGHLIGHT|DOCEF1_LOCK_TO_CENTER|DOCG_BL_IV_UL|DOCEF1_SKIP|DOCEF1_HARD_SKIP|DOCEF1_FILTER_SKIP);
|
||||
doc_e->flags1 & (DOCEF1_LOCK_TO_PAGE|DOCEF1_HIGHLIGHT|DOCEF1_LOCK_TO_CENTER|DOCG_BL_IV_UL|DOCEF1_SKIP|DOCEF1_HARD_SKIP|DOCEF1_FILTER_SKIP);
|
||||
doc_e2->x=x;
|
||||
doc_e2->y=y;
|
||||
doc_e2->page_line_num=doc_e->last->page_line_num;
|
||||
@@ -540,40 +545,41 @@ skip_soft_cr:
|
||||
col2=0;
|
||||
|
||||
doc_e->flags1=doc->flags& (DOCG_BL_IV_UL|DOCEF1_WORD_WRAP|DOCEF1_HIGHLIGHT|DOCEF1_LOCK_TO_PAGE|DOCEF1_LOCK_TO_CENTER) |
|
||||
doc_e->flags1&~(DOCG_BL_IV_UL|DOCEF1_WORD_WRAP|DOCEF1_HIGHLIGHT|DOCEF1_LOCK_TO_PAGE|DOCEF1_LOCK_TO_CENTER);
|
||||
doc_e->flags1&~(DOCG_BL_IV_UL|DOCEF1_WORD_WRAP|DOCEF1_HIGHLIGHT|DOCEF1_LOCK_TO_PAGE|DOCEF1_LOCK_TO_CENTER);
|
||||
temp_u32_attr=(cur_u8_attr&0xF0)<<8|doc->flags&DOCG_BL_IV_UL|(s->shifted_x&0x1F)<<16|(s->shifted_y&0x1F)<<21;
|
||||
switch (doc_e->type_u8) {
|
||||
case DOCT_SPRITE:
|
||||
if (doc_e->flags1 & DOCEF1_LINK)
|
||||
temp_u32_attr.u8[1]|=s->link_attr&15;
|
||||
else if (doc_e->flags1 & (DOCEF1_LEFT_MACRO|DOCEF1_LEFT_EXP))
|
||||
temp_u32_attr.u8[1]|=s->macro_attr&15;
|
||||
if (doc_e->flags1 & DOCEF1_LEFT_EXP)
|
||||
temp_u32_attr.u8[1]|=cur_u8_attr&15;
|
||||
else if (doc_e->flags1 & DOCEF1_LINK)
|
||||
temp_u32_attr.u8[1]|=DOC_COLOR_LINK;
|
||||
else if (doc_e->flags1 & DOCEF1_LEFT_MACRO)
|
||||
temp_u32_attr.u8[1]|=DOC_COLOR_MACRO;
|
||||
else if (doc_e->flags1 & DOCEF1_TREE)
|
||||
temp_u32_attr.u8[1]|=s->tree_attr&15;
|
||||
temp_u32_attr.u8[1]|=DOC_COLOR_TREE;
|
||||
else
|
||||
temp_u32_attr.u8[1]|=s->bin_attr&15;
|
||||
temp_u32_attr.u8[1]|=DOC_COLOR_BIN;
|
||||
break;
|
||||
case DOCT_HTML_IMG:
|
||||
case DOCT_HTML_VIDEO:
|
||||
case DOCT_HTML_CODE:
|
||||
temp_u32_attr.u8[1]|=s->bin_attr&15;
|
||||
temp_u32_attr.u8[1]|=DOC_COLOR_BIN;
|
||||
break;
|
||||
case DOCT_LINK:
|
||||
temp_u32_attr.u8[1]|=s->link_attr&15;
|
||||
temp_u32_attr.u8[1]|=DOC_COLOR_LINK;
|
||||
break;
|
||||
case DOCT_MACRO:
|
||||
case DOCT_MENU_VAL:
|
||||
temp_u32_attr.u8[1]|=s->macro_attr&15;
|
||||
temp_u32_attr.u8[1]|=DOC_COLOR_MACRO;
|
||||
break;
|
||||
case DOCT_ANCHOR:
|
||||
temp_u32_attr.u8[1]|=s->anchor_attr&15;
|
||||
temp_u32_attr.u8[1]|=DOC_COLOR_ANCHOR;
|
||||
break;
|
||||
case DOCT_TREE:
|
||||
temp_u32_attr.u8[1]|=s->tree_attr&15;
|
||||
temp_u32_attr.u8[1]|=DOC_COLOR_TREE;
|
||||
break;
|
||||
case DOCT_HIDE_START:
|
||||
case DOCT_HIDE_END:
|
||||
temp_u32_attr.u8[1]|=s->hidden_attr&15;
|
||||
temp_u32_attr.u8[1]|=DOC_COLOR_HIDDEN;
|
||||
break;
|
||||
default:
|
||||
temp_u32_attr.u8[1]|=cur_u8_attr&15;
|
||||
@@ -604,10 +610,10 @@ skip_soft_cr:
|
||||
}
|
||||
} else if (doc_e->flags1 & DOCEF1_HAS_BIN) {
|
||||
if (*ptr=='<') {
|
||||
temp_u32_attr=temp_u32_attr & 0xFFFFF000 | (s->bin_attr&0xF)<<8;
|
||||
temp_u32_attr=temp_u32_attr & 0xFFFFF000 | DOC_COLOR_BIN<<8;
|
||||
doc_e->type.u8[1]=temp_u32_attr.u8[1];
|
||||
if (doc_e==doc->cur_entry && doc_e->type_u8!=DOCT_TEXT)
|
||||
temp_u32_attr^=0x0F00;
|
||||
temp_u32_attr^=0x0F00;
|
||||
if (full_refresh && '0'<=ptr[1]<='9') {
|
||||
SPrintF(buf,"<%d>",doc_e->bin_num);
|
||||
k=StrLen(buf);
|
||||
@@ -646,7 +652,7 @@ skip_soft_cr:
|
||||
ijif=cur_time*FONT_WIDTH*DOC_SCROLL_SPEED;
|
||||
ijif%=j*FONT_WIDTH;
|
||||
temp_u32_attr=temp_u32_attr & 0xFFE0FF00|
|
||||
(FONT_WIDTH-1-ijif&(FONT_WIDTH-1))<<16;
|
||||
(FONT_WIDTH-1-ijif&(FONT_WIDTH-1))<<16;
|
||||
#assert FONT_WIDTH==8
|
||||
ijif>>=3;
|
||||
for (k=0;k<doc_e->scroll_len;k++) {
|
||||
@@ -654,14 +660,14 @@ skip_soft_cr:
|
||||
if (!Bt(displayable_chars_bitmap,ch)) ch='.';
|
||||
if (recalc==DOC_RECALC_TO_SCREEN && !(doc_e->flags1&DOCEF1_DONT_DRAW)) {
|
||||
if (doc_e->flags1 & DOCEF1_BORDER_PLOT &&
|
||||
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER))
|
||||
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER))
|
||||
PlotBorderU8(win_task,temp_u32_attr+ch,x-x0,y-y0);
|
||||
else
|
||||
PlotWinU8(win_task,temp_u32_attr+ch,x-x0,y-y0);
|
||||
}
|
||||
x++;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (find_cursor) {
|
||||
D=DocCharDist(doc,doc_e->x,doc_e->y);
|
||||
col=doc_e->min_col;
|
||||
@@ -669,18 +675,18 @@ skip_soft_cr:
|
||||
col2=doc_e->scroll_len; //TODO This is flawed
|
||||
} else {
|
||||
if (doc_e->flags1 & DOCEF1_BORDER_PLOT &&
|
||||
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER)) {
|
||||
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER)) {
|
||||
while (ch=*ptr++) {
|
||||
if (recalc==DOC_RECALC_TO_SCREEN && !(doc_e->flags1&DOCEF1_DONT_DRAW))
|
||||
PlotBorderU8(win_task,temp_u32_attr+ch,x-x0,y-y0);
|
||||
else
|
||||
if (find_cursor) {
|
||||
d2=DocCharDist(doc,x,y);
|
||||
if (d2<D) {
|
||||
D=d2;
|
||||
col=col2;
|
||||
if (d2<D) {
|
||||
D=d2;
|
||||
col=col2;
|
||||
}
|
||||
}
|
||||
}
|
||||
col2++;
|
||||
x++;
|
||||
}
|
||||
@@ -723,8 +729,8 @@ skip_soft_cr:
|
||||
nobound_switch (doc_e->type_u8) {
|
||||
case DOCT_TEXT:
|
||||
if (!col2 &&
|
||||
!(doc_e->flags1&(DOCEF1_TREE|DOCEF1_TAG_CB|DOCEF1_DEFINE|DOCEF1_HTML_LINK)) &&
|
||||
!(doc_e->flags2&DOCEF2_BIN_PTR_LINK))
|
||||
!(doc_e->flags1&(DOCEF1_TREE|DOCEF1_TAG_CB|DOCEF1_DEFINE|DOCEF1_HTML_LINK)) &&
|
||||
!(doc_e->flags2&DOCEF2_BIN_PTR_LINK))
|
||||
del_cl=TRUE;
|
||||
break;
|
||||
case DOCT_HEX_ED:
|
||||
@@ -742,7 +748,7 @@ skip_soft_cr:
|
||||
while (ch=*ptr++) {
|
||||
if (recalc==DOC_RECALC_TO_SCREEN && !(doc_e->flags1&DOCEF1_DONT_DRAW)) {
|
||||
if (doc_e->flags1 & DOCEF1_BORDER_PLOT &&
|
||||
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER))
|
||||
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER))
|
||||
PlotBorderU8(win_task,temp_u32_attr+ch,x-x0,y-y0);
|
||||
else
|
||||
PlotWinU8(win_task,temp_u32_attr+ch,x-x0,y-y0);
|
||||
@@ -763,7 +769,7 @@ skip_soft_cr:
|
||||
while (ch=*ptr++) {
|
||||
if (recalc==DOC_RECALC_TO_SCREEN && !(doc_e->flags1&DOCEF1_DONT_DRAW)) {
|
||||
if (doc_e->flags1 & DOCEF1_BORDER_PLOT &&
|
||||
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER))
|
||||
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER))
|
||||
PlotBorderU8(win_task,temp_u32_attr+ch,x-x0,y-y0);
|
||||
else
|
||||
PlotWinU8(win_task,temp_u32_attr+ch,x-x0,y-y0);
|
||||
@@ -787,7 +793,7 @@ skip_soft_cr:
|
||||
if (!Bt(displayable_chars_bitmap,ch)) ch='.';
|
||||
if (recalc==DOC_RECALC_TO_SCREEN && !(doc_e->flags1&DOCEF1_DONT_DRAW)) {
|
||||
if (doc_e->flags1 & DOCEF1_BORDER_PLOT &&
|
||||
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER))
|
||||
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER))
|
||||
PlotBorderU8(win_task,temp_u32_attr+ch,x-x0,y-y0);
|
||||
else
|
||||
PlotWinU8(win_task,temp_u32_attr+ch,x-x0,y-y0);
|
||||
@@ -809,7 +815,7 @@ skip_soft_cr:
|
||||
case DOCT_TAB:
|
||||
k=(x+8) & ~7;
|
||||
if (doc_e->flags1 & DOCEF1_BORDER_PLOT &&
|
||||
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER)) {
|
||||
!Bt(&win_task->display_flags,DISPLAYf_NO_BORDER)) {
|
||||
while (x<k) {
|
||||
if (recalc==DOC_RECALC_TO_SCREEN && !(doc_e->flags1&DOCEF1_DONT_DRAW))
|
||||
PlotBorderU8(win_task,temp_u32_attr+CH_SPACE,x-x0,y-y0);
|
||||
@@ -842,9 +848,9 @@ skip_soft_cr:
|
||||
case DOCT_NEW_LINE:
|
||||
case DOCT_SOFT_NEW_LINE:
|
||||
if (recalc==DOC_RECALC_TO_SCREEN &&
|
||||
!(doc_e->flags1&DOCEF1_DONT_DRAW)&& y_plot_top<=y<=y_plot_bottom)
|
||||
!(doc_e->flags1&DOCEF1_DONT_DRAW)&& y_plot_top<=y<=y_plot_bottom)
|
||||
PlotWinAttr(win_task,width-(x-x0),
|
||||
cur_u8_attr<<8,x-x0,y-y0);
|
||||
cur_u8_attr<<8,x-x0,y-y0);
|
||||
if (doc_e->flags1&DOCEF1_HIGHLIGHT) {
|
||||
if (s->state&7==DOCSS_CPP_Z_COMMENT) {
|
||||
if (full_refresh) {
|
||||
@@ -1019,8 +1025,6 @@ adjust_xy:
|
||||
QueIns(s,doc->settings_root.last);
|
||||
} else
|
||||
s=DocSettingsNext(doc_e->next);
|
||||
if (recalc==DOC_RECALC_TO_SCREEN && !(doc_e->flags1&DOCEF1_DONT_DRAW))
|
||||
win_task->text_attr=cur_u8_attr;
|
||||
break;
|
||||
case DOCT_DFT_FOREGROUND:
|
||||
cur_u8_attr&=0xF0;
|
||||
@@ -1049,113 +1053,14 @@ adjust_xy:
|
||||
QueIns(s,doc->settings_root.last);
|
||||
} else
|
||||
s=DocSettingsNext(doc_e->next);
|
||||
if (recalc==DOC_RECALC_TO_SCREEN && !(doc_e->flags1&DOCEF1_DONT_DRAW))
|
||||
win_task->text_attr=cur_u8_attr;
|
||||
break;
|
||||
case DOCT_ALT_FOREGROUND:
|
||||
if (full_refresh) {
|
||||
s=DocSettingsIdentical(doc,s);
|
||||
s->alt_text_attr=doc_e->attr;
|
||||
QueIns(s,doc->settings_root.last);
|
||||
} else
|
||||
s=DocSettingsNext(doc_e->next);
|
||||
break;
|
||||
case DOCT_LINK_FOREGROUND:
|
||||
if (full_refresh) {
|
||||
s=DocSettingsIdentical(doc,s);
|
||||
s->link_attr=doc_e->attr;
|
||||
QueIns(s,doc->settings_root.last);
|
||||
} else
|
||||
s=DocSettingsNext(doc_e->next);
|
||||
break;
|
||||
case DOCT_MACRO_FOREGROUND:
|
||||
if (full_refresh) {
|
||||
s=DocSettingsIdentical(doc,s);
|
||||
s->macro_attr=doc_e->attr;
|
||||
QueIns(s,doc->settings_root.last);
|
||||
} else
|
||||
s=DocSettingsNext(doc_e->next);
|
||||
break;
|
||||
case DOCT_ANCHOR_FOREGROUND:
|
||||
if (full_refresh) {
|
||||
s=DocSettingsIdentical(doc,s);
|
||||
s->anchor_attr=doc_e->attr;
|
||||
QueIns(s,doc->settings_root.last);
|
||||
} else
|
||||
s=DocSettingsNext(doc_e->next);
|
||||
break;
|
||||
case DOCT_HIDDEN_FOREGROUND:
|
||||
if (full_refresh) {
|
||||
s=DocSettingsIdentical(doc,s);
|
||||
s->hidden_attr=doc_e->attr;
|
||||
QueIns(s,doc->settings_root.last);
|
||||
} else
|
||||
s=DocSettingsNext(doc_e->next);
|
||||
break;
|
||||
case DOCT_TREE_FOREGROUND:
|
||||
if (full_refresh) {
|
||||
s=DocSettingsIdentical(doc,s);
|
||||
s->tree_attr=doc_e->attr;
|
||||
QueIns(s,doc->settings_root.last);
|
||||
} else
|
||||
s=DocSettingsNext(doc_e->next);
|
||||
break;
|
||||
case DOCT_USER_FOREGROUND:
|
||||
if (doc_e->attr==DOC_DFT) {
|
||||
cur_u8_attr=cur_u8_attr&0xF0|s->user_attr&0x0F;
|
||||
if (y==cursor_y) {
|
||||
doc->cur_entry=doc_e->next;
|
||||
doc->cur_data_col=doc->cur_entry->min_col;
|
||||
}
|
||||
} else {
|
||||
if (full_refresh) {
|
||||
s=DocSettingsIdentical(doc,s);
|
||||
s->user_attr=doc_e->attr;
|
||||
QueIns(s,doc->settings_root.last);
|
||||
} else
|
||||
s=DocSettingsNext(doc_e->next);
|
||||
case DOCT_PMT:
|
||||
cur_u8_attr=cur_u8_attr&0xF0|DOC_COLOR_PMT;
|
||||
if (y==cursor_y) {
|
||||
doc->cur_entry=doc_e->next;
|
||||
doc->cur_data_col=doc->cur_entry->min_col;
|
||||
}
|
||||
break;
|
||||
case DOCT_BINARY_FOREGROUND:
|
||||
if (full_refresh) {
|
||||
s=DocSettingsIdentical(doc,s);
|
||||
s->bin_attr=doc_e->attr;
|
||||
QueIns(s,doc->settings_root.last);
|
||||
} else
|
||||
s=DocSettingsNext(doc_e->next);
|
||||
break;
|
||||
case DOCT_KEYWORD_FOREGROUND:
|
||||
if (full_refresh) {
|
||||
s=DocSettingsIdentical(doc,s);
|
||||
s->keyword_attr=doc_e->attr;
|
||||
QueIns(s,doc->settings_root.last);
|
||||
} else
|
||||
s=DocSettingsNext(doc_e->next);
|
||||
break;
|
||||
case DOCT_KEYWORD2_FOREGROUND:
|
||||
if (full_refresh) {
|
||||
s=DocSettingsIdentical(doc,s);
|
||||
s->keyword2_attr=doc_e->attr;
|
||||
QueIns(s,doc->settings_root.last);
|
||||
} else
|
||||
s=DocSettingsNext(doc_e->next);
|
||||
break;
|
||||
case DOCT_COMMENT_FOREGROUND:
|
||||
if (full_refresh) {
|
||||
s=DocSettingsIdentical(doc,s);
|
||||
s->comment_attr=doc_e->attr;
|
||||
QueIns(s,doc->settings_root.last);
|
||||
} else
|
||||
s=DocSettingsNext(doc_e->next);
|
||||
break;
|
||||
case DOCT_QUOTE_FOREGROUND:
|
||||
if (full_refresh) {
|
||||
s=DocSettingsIdentical(doc,s);
|
||||
s->quote_attr=doc_e->attr;
|
||||
QueIns(s,doc->settings_root.last);
|
||||
} else
|
||||
s=DocSettingsNext(doc_e->next);
|
||||
break;
|
||||
case DOCT_WORD_WRAP:
|
||||
if (doc_e->attr)
|
||||
doc->flags|=DOCF_WORD_WRAP;
|
||||
@@ -1347,7 +1252,10 @@ adjust_xy:
|
||||
doc_e->max_col=1;
|
||||
break;
|
||||
default:
|
||||
doc_e->max_col= doc_e->flags1 & DOCEF1_TREE ? 1:col2;
|
||||
if (doc_e->flags1 & DOCEF1_TREE)
|
||||
doc_e->max_col=1;
|
||||
else
|
||||
doc_e->max_col=col2;
|
||||
}
|
||||
|
||||
if (x>doc->max_x) doc->max_x=x;
|
||||
@@ -1441,7 +1349,7 @@ skip:
|
||||
doc_e2->settings=s;
|
||||
doc_e2->type.u8[1]=cur_u8_attr;
|
||||
doc_e2->flags1=doc->flags& (DOCG_BL_IV_UL|DOCEF1_WORD_WRAP|DOCEF1_HIGHLIGHT|DOCEF1_LOCK_TO_PAGE|DOCEF1_LOCK_TO_CENTER) |
|
||||
doc_e2->flags1&~(DOCG_BL_IV_UL|DOCEF1_WORD_WRAP|DOCEF1_HIGHLIGHT|DOCEF1_LOCK_TO_PAGE|DOCEF1_LOCK_TO_CENTER);
|
||||
doc_e2->flags1&~(DOCG_BL_IV_UL|DOCEF1_WORD_WRAP|DOCEF1_HIGHLIGHT|DOCEF1_LOCK_TO_PAGE|DOCEF1_LOCK_TO_CENTER);
|
||||
}
|
||||
doc_e2=doc_e2->next;
|
||||
}
|
||||
@@ -1526,11 +1434,9 @@ skip:
|
||||
doc->cur_entry=best_do_e;
|
||||
doc->cur_data_col=best_col;
|
||||
DocFormBackward(doc);
|
||||
|
||||
//We need this because text coordinates are used
|
||||
//We need this because text coordinates are used
|
||||
if (best_d<FONT_WIDTH)
|
||||
best_d=0;
|
||||
|
||||
doc->best_d=best_d;
|
||||
}
|
||||
|
||||
@@ -1546,7 +1452,7 @@ skip:
|
||||
doc->x+=x>>1*3+x&1;
|
||||
else
|
||||
doc->x+=doc->cur_entry->hex_ed_width*3+
|
||||
(x-doc->cur_entry->hex_ed_width<<1);
|
||||
(x-doc->cur_entry->hex_ed_width<<1);
|
||||
}
|
||||
doc->line=doc->y+1;
|
||||
doc->col=doc->x+1;
|
||||
@@ -1589,8 +1495,8 @@ skip:
|
||||
x=doc->x-doc->line_start_col+left +scroll_x/FONT_WIDTH;
|
||||
y=doc->y-doc->cur_top_line_num+top+scroll_y/FONT_HEIGHT;
|
||||
if (0<=x<=right && 0<=y<=bottom &&
|
||||
x<TEXT_COLS && y<TEXT_ROWS &&
|
||||
!(doc->flags&DOCF_HIDE_CURSOR)) {
|
||||
x<TEXT_COLS && y<TEXT_ROWS &&
|
||||
!(doc->flags&DOCF_HIDE_CURSOR)) {
|
||||
u32_ptr=gr_text_base+y*TEXT_COLS+x;
|
||||
*u32_ptr|=DOCET_BLINK;
|
||||
*u32_ptr^=0xFF00;
|
||||
@@ -1646,11 +1552,11 @@ skip:
|
||||
|
||||
public U0 DocInsSafe(CDoc *doc,U8 *st)
|
||||
{ //This is necessary when hidden text might screw-up
|
||||
//inserts. It does them all-at-once.
|
||||
//inserts. It does them all-at-once.
|
||||
Bool unlock;
|
||||
I64 old_flags;
|
||||
if (!doc) {
|
||||
doc=DocCur;
|
||||
doc=DocPut;
|
||||
if (!doc)
|
||||
return;
|
||||
}
|
||||
@@ -1668,7 +1574,7 @@ public U0 DocBottom(CDoc *doc=NULL)
|
||||
{
|
||||
Bool unlock;
|
||||
if (!doc) {
|
||||
doc=DocCur;
|
||||
doc=DocPut;
|
||||
if (!doc)
|
||||
return;
|
||||
}
|
||||
@@ -1684,7 +1590,7 @@ public U0 DocTop(CDoc *doc=NULL)
|
||||
{
|
||||
Bool unlock;
|
||||
if (!doc) {
|
||||
doc=DocCur;
|
||||
doc=DocPut;
|
||||
if (!doc)
|
||||
return;
|
||||
}
|
||||
@@ -1700,7 +1606,7 @@ public U0 DocClear(CDoc *doc=NULL)
|
||||
{
|
||||
Bool unlock;
|
||||
if (!doc) {
|
||||
doc=DocCur;
|
||||
doc=DocPut;
|
||||
if (!doc)
|
||||
return;
|
||||
}
|
||||
@@ -1715,7 +1621,7 @@ public U0 DocClear(CDoc *doc=NULL)
|
||||
public Bool DocCursor(Bool show=OFF,CDoc *doc=NULL)
|
||||
{
|
||||
if (!doc) {
|
||||
doc=DocCur;
|
||||
doc=DocPut;
|
||||
if (!doc)
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1725,62 +1631,19 @@ public Bool DocCursor(Bool show=OFF,CDoc *doc=NULL)
|
||||
public Bool DocScroll(Bool val=OFF,CDoc *doc=NULL)
|
||||
{
|
||||
if (!doc) {
|
||||
doc=DocCur;
|
||||
doc=DocPut;
|
||||
if (!doc)
|
||||
return FALSE;
|
||||
}
|
||||
return !LBEqu(&doc->flags,DOCf_NO_SCROLL_BARS,!val);
|
||||
}
|
||||
|
||||
I64 DocBkColor(CDoc *doc,I64 col)
|
||||
{
|
||||
CDocSettings *s=&doc->settings_root;
|
||||
I64 result=doc->start_text_attr>>4&15;
|
||||
col=(col&15)<<4;
|
||||
doc->start_text_attr=doc->start_text_attr&15+col;
|
||||
s->cur_text_attr =s->cur_text_attr&15+col;
|
||||
s->dft_text_attr =s->dft_text_attr&15+col;
|
||||
return result;
|
||||
}
|
||||
|
||||
public I64 DocCurAttr(I64 attr=WHITE<<4+BLUE,CTask *task=NULL)
|
||||
{
|
||||
CDoc *doc;
|
||||
I64 result=0;
|
||||
if (!task) task=Fs;
|
||||
result=task->text_attr;
|
||||
if (doc=DocCur(task)) {
|
||||
result=doc->start_text_attr;
|
||||
doc->start_text_attr=attr;
|
||||
DocBkColor(doc,attr>>4);
|
||||
}
|
||||
task->text_attr=attr;
|
||||
return result;
|
||||
}
|
||||
|
||||
public I64 DocAuxAttr(I64 attr=WHITE<<4+BLUE,CTask *task=NULL)
|
||||
{ //This will probably be ineffective since the
|
||||
//$LK,"DOCF_ATTR_BY_PRT","MN:DOCF_ATTR_BY_PRT"$ or $LK,"DOCF_ATTR_BY_FILENAME","MN:DOCF_ATTR_BY_FILENAME"$ flag is probably set
|
||||
//which means $LK,"SetDrvTextAttr","MN:SetDrvTextAttr"$() is overriding it.
|
||||
CDoc *doc;
|
||||
I64 result=0;
|
||||
if (!task) task=Fs;
|
||||
result=task->border_attr;
|
||||
if (doc=DocAux(task)) {
|
||||
result=doc->start_text_attr;
|
||||
doc->start_text_attr=attr;
|
||||
DocBkColor(doc,attr>>4);
|
||||
}
|
||||
task->border_attr=attr;
|
||||
return result;
|
||||
}
|
||||
|
||||
public U0 DocCollapse(Bool collapse=TRUE,CDoc *doc=NULL)
|
||||
{
|
||||
CDocEntry *doc_e;
|
||||
Bool unlock;
|
||||
if (!doc) {
|
||||
doc=DocCur;
|
||||
doc=DocPut;
|
||||
if (!doc)
|
||||
return;
|
||||
}
|
||||
@@ -1800,43 +1663,38 @@ public U0 DocCollapse(Bool collapse=TRUE,CDoc *doc=NULL)
|
||||
U0 DocUpdateTaskDocs(CTask *task)
|
||||
{
|
||||
CPrt *p;
|
||||
I64 attr=task->border_attr;
|
||||
CDoc *doc=task->last_doc;
|
||||
CDoc *doc;
|
||||
CD3I64 saved_scroll;
|
||||
Bool old_preempt=Preempt(OFF),okay=TRUE;
|
||||
while (doc!=(&task->next_doc)(U8 *)-offset(CDoc.next_doc)) {
|
||||
if (!(doc->flags&DOCF_DONT_SHOW)) {
|
||||
if (doc->flags&DOCF_AUX_DOC) {
|
||||
if (attr&0xF!=attr>>4)
|
||||
doc->start_text_attr=attr;
|
||||
WinScrollNull(task,&saved_scroll);
|
||||
okay=DocRecalc(doc,FALSE,DOC_RECALC_TO_SCREEN);
|
||||
WinScrollRestore(task,&saved_scroll);
|
||||
} else {
|
||||
if (doc->flags&DOCF_ATTR_BY_PRT) {
|
||||
p=task->cur_prt;
|
||||
attr=p->text_attr;
|
||||
Bool old_preempt=Preempt(OFF);
|
||||
I64 border_attr;
|
||||
if (task->border_src==BDS_CUR_PRT && task->cur_prt) {
|
||||
border_attr=task->cur_prt->text_attr;
|
||||
if (border_attr&15!=border_attr>>4)
|
||||
task->border_attr=border_attr;
|
||||
}
|
||||
if (task->title_src==TTS_TASK_NAME)
|
||||
StrCpy(task->task_title,task->task_name);
|
||||
if ((doc=DocDisplay(task)) && !(doc->flags&DOCF_DONT_SHOW)) {
|
||||
if (task->border_src==BDS_ED_FILENAME_PRT) {
|
||||
try {
|
||||
if (p=Drv2Prt(*doc->filename.name)) {
|
||||
border_attr=p->text_attr;
|
||||
if (border_attr&15!=border_attr>>4)
|
||||
task->border_attr=border_attr;
|
||||
}
|
||||
if (doc->flags&DOCF_ATTR_BY_FILENAME) {
|
||||
try
|
||||
p=Drv2Prt(doc->filename.name[0]);
|
||||
catch {
|
||||
p=NULL;
|
||||
Fs->catch_except=TRUE;
|
||||
}
|
||||
if (p)
|
||||
attr=p->text_attr;
|
||||
}
|
||||
if (attr&0xF!=attr>>4)
|
||||
task->border_attr=attr;
|
||||
Preempt(old_preempt);
|
||||
okay=DocRecalc(doc,TRUE,DOC_RECALC_TO_SCREEN);
|
||||
Preempt(OFF);
|
||||
}
|
||||
} catch
|
||||
Fs->catch_except=TRUE;
|
||||
}
|
||||
if (!okay || doc->doc_in_que_signature!=DOC_IN_QUE_SIGNATURE_VAL)
|
||||
break;
|
||||
doc=doc->last_doc;
|
||||
if (task->title_src==TTS_ED_FILENAME)
|
||||
MemCpy(task->task_title,doc->filename.name,TASK_TITLE_LEN);
|
||||
Preempt(old_preempt);
|
||||
DocRecalc(doc,TRUE,DOC_RECALC_TO_SCREEN);
|
||||
Preempt(OFF);
|
||||
}
|
||||
if ((doc=DocBorder(task)) && !(doc->flags&DOCF_DONT_SHOW)) {
|
||||
WinScrollNull(task,&saved_scroll);
|
||||
DocRecalc(doc,FALSE,DOC_RECALC_TO_SCREEN);
|
||||
WinScrollRestore(task,&saved_scroll);
|
||||
}
|
||||
Preempt(old_preempt);
|
||||
}
|
||||
|
||||
@@ -118,13 +118,13 @@ public I64 ExeDoc(CDoc *doc,Bool just_load=FALSE)
|
||||
I64 result;
|
||||
Bool okay=TRUE,unlock_doc=DocLock(doc);
|
||||
CLex *lx;
|
||||
lx=LexNew("",LF_DONT_FREE_BUF,FileNameAbs(sys_temp_filename));
|
||||
lx=LexNew("",LF_DONT_FREE_BUF,sys_temp_filename);
|
||||
if (just_load)
|
||||
lx->flags|=LF_JUST_LOAD;
|
||||
if (Fs->last_lex!=&Fs->next_lex)
|
||||
lx->opts=Fs->last_lex->opts;
|
||||
QueIns(lx,Fs->last_lex);
|
||||
LexIncludeDoc(lx,NULL,doc);
|
||||
LexAttachDoc(lx,,doc);
|
||||
try {
|
||||
Lex(lx);
|
||||
result=ExeCmdLine(lx);
|
||||
|
||||
Reference in new issue
Block a user