templeos-info/public/Wb/Adam/DolDoc/DocWidgetWiz.HC

1164 lines
29 KiB
HolyC
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#help_index "DolDoc/Misc"
U8 *ctrl_L_footer=
"\n$$MU-X+Q,\"Abort\",LE=DOCM_CANCEL$$\n"
"\n\n$$LK+PU,\"Click for Help\",A=\"FI:::/Doc/Widget.DD\"$$\n";
I64 PopUpLinkType(Bool include_anchor)
{
I64 i;
CDoc *doc=DocNew;
DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Link Type Menu\"$$\n"
"\n$$LTBLUE$$$$MU,\"To file\",LE=LK_FILE$$\n"
"$$MU,\"To anchor in file\",LE=LK_FILE_ANCHOR$$\n"
"$$MU,\"To str in file\",LE=LK_FILE_FIND$$\n"
"$$MU,\"To line in file\",LE=LK_FILE_LINE$$\n"
"$$MU,\"To man page\",LE=LK_MAN_PAGE$$\n"
"$$MU,\"To plain-text file\",LE=LK_PLAIN$$\n"
"$$MU,\"To str in plain-text file\",LE=LK_PLAIN_FIND$$\n"
"$$MU,\"To line in plain-text file\",LE=LK_PLAIN_LINE$$\n"
"$$MU,\"To Bible chapter line and verse\",LE=LK_BIBLE_FIND$$\n"
"$$MU,\"To Dictionary Definition\",LE=LK_DEF$$\n"
"$$MU,\"To Help Index\",LE=LK_HELP_INDEX$$\n"
"$$MU,\"To Addr\",LE=LK_ADDR$$\n");
if (include_anchor)
DocPrint(doc,"$$MU,\"Place Anchor\",LE=LK_PLACE_ANCHOR$$\n");
DocPrint(doc,"%s",ctrl_L_footer);
i=PopUpMenu(doc);
DocDel(doc);
return i;
}
class CEdFileLink
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n",
file[512] format "$$DA-P,A=\"File:%s\"$$\n";
I64 book;
U8 aux[512];
I64 num;
U8 html_link[512] format "$$DA-P,A=\"Html Link:%s\"$$\n";
Bool pop_up format "$$CB,\"PopUp\"$$\n",
quote format "$$CB,\"Quote\"$$\n",
hide;
};
class CEdFileAnchorLink
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n",
file[512] format "$$DA-P,A=\"File:%s\"$$\n";
I64 book;
U8 aux[512] format "$$DA-P,A=\"Anchor Label:%s\"$$\n";
I64 num;
U8 html_link[512] format "$$DA-P,A=\"Html Link:%s\"$$\n";
Bool pop_up format "$$CB,\"PopUp\"$$\n",
quote format "$$CB,\"Quote\"$$\n",
hide;
};
class CEdFileFindLink
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n",
file[512] format "$$DA-P,A=\"File:%s\"$$\n";
I64 book;
U8 aux[512] format "$$DA-P,A=\"Str:%s\"$$\n";
I64 num format "$$DA-TRM,A=\"Occurrence Num:%04d\"$$\n";
U8 html_link[512] format "$$DA-P,A=\"Html Link:%s\"$$\n";
Bool pop_up format "$$CB,\"PopUp\"$$\n",
quote format "$$CB,\"Quote\"$$\n",
hide;
};
class CEdFileLineLink
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n",
file[512] format "$$DA-P,A=\"File:%s\"$$\n";
I64 book;
U8 aux[512];
I64 num format "$$DA-TRM,A=\"Line Num:%04d\"$$\n";
U8 html_link[512] format "$$DA-P,A=\"Html Link:%s\"$$\n";
Bool pop_up format "$$CB,\"PopUp\"$$\n",
quote format "$$CB,\"Quote\"$$\n",
hide;
};
class CEdManPageLink
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n",
file[512];
I64 book;
U8 aux[512] format "$$DA-P,A=\"Label:%s\"$$\n";
I64 num;
U8 html_link[512] format "$$DA-P,A=\"Html Link:%s\"$$\n";
Bool pop_up format "$$CB,\"PopUp\"$$\n",
quote format "$$CB,\"Quote\"$$\n",
hide;
};
class CEdAddrLink
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n",
file[512];
I64 book;
U8 aux[512] format "$$DA-P,A=\"Addr Exp:%s\"$$\n";
I64 num format "$$DA-TRM,A=\"Bin Size:%04d\"$$\n";
U8 html_link[512] format "$$DA-P,A=\"Html Link:%s\"$$\n";
Bool pop_up format "$$CB,\"PopUp\"$$\n",
quote format "$$CB,\"Quote\"$$\n",
hide;
};
class CEdPlaceAnchor
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n",
file[512];
I64 book;
U8 aux[512] format "$$DA-P,A=\"Anchor Label:%s\"$$\n";
I64 num;
U8 html_link[512] format "$$DA-P,A=\"Html Link:%s\"$$\n";
Bool pop_up,
quote format "$$CB,\"Quote\"$$\n",
hide format "$$CB,\"Hide\"$$\n";
};
class CEdBibleLink
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n",
file[512];
I64 book format "$$LS,D=\"ST_BIBLE_BOOKS\"$$\n";
U8 aux[512] format "$$DA-P,A=\"Chapter Verse:%s\"$$\n";
I64 num;
U8 html_link[512] format "$$DA-P,A=\"Html Link:%s\"$$\n";
Bool pop_up format "$$CB,\"PopUp\"$$\n",
quote format "$$CB,\"Quote\"$$\n",
hide;
};
class CEdDefLink
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n",
file[512];
I64 book;
U8 aux[512] format "$$DA-P,A=\"Word:%s\"$$\n";
I64 num format "$$DA-TRM,A=\"Def Num:%4d\"$$\n";
U8 html_link[512] format "$$DA-P,A=\"Html Link:%s\"$$\n";
Bool pop_up format "$$CB,\"PopUp\"$$\n",
quote format "$$CB,\"Quote\"$$\n",
hide;
};
class CEdProject
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n",
file[512] format "$$DA-P,A=\"File:%s\"$$\n";
I64 book;
U8 aux[512];
I64 num;
U8 html_link[512] format "$$DA-P,A=\"Html Link:%s\"$$\n";
Bool pop_up format "$$CB,\"PopUp\"$$\n",
quote format "$$CB,\"Quote\"$$\n",
hide;
};
Bool GetLink(I64 type,U8 **_tag,U8 **_link,Bool *_pop_up,
Bool *_quote,U8 **_html_link)
{
CEdFileLink *e=CAlloc(sizeof(CEdFileLink));
Bool res=FALSE;
if (type>=0) {
e->num=1;
switch (type) {
case LK_FILE:
if (DocForm(e,,,,ctrl_L_footer)) {
res=TRUE;
if (!*e->tag)
*_tag=StrNew(e->file);
else
*_tag=StrNew(e->tag);
*_link=MStrPrint("FI:%s",e->file);
}
break;
case LK_PLAIN:
if (DocForm(e,,,,ctrl_L_footer)) {
res=TRUE;
if (!*e->tag)
*_tag=StrNew(e->file);
else
*_tag=StrNew(e->tag);
*_link=MStrPrint("PI:%s",e->file);
}
break;
case LK_FILE_ANCHOR:
if (DocForm(e,"CEdFileAnchorLink",,,ctrl_L_footer)) {
res=TRUE;
if (!*e->tag)
*_tag=StrNew(e->aux);
else
*_tag=StrNew(e->tag);
*_link=MStrPrint("FA:%s,%s",e->file,e->aux);
}
break;
case LK_FILE_FIND:
if (DocForm(e,"CEdFileFindLink",,,ctrl_L_footer)) {
res=TRUE;
if (e->num==1) {
if (!*e->tag)
*_tag=StrNew(e->aux);
else
*_tag=StrNew(e->tag);
*_link=MStrPrint("FF:%s,%s",e->file,e->aux);
} else {
if (!*e->tag)
*_tag=StrNew(e->aux);
else
*_tag=StrNew(e->tag);
*_link=MStrPrint("FF:%s,%s:%d",e->file,e->aux,e->num);
}
}
break;
case LK_PLAIN_FIND:
if (DocForm(e,"CEdFileFindLink",,,ctrl_L_footer)) {
res=TRUE;
if (e->num==1) {
if (!*e->tag)
*_tag=StrNew(e->aux);
else
*_tag=StrNew(e->tag);
*_link=MStrPrint("PF:%s,%s",e->file,e->aux);
} else {
if (!*e->tag)
*_tag=StrNew(e->aux);
else
*_tag=StrNew(e->tag);
*_link=MStrPrint("PF:%s,%s:%d",e->file,e->aux,e->num);
}
}
break;
case LK_FILE_LINE:
if (DocForm(e,"CEdFileLineLink",,,ctrl_L_footer)) {
res=TRUE;
if (!*e->tag)
*_tag=StrNew(e->file);
else
*_tag=StrNew(e->tag);
*_link=MStrPrint("FL:%s,%d",e->file,e->num);
}
break;
case LK_PLAIN_LINE:
if (DocForm(e,"CEdFileLineLink",,,ctrl_L_footer)) {
res=TRUE;
if (!*e->tag)
*_tag=StrNew(e->file);
else
*_tag=StrNew(e->tag);
*_link=MStrPrint("PL:%s,%d",e->file,e->num);
}
break;
case LK_MAN_PAGE:
if (DocForm(e,"CEdManPageLink",,,ctrl_L_footer)) {
res=TRUE;
if (!*e->tag)
*_tag=StrNew(e->aux);
else
*_tag=StrNew(e->tag);
*_link=MStrPrint("MN:%s",e->aux);
}
break;
case LK_PLACE_ANCHOR:
if (DocForm(e,"CEdPlaceAnchor",,,ctrl_L_footer)) {
res=TRUE;
if (!*e->tag) {
if (e->hide)
*_tag=StrNew("");
else
*_tag=StrNew(e->aux);
} else
*_tag=StrNew(e->tag);
*_link=StrNew(e->aux);
}
break;
case LK_BIBLE_FIND:
if (DocForm(e,"CEdBibleLink",,,ctrl_L_footer)) {
res=TRUE;
if (!*e->tag)
*_tag=MStrPrint("%Z,%s",e->book,"ST_BIBLE_BOOKS",e->aux);
else
*_tag=StrNew(e->tag);
*_link=MStrPrint("BF:%Z,%s",e->book,"ST_BIBLE_BOOKS",e->aux);
}
break;
case LK_DEF:
e->num=-1;
if (DocForm(e,"CEdDefLink",,,ctrl_L_footer)) {
res=TRUE;
if (!*e->tag)
*_tag=StrNew(e->aux);
else
*_tag=StrNew(e->tag);
if (e->num<0)
*_link=MStrPrint("DN:%s",e->aux);
else
*_link=MStrPrint("DN:%s,%d",e->aux,e->num);
}
break;
case LK_HELP_INDEX:
if (DocForm(e,"CEdManPageLink",,,ctrl_L_footer)) {
res=TRUE;
if (!*e->tag)
*_tag=StrNew(e->aux);
else
*_tag=StrNew(e->tag);
*_link=MStrPrint("HI:%s",e->aux);
}
break;
case LK_ADDR:
e->num=DFT_ADDR_LINK_BIN_SIZE;
if (DocForm(e,"CEdAddrLink",,,ctrl_L_footer)) {
res=TRUE;
if (e->num==DFT_ADDR_LINK_BIN_SIZE) {
if (!*e->tag)
*_tag=StrNew(e->aux);
else
*_tag=StrNew(e->tag);
*_link=MStrPrint("AD:%s",e->aux);
} else {
if (!*e->tag)
*_tag=MStrPrint("%s,%d",e->aux,e->num);
else
*_tag=StrNew(e->tag);
*_link=MStrPrint("AD:%s,%d",e->aux,e->num);
}
}
break;
}
}
if (*e->html_link)
*_html_link=StrNew(e->html_link);
else
*_html_link=NULL;
if (e->pop_up)
*_pop_up=TRUE;
else
*_pop_up=FALSE;
if (e->quote)
*_quote=TRUE;
else
*_quote=FALSE;
Free(e);
return res;
}
U0 EdInsLink()
{
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 (GetLink(type,&tag,&link,&pop_up,&quote,&html_link)) {
if (pop_up)
pop_up_st="+PU";
else
pop_up_st="";
switch (type) {
case LK_PLACE_ANCHOR:
if (html_link)
st=MStrPrint("$$AN,\"%$$Q\",A=\"%$$Q\",HTML=\"%$$Q\"$$",
tag,link,html_link);
else
st=MStrPrint("$$AN,\"%$$Q\",A=\"%$$Q\"$$",tag,link);
break;
default:
if (html_link)
st=MStrPrint("$$LK%s,\"%$$Q\",A=\"%$$Q\",HTML=\"%$$Q\"$$",
pop_up_st,tag,link,html_link);
else
st=MStrPrint("$$LK%s,\"%$$Q\",A=\"%$$Q\"$$",pop_up_st,tag,link);
}
}
}
if (st) {
if (quote)
"%$$Q",st;
else
"%s",st;
}
Free(tag);
Free(link);
Free(html_link);
Free(st);
}
I64 PopUpColorType()
{
I64 i;
CDoc *doc=DocNew;
DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Color Type Menu\"$$\n"
"\n$$LTBLUE$$$$MU,\"Foreground\",LE=DOCT_FOREGROUND$$\n"
"$$MU,\"Background\",LE=DOCT_BACKGROUND$$\n"
"$$MU,\"Default Foreground\",LE=DOCT_DFT_FOREGROUND$$\n"
"$$MU,\"Default Background\",LE=DOCT_DFT_BACKGROUND$$\n"
"%s",ctrl_L_footer);
i=PopUpMenu(doc);
DocDel(doc);
return i;
}
I64 PopUpPageSettingType()
{
I64 i;
CDoc *doc=DocNew;
DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Page Setting Menu\"$$\n"
"\n$$LTBLUE$$$$MU,\"Page Length\",LE=DOCT_PAGE_LEN$$\n"
"$$MU,\"Page Header\",LE=DOCT_HEADER$$\n"
"$$MU,\"Page Footer\",LE=DOCT_FOOTER$$\n"
"$$MU,\"Left Margin\",LE=DOCT_LEFT_MARGIN$$\n"
"$$MU,\"Right Margin\",LE=DOCT_RIGHT_MARGIN$$\n"
"%s",ctrl_L_footer);
i=PopUpMenu(doc);
DocDel(doc);
return i;
}
U0 EdInsColor()
{
I64 type=PopUpColorType,col=DOC_DFT;
if (type>=0) {
col=PopUpColor(,FALSE);
if (col==DOC_DFT)
"$$%Z$$",type,"ST_DOC_CMDS";
else if (col>=0)
"$$%Z,%d$$",type,"ST_DOC_CMDS",col;
}
}
class CEdPageSetting1
{
U8 val[512] format "$$DA-P,A=\"Setting Val:%s\"$$\n";
Bool winrel;
};
class CEdPageSetting2
{
U8 val[512] format "$$DA-P,A=\"Setting Val:%s\"$$\n";
Bool winrel format "$$CB,\"Win Relative\"$$\n";
};
U0 EdInsPageSetting()
{
I64 type=PopUpPageSettingType;
CEdPageSetting1 *e=CAlloc(sizeof(CEdPageSetting1));
if (type>=0) {
if (type==DOCT_RIGHT_MARGIN||type==DOCT_PAGE_LEN) {
if (DocForm(e(CEdPageSetting2 *))) {
if (e->winrel) {
if (*e->val)
"$$%Z+WR,%s$$",type,"ST_DOC_CMDS",e->val;
else
"$$%Z+WR,0$$",type,"ST_DOC_CMDS";
} else {
if (*e->val)
"$$%Z,%s$$",type,"ST_DOC_CMDS",e->val;
else
"$$%Z$$",type,"ST_DOC_CMDS";
}
}
} else {
if (DocForm(e)) {
if (*e->val)
"$$%Z,%s$$",type,"ST_DOC_CMDS",e->val;
else
"$$%Z$$",type,"ST_DOC_CMDS";
}
}
}
Free(e);
}
#define WIZ_HIGHLIGHT_ON (DOCT_ERROR+1)
#define WIZ_HIGHLIGHT_OFF (DOCT_ERROR+2)
I64 PopUpWidgetType()
{
I64 i;
CDoc *doc=DocNew;
DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Text Widgets Menu\"$$\n"
"\n$$LTBLUE$$$$MU,\"Link\",LE=DOCT_LINK$$\n"
"$$MU,\"Text\",LE=DOCT_TEXT$$\n"
"$$MU,\"Tree Branch\",LE=DOCT_TREE$$\n"
"$$MU,\"Color\",LE=DOCT_FOREGROUND$$\n"
"$$MU,\"Page Settings\",LE=DOCT_PAGE_LEN$$\n"
"$$MU,\"Cursor Movement\",LE=DOCT_CURSOR_MOVEMENT$$\n"
"$$MU,\"Macro\",LE=DOCT_MACRO$$\n"
"$$MU,\"Bttn\",LE=DOCT_BTTN$$\n"
"$$MU,\"Check Box\",LE=DOCT_CHECK_BOX$$\n"
"$$MU,\"List\",LE=DOCT_LST$$\n"
"$$MU,\"Menu Val\",LE=DOCT_MENU_VAL$$\n"
"$$MU,\"Data\",LE=DOCT_DATA$$\n"
"$$MU,\"Hex Edit\",LE=DOCT_HEX_ED$$\n"
"$$MU,\"Syntax Highlight ON\",LE=WIZ_HIGHLIGHT_ON$$\n"
"$$MU,\"Syntax Highlight OFF\",LE=WIZ_HIGHLIGHT_OFF$$\n"
"$$MU,\"HTML\",LE=DOCT_HTML_CODE$$\n"
"$$MU,\"Song\",LE=DOCT_SONG$$\n"
"%s",ctrl_L_footer);
i=PopUpMenu(doc);
DocDel(doc);
return i;
}
class CEdText
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n";
Bool left_x format "$$CB,\"Left X\"$$\n",
center_x format "$$CB,\"Center X\"$$\n",
right_x format "$$CB,\"Right X\"$$\n",
margin_rel format "$$CB,\"Margin Rel X\"$$\n",
blink format "$$CB,\"Blink\"$$\n",
invert format "$$CB,\"Invert\"$$\n",
underline format "$$CB,\"Underline\"$$\n",
tree format "$$CB,\"Tree\"$$\n",
collapsed format "$$CB,\"Collapsed\"$$\n";
U8 scroll_x [512] format "$$DA-P,A=\"Scroll X Length Expression:%s\"$$\n",
shift_x [512] format "$$DA-P,A=\"X Offset Expression:%s\"$$\n",
shift_y [512] format "$$DA-P,A=\"Y Offset Expression:%s\"$$\n",
define_str[512] format "$$DA-P,A=\"Define Str:%s\"$$\n",
html_link[512] format "$$DA-P,A=\"Html Link:%s\"$$\n";
};
U0 EdInsText()
{
U8 *st,buf[512];
CEdText *e=CAlloc(sizeof(CEdText));
if (DocForm(e,,,,ctrl_L_footer)) {
*buf=0;
if (e->left_x ) CatPrint(buf,"+LX");
if (e->center_x) CatPrint(buf,"+CX");
if (e->right_x ) CatPrint(buf,"+RX");
if (e->margin_rel) CatPrint(buf,"+MRX");
if (e->blink) CatPrint(buf,"+BK");
if (e->invert) CatPrint(buf,"+IV");
if (e->underline) CatPrint(buf,"+UL");
if (e->tree) CatPrint(buf,"+TR");
if (e->collapsed) CatPrint(buf,"+C");
st=MStrPrint("%q",e->tag);
"$$TX%s,\"%$$Q\"",buf,st;
Free(st);
if (*e->shift_x)
",SX=%s",e->shift_x;
if (*e->shift_y)
",SY=%s",e->shift_y;
if (*e->scroll_x)
",SCX=%s",e->scroll_x;
if (*e->define_str) {
st=MStrPrint("%q",e->define_str);
",D=\"%$$Q\"",st;
Free(st);
}
if (*e->html_link) {
st=MStrPrint("%q",e->html_link);
",HTML=\"%$$Q\"",st;
Free(st);
}
"$$";
}
Free(e);
}
class CEdSong
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n",
song[512] format "$$DA-P,A=\"Song:%s\"$$\n";
};
U0 EdInsSong()
{
CEdSong *e=CAlloc(sizeof(CEdSong));
if (DocForm(e,,,,ctrl_L_footer))
"$$SO,\"%$$Q\",A=\"%s\"$$",e->tag,e->song;
Free(e);
}
class CEdHtmlCode
{
U8 tag[512] format "$$DA-P,A=\"Html Code:%s\"$$\n";
};
U0 EdInsHtml()
{
CEdHtmlCode *e=CAlloc(sizeof(CEdHtmlCode));
if (DocForm(e,,,,ctrl_L_footer))
"$$HC,\"%$$Q\"$$",e->tag;
Free(e);
}
class CEdMacroMenu
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n",
left_macro[512] format "$$DA-P,A=\"Left Click Macro:%s\"$$\n",
left_exp[512] format "$$DA-P,A=\"Left Click Expression:%s\"$$\n";
Bool popup format "$$CB,\"PopUp\"$$\n",
left_is_in_str format "$$CB,\"Left is InStr\"$$\n",
left_x format "$$CB,\"Left X \"$$\n",
center_x format "$$CB,\"Center X \"$$\n",
right_x format "$$CB,\"Right X \"$$\n",
margin_rel format "$$CB,\"Margin Rel X\"$$\n",
blink format "$$CB,\"Blink\"$$\n",
invert format "$$CB,\"Invert\"$$\n",
underline format "$$CB,\"Underline\"$$\n",
escape format "$$CB,\"Escape\"$$\n";
U8 scroll_x[512] format "$$DA-P,A=\"Scroll X Length Expression:%s\"$$\n",
shift_x[512] format "$$DA-P,A=\"X Offset Expression:%s\"$$\n",
shift_y[512] format "$$DA-P,A=\"Y Offset Expression:%s\"$$\n";
};
U0 EdInsMacroMenu(Bool is_macro)
{
U8 *st,buf[512];
CEdMacroMenu *e=CAlloc(sizeof(CEdMacroMenu));
e->underline=TRUE;
e->escape=TRUE;
if (DocForm(e,,,,ctrl_L_footer)) {
*buf=0;
if (e->popup) CatPrint(buf,"+PU-X");
if (e->left_x ) CatPrint(buf,"+LX");
if (e->center_x) CatPrint(buf,"+CX");
if (e->right_x ) CatPrint(buf,"+RX");
if (e->margin_rel) CatPrint(buf,"+MRX");
if (e->blink) CatPrint(buf,"+BK");
if (e->invert) CatPrint(buf,"+IV");
if (!e->underline) CatPrint(buf,"-UL");
if (!e->escape) CatPrint(buf,"-X");
if (e->left_is_in_str) CatPrint(buf,"+LIS");
if (*e->tag || is_macro) {
if (is_macro) {
if (*e->tag) {
st=MStrPrint("%q",e->tag);
"$$MA%s,\"%$$Q\"",buf,st;
Free(st);
} else
"$$MA%s",buf;
} else {
st=MStrPrint("%q",e->tag);
"$$MU%s,\"%$$Q\"",buf,st;
Free(st);
}
if (*e->left_exp)
",LE=%s",e->left_exp;
if (*e->left_macro) {
st=MStrPrint("%q",e->left_macro);
",LM=\"%$$Q\"",st;
Free(st);
}
if (*e->shift_x)
",SX=%s",e->shift_x;
if (*e->shift_y)
",SY=%s",e->shift_y;
if (*e->scroll_x)
",SCX=%s",e->scroll_x;
"$$";
}
}
Free(e);
}
class CEdBttn
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n";
Bool popup format "$$CB,\"PopUp\"$$\n",
left_x format "$$CB,\"Left X \"$$\n",
center_x format "$$CB,\"Center X \"$$\n",
right_x format "$$CB,\"Right X \"$$\n",
margin_rel format "$$CB,\"Margin Rel X\"$$\n",
escape format "$$CB,\"Escape\"$$\n";
U8 left_macro[512] format "$$DA-P,A=\"Left Click Macro:%s\"$$\n";
Bool left_is_in_str format "$$CB,\"Left is InStr\"$$\n";
U8 left_exp[512] format "$$DA-P,A=\"Left Click Expression:%s\"$$\n";
Bool quote format "$$CB,\"Quote\"$$\n";
};
U0 EdInsBttn()
{
U8 *st,buf[512];
CEdBttn *e=CAlloc(sizeof(CEdBttn));
e->escape=TRUE;
if (DocForm(e,,,,ctrl_L_footer)) {
*buf=0;
if (e->popup) CatPrint(buf,"+PU-X");
if (e->left_x ) CatPrint(buf,"+LX");
if (e->center_x) CatPrint(buf,"+CX");
if (e->right_x ) CatPrint(buf,"+RX");
if (e->margin_rel) CatPrint(buf,"+MRX");
if (!e->escape) CatPrint(buf,"-X");
if (e->left_is_in_str) CatPrint(buf,"+LIS");
if (*e->tag) {
if (e->quote) {
st=MStrPrint("%q",e->tag);
"$$$$BT%s,\\\"%$$Q\\\"",buf,st;
Free(st);
if (*e->left_exp)
",LE=%s",e->left_exp;
if (*e->left_macro) {
st=MStrPrint("%q",e->left_macro);
",LM=\\\"%$$Q\\\"",st;
Free(st);
}
"$$$$";
} else {
st=MStrPrint("%q",e->tag);
"$$BT%s,\"%$$Q\"",buf,st;
Free(st);
if (*e->left_exp)
",LE=%s",e->left_exp;
if (*e->left_macro) {
st=MStrPrint("%q",e->left_macro);
",LM=\"%$$Q\"",st;
Free(st);
}
"$$";
}
}
}
Free(e);
}
class CEdCursorMovement
{
U8 left_exp[512] format "$$DA-P,A=\"X Expression(LE):%s\"$$\n",
right_exp[512] format "$$DA-P,A=\"Y Expression(RE):%s\"$$\n";
Bool left_x format "$$CB,\"LeftX \"$$\n",
center_x format "$$CB,\"CenterX \"$$\n",
right_x format "$$CB,\"RightX \"$$\n",
margin_rel format "$$CB,\"Margin Rel X\"$$\n",
top_y format "$$CB,\"TopY \"$$\n",
center_y format "$$CB,\"CenterY \"$$\n",
bottom_y format "$$CB,\"BottomY \"$$\n",
page_rel format "$$CB,\"Page Rel Y\"$$\n",
quote format "$$CB,\"Quote\"$$\n";
};
U0 EdInsCursorMovement()
{
U8 buf[512];
CEdCursorMovement *e=CAlloc(sizeof(CEdCursorMovement));
if (DocForm(e,,,,ctrl_L_footer)) {
*buf=0;
if (e->left_x ) CatPrint(buf,"+LX");
if (e->center_x) CatPrint(buf,"+CX");
if (e->right_x ) CatPrint(buf,"+RX");
if (e->margin_rel) CatPrint(buf,"+MRX");
if (e->top_y ) CatPrint(buf,"+TY");
if (e->center_y) CatPrint(buf,"+CY");
if (e->bottom_y) CatPrint(buf,"+BY");
if (e->page_rel) CatPrint(buf,"+PRY");
if (!*e->left_exp) CatPrint(buf,"-LE");
if (!*e->right_exp) CatPrint(buf,"-RE");
if (e->quote)
"$$";
"$$CM%s",buf;
if (*e->left_exp)
",LE=%s",e->left_exp;
if (*e->right_exp)
",RE=%s",e->right_exp;
"$$";
if (e->quote)
"$$";
}
Free(e);
}
class CEdDataNum
{
U8 fmt_str[512] format "$$DA-P,A=\"Format Str:%s\"$$\n";
I64 len;
Bool term format "$$CB,\"Form Field Terminator\"$$\n",
remalloc,
refresh format "$$CB,\"Refresh Data\"$$\n",
update format "$$CB,\"Update Data\"$$\n";
};
class CEdDataStr
{
U8 fmt_str[512] format "$$DA-P,A=\"Format Str:%s\"$$\n";
I64 len format "$$DA,A=\"Length:%d\"$$\n";
Bool term format "$$CB,\"Zero Terminator\"$$\n",
remalloc format "$$CB,\"Remalloc for Unlimited Length\"$$\n",
refresh format "$$CB,\"Refresh Data\"$$\n",
update format "$$CB,\"Update Data\"$$\n";
};
U0 EdInsData()
{
I64 i,type=RT_I64;
U8 *st,buf[512],raw_type[16];
CEdDataNum *e=CAlloc(sizeof(CEdDataNum));
e->term=TRUE;
e->len=DOCE_LEN_DFT;
if ((i=PopUpPickDefineSub("ST_NATURAL_TYPES"))>=0) {
*buf=0;
i+=RT_I8;
if (i==RT_F32)
i=RT_F64;
if (i==RT_UF32) {//U8 *
i=DocForm(e(CEdDataStr *),,,,ctrl_L_footer);
if (e->remalloc) {
CatPrint(buf,"+M");
e->term=TRUE;
} else
CatPrint(buf,"-P");
} else {
type=i;
i=DocForm(e,,,,ctrl_L_footer);
}
if (i) {
if (type==RT_I64)
*raw_type=0;
else
StrPrint(raw_type,",RT=%Z",type,"ST_RAW_TYPES");
if (!e->term) CatPrint(buf,"-TRM");
if (e->refresh) CatPrint(buf,"+RD");
if (e->update) CatPrint(buf,"+UD");
st=MStrPrint("%q",e->fmt_str);
if (e->remalloc)
"$$$$DA%s,A=\\\"%$$Q\\\"$$$$",buf,st;
else if (e->len==DOCE_LEN_DFT)
"$$$$DA%s%s,A=\\\"%$$Q\\\"$$$$",buf,raw_type,st;
else
"$$$$DA%s,LEN=%d%s,A=\\\"%$$Q\\\"$$$$",buf,e->len,raw_type,st;
Free(st);
}
}
Free(e);
}
class CEdCheckBox
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n";
Bool refresh format "$$CB,\"Refresh Data\"$$\n";
I64 type format "$$LS,D=\"ST_INT_SIZE_TYPES\"$$\n";
};
U0 EdInsCheckBox()
{
U8 *st,buf[512],raw_type[16];
CEdCheckBox *e=CAlloc(sizeof(CEdCheckBox));
e->type=RT_I8-RT_I8;
if (DocForm(e,,,,ctrl_L_footer)) {
*buf=0;
e->type+=RT_I8;
if (e->type==RT_I8)
*raw_type=0;
else
StrPrint(raw_type,",RT=%Z",e->type,"ST_RAW_TYPES");
if (e->refresh) CatPrint(buf,"+RD");
st=MStrPrint("%q",e->tag);
"$$$$CB%s%s,\\\"%$$Q\\\"$$$$",buf,raw_type,st;
Free(st);
}
Free(e);
}
class CEdLst
{
U8 tag[512] format "$$DA-P,A=\"Dft Sel:%s\"$$\n",
define_str[512] format "$$DA-P,A=\"Define Str:%s\"$$\n";
Bool refresh format "$$CB,\"Refresh Data\"$$\n";
I64 type format "$$LS,D=\"ST_INT_SIZE_TYPES\"$$\n";
};
U0 EdInsLst()
{
U8 *st1,*st2,buf[512],raw_type[16];
CEdLst *e=CAlloc(sizeof(CEdLst));
e->type=RT_I64-RT_I8;
if (DocForm(e,,,,ctrl_L_footer)) {
*buf=0;
e->type+=RT_I8;
if (e->type==RT_I64)
*raw_type=0;
else
StrPrint(raw_type,",RT=%Z",e->type,"ST_RAW_TYPES");
if (e->refresh) CatPrint(buf,"+RD");
if (!*e->tag)
st1=NULL;
else
st1=MStrPrint("%q",e->tag);
st2=MStrPrint("%q",e->define_str);
if (st1)
"$$$$LS%s%s,\\\"%$$Q\\\",D=\\\"%$$Q\\\"$$$$",buf,raw_type,st1,st2;
else
"$$$$LS%s%s,D=\\\"%$$Q\\\"$$$$",buf,raw_type,st2;
Free(st1);
Free(st2);
}
Free(e);
}
class CEdHexEd
{
I64 cnt format "$$DA,A=\"Count:%d\"$$\n",
cols format "$$DA,A=\"Columns:%d\"$$\n";
Bool zero format "$$CB,\"Zero Based\"$$\n",
refresh format "$$CB,\"Refresh Data\"$$\n";
};
U0 EdInsHexEd()
{
U8 buf[512];
CEdHexEd *e=CAlloc(sizeof(CEdHexEd));
e->cnt=128;
e->cols=4;
e->zero=TRUE;
if (DocForm(e,,,,ctrl_L_footer)) {
*buf=0;
if (!e->zero) CatPrint(buf,"-Z");
if (e->refresh) CatPrint(buf,"+RD");
"$$$$HX%s,%d,%d$$$$",buf,e->cnt,e->cols;
}
Free(e);
}
class CEdBin
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n";
I64 bin_num format "$$DA,A=\"Bin Num:%d\"$$\n";
U8 bin_ptr_link_file[512] format "$$DA-P,A=\"File:%s\"$$\n";
I64 bin_ptr_link_bin_num format "$$DA,A=\"File Bin Num:%d\"$$\n";
U8 bin_ptr_link_tag[512] format "$$DA-P,A=\"File Bin Tag:%s\"$$\n";
};
U0 EdInsBin(I64 bin_num,I64 type)
{
CEdBin *e=CAlloc(sizeof(CEdBin));
StrPrint(e->tag,"<%d>",bin_num);
e->bin_num=bin_num;
e->bin_ptr_link_bin_num=1;
if (DocForm(e,,,
"Note: Normally, you enter no file,\n"
"just a bin num.If You enter a\n"
"file, enter a file bin num or a file\n"
"bin tag.\n\n",ctrl_L_footer)) {
if (*e->bin_ptr_link_file) {
if (*e->bin_ptr_link_tag)
"$$%Z,\"%$$Q\",BI=%d,BP=\"%s,%s\"$$",type,"ST_DOC_CMDS",e->tag,e->bin_num,
e->bin_ptr_link_file,e->bin_ptr_link_tag;
else
"$$%Z,\"%$$Q\",BI=%d,BP=\"%s,%d\"$$",type,"ST_DOC_CMDS",e->tag,e->bin_num,
e->bin_ptr_link_file,e->bin_ptr_link_bin_num;
} else {
if (DocBinFindNum(DocPut,e->bin_num))
"$$%Z,\"%$$Q\",BI=%d$$",type,"ST_DOC_CMDS",e->tag,e->bin_num;
else
PopUpOk("Invalid Binary Num");
}
}
Free(e);
}
class CEdTree
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n";
I64 indent format "$$DA,A=\"Indention:%d\"$$\n";
Bool collapsed format "$$CB,\"Collapsed\"$$\n";
};
U0 EdInsTree()
{
U8 *st1,*st2,buf[512];
CEdTree *e=CAlloc(sizeof(CEdTree));
e->collapsed=TRUE;
e->indent=2;
if (DocForm(e,,,,ctrl_L_footer)) {
*buf=0;
if (!e->collapsed) CatPrint(buf,"-C");
st1=MStrPrint("%q",e->tag);
st2=MStrPrint("$$TR%s,\"%$$Q\"$$\n$$ID,%d$$*\n$$ID,%d$$",
buf,st1,e->indent,-e->indent);
DocPrintAtomic(DocPut,"%s",st2);
Free(st1);
Free(st2);
}
Free(e);
}
U0 EdInsWidgetWiz()
{
I64 type=PopUpWidgetType;
switch (type) {
case DOCT_FOREGROUND:
EdInsColor;
break;
case DOCT_PAGE_LEN:
EdInsPageSetting;
break;
case DOCT_LINK:
EdInsLink;
break;
case DOCT_TEXT:
EdInsText;
break;
case DOCT_TREE:
EdInsTree;
break;
case DOCT_MACRO:
EdInsMacroMenu(TRUE);
break;
case DOCT_MENU_VAL:
EdInsMacroMenu(FALSE);
break;
case DOCT_CURSOR_MOVEMENT:
EdInsCursorMovement;
break;
case DOCT_BTTN:
EdInsBttn;
break;
case DOCT_DATA:
EdInsData;
break;
case DOCT_CHECK_BOX:
EdInsCheckBox;
break;
case DOCT_LST:
EdInsLst;
break;
case DOCT_HEX_ED:
EdInsHexEd;
break;
case DOCT_SONG:
EdInsSong;
break;
case WIZ_HIGHLIGHT_ON:
"$$HL,1$$";
break;
case WIZ_HIGHLIGHT_OFF:
"$$HL,0$$";
break;
case DOCT_HTML_CODE:
EdInsHtml;
}
}
#define EST_SPRITE 0
#define EST_SPRITE_PTR 1
#define EST_DUP_SPRITE 2
#define EST_SPRITE_SIZE 3
#define EST_SPRITE_MACRO 4
#define EST_SPRITE_MENU 5
#define EST_SPRITE_LINK 6
I64 PopUpSpriteType()
{
I64 i;
CDoc *doc=DocNew;
DocPrint(doc,"$$PURPLE$$$$TX+CX,\"Graphic Sprite Resource Menu\"$$\n"
"$$LK+PU+CX,\"Click for Help\",A=\"FI:::/Doc/Resource.DD.Z\"$$\n\n"
"$$LTBLUE$$$$MU,\"Make Sprite\",LE=EST_SPRITE$$$$FG$$\t"
"Start by making a sprite.\n"
"$$LTBLUE$$$$MU,\"Ptr to Sprite\",LE=EST_SPRITE_PTR$$$$FG$$\t"
"Insert pointer into src code.\n"
"$$LTBLUE$$$$MU,\"Duplicate Sprite\",LE=EST_DUP_SPRITE$$$$FG$$"
"Make dup image for in a doc.\n"
"$$LTBLUE$$$$MU,\"Sprite Size\",LE=EST_SPRITE_SIZE$$$$FG$$\t"
"Insert size of a sprite into src code.\n"
"$$LTBLUE$$$$MU,\"Sprite Macro\",LE=EST_SPRITE_MACRO$$$$FG$$\t"
"Create icon with auto-text payload.\n"
"$$LTBLUE$$$$MU,\"Sprite Menu Item\",LE=EST_SPRITE_MENU$$$$FG$$"
"Create icon with numeric payload.\n"
"$$LTBLUE$$$$MU,\"Sprite Link\",LE=EST_SPRITE_LINK$$$$FG$$\t"
"Create icon with link payload.\n\n"
"$$LTBLUE$$$$MU,\"Abort\",LE=DOCM_CANCEL$$\n\n");
i=PopUpMenu(doc);
DocDel(doc);
return i;
}
class CEdMacroSprite
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n",
exp[512] format "$$DA-P,A=\"Macro:%s\"$$\n";
Bool escape format "$$CB,\"Escape\"$$\n",
popup format "$$CB,\"PopUp\"$$\n",
is_in_str format "$$CB,\"InStr\"$$\n";
};
class CEdMenuSprite
{
U8 tag[512] format "$$DA-P,A=\"Tag Text:%s\"$$\n",
exp[512] format "$$DA-P,A=\"Expression:%s\"$$\n";
Bool escape format "$$CB,\"Escape\"$$\n",
popup,
is_in_str;
};
U8 *EdSpriteLink(Bool *_pop_up,U8 **_html_link)
{
U8 *res=NULL,*tag=NULL,*link=NULL;
Bool quote=FALSE;
I64 type=PopUpLinkType(FALSE);
*_html_link=NULL;
if (type>=0 && GetLink(type,&tag,&link,_pop_up,&quote,_html_link))
res=MStrPrint("\"%$$Q\",A=\"%$$Q\"",tag,link);
Free(tag);
Free(link);
return res;
}
U8 *EdSprite(I64 bin_num)
{
I64 type=PopUpSpriteType;
Bool pop_up;
U8 *st,*st1=NULL,*st2=NULL,buf[1024],*html_link=NULL;
CEdMacroSprite *e=CAlloc(sizeof(CEdMacroSprite));
*buf=0;
switch (type) {
case EST_SPRITE:
st1=MStrPrint("\"<%d>\"",bin_num);
break;
case EST_SPRITE_MACRO:
e->escape=TRUE;
if (DocForm(e,,,,ctrl_L_footer)) {
CatPrint(buf,"+UL");
if (e->is_in_str) CatPrint(buf,"+LIS");
if (e->popup) CatPrint(buf,"+PU");
if (e->escape) CatPrint(buf,"+X");
st=MStrPrint("%q",e->exp);
st1=MStrPrint("\"%$$Q\",LM=\"%$$Q\"",e->tag,st);
Free(st);
}
break;
case EST_SPRITE_MENU:
e->escape=TRUE;
if (DocForm(e,"CEdMenuSprite",,,ctrl_L_footer)) {
if (e->escape) CatPrint(buf,"+X");
st1=MStrPrint("\"%$$Q\",LE=%s",e->tag,e->exp);
}
break;
case EST_SPRITE_LINK:
CatPrint(buf,"+L");
st1=EdSpriteLink(&pop_up,&html_link);
if (pop_up)
CatPrint(buf,"+PU");
break;
case EST_SPRITE_PTR:
EdInsBin(--bin_num,DOCT_INS_BIN);
break;
case EST_SPRITE_SIZE:
EdInsBin(--bin_num,DOCT_INS_BIN_SIZE);
break;
case EST_DUP_SPRITE:
EdInsBin(--bin_num,DOCT_SPRITE);
break;
}
if (st1) {
if (html_link)
st2=MStrPrint("$$SP%s,%s,HTML=\"%$$Q\",BI=%d$$",buf,st1,html_link,bin_num);
else
st2=MStrPrint("$$SP%s,%s,BI=%d$$",buf,st1,bin_num);
Free(st1);
}
Free(e);
Free(html_link);
return st2;
}