Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
DocPopUp.txt319 linesDownload Raw Back to DolDoc
1 2#help_index "DolDoc/Output;StdOut/DolDoc"3public CTask *PopUpViewDoc(CDoc *doc,I64 dof_flags=0)4{//Pass doc to PopUp win task for viewing.5  U8 *buf=MStrPrint("DocEd(0x%X,0x%X);",doc,dof_flags);6  CTask *task=Spawn(&SrvCmdLine,NULL,"View",,Fs);7  TaskExe(task,NULL,buf,1<<JOBf_EXIT_ON_COMPLETE|1<<JOBf_FREE_ON_COMPLETE);8  Free(buf);9  return task;10}11 12public CTask *PopUpViewPrint(U8 *fmt,...)13{//View Print stmt in PopUp win task.14  CTask *task=Spawn(&SrvCmdLine,NULL,"View",,Fs);15  U8 *buf=StrPrintJoin(NULL,fmt,argc,argv);16  CDoc *doc=DocNew(,task);17  DocPrint(doc,buf);18  Free(buf);19  buf=MStrPrint("DocEd(0x%X);",doc);20  TaskExe(task,NULL,buf,1<<JOBf_EXIT_ON_COMPLETE|1<<JOBf_FREE_ON_COMPLETE);21  Free(buf);22  return task;23}24 25#help_index "DolDoc/Input;File/FileNames;StdIn/DolDoc"26public U8 *PopUpPickFile(U8 *dir=NULL)27{//Filename chooser.  Uses FileMgr().28  U8 *res,*st,*st2;29  if (dir)30    st=MStrPrint("Cd(\"%Q\");FileMgr(FM_PICK_FILE,Fs->parent_task);",dir);31  else {32    st2=DirCur;33    st=MStrPrint("Cd(\"%Q\");FileMgr(FM_PICK_FILE,Fs->parent_task);",st2);34    Free(st2);35  }36  res=PopUp(st,Fs);37  Free(st);38  return res;39}40 41public U8 *PopUpPickDir(U8 *dir=NULL)42{//File dir name chooser.  Uses FileMgr().43  U8 *res,*st,*st2;44  if (dir)45    st=MStrPrint("Cd(\"%Q\");FileMgr(FM_PICK_DIR,Fs->parent_task);",dir);46  else {47    st2=DirCur;48    st=MStrPrint("Cd(\"%Q\");FileMgr(FM_PICK_DIR,Fs->parent_task);",st2);49    Free(st2);50  }51  res=PopUp(st,Fs);52  Free(st);53  return res;54}55 56public U8 *FileNameForm(U8 *dft=NULL,I64 dof_flags=0,CTask *mem_task=NULL)57{//Text filename form in cur win, not PopUp.58  CEdFileName fn;59  if (dft)60    StrCpy(fn.name,dft);61  else62    *fn.name=0;63  if (DocForm(&fn,,dof_flags))64    return StrNew(fn.name,mem_task);65  else66    return NULL;67}68 69public U8 *PopUpFileName(U8 *dft=NULL,I64 dof_flags=0)70{//Filename chooser. Uses form, not FileMgr().71  U8 *st=MStrPrint("FileNameForm(\"%Q\",0x%X,Fs->parent_task);",72        dft,dof_flags|DOF_SIZE_MIN),*res=PopUp(st,Fs);73  Free(st);74  return res;75}76 77#help_index "DolDoc"78Bool PopUpCd()79{80  Bool res;81  U8 *st=PopUpPickDir;82  if (st) {83    res=Cd(st);84    Free(st);85  } else86    res=FALSE;87  return res;88}89 90#help_index "DolDoc/Input;Char/Lists;StdIn/DolDoc"91public I64 PopUpPickLst(U8 *lst)92{//Prompt for lst entry in PopUp win task.93  I64 res,i=0;94  CDoc *doc=DocNew;95  DocPrint(doc,"$LTBLUE$");96  while (*lst) {97    if (*lst=='@') {//Check for '@' alias lst entry98      i--;99      lst++;100    }101    DocPrint(doc,"$MU,\"%s\",LE=%d$\n",lst,i++);102    lst+=StrLen(lst)+1;103  }104  DocPrint(doc,"\n$MU,\"CANCEL\",LE=DOCM_CANCEL$\n");105  res=PopUpMenu(doc);106  DocDel(doc);107  return res;108}109 110#help_index "DolDoc/Input;Char/Lists;Char/Define;StdIn/DolDoc"111public U8 *PopUpPickDefineSub(U8 *dname)112{//Prompt for Define lst entry in PopUp win task.113  return PopUpPickLst(Define(dname));114}115 116#help_index "DolDoc/Input;StdIn/DolDoc"117public I64 PopUp1(U8 *b1,I64 n1,U8 *header=NULL,U8 *footer=NULL)118{//Make PopUp win task with one bttn.119  I64 i,l1=StrLen(b1);120  CDoc *doc=DocNew;121  if (header) DocPrint(doc,"%s",header);122  DocPrint(doc,"$CM+CX,%d,4$$BT,\"%s\",LE=%d$\n",-l1/2,b1,n1);123  if (footer) DocPrint(doc,"%s",footer);124  i=PopUpMenu(doc);125  DocDel(doc);126  return i;127}128 129public I64 PopUp2(U8 *b1,I64 n1,U8 *b2,I64 n2,U8 *header=NULL,U8 *footer=NULL)130{//Make PopUp win task with two bttns.131  I64 i,l1=StrLen(b1),l2=StrLen(b2),y;132  CDoc *doc=DocNew;133  if (header) {134    DocPrint(doc,"%s",header);135    y=4;136  } else {137    DocPrint(doc,"%*s\n",l1+l2+10,"");138    y=3;139  }140  DocPrint(doc,"$CM+CX,%d,%d$$BT,\"%s\",LE=%d$",-(l1+l2+3)>>1,y,b1,n1);141  DocPrint(doc,"$CM+CX,%d,0$$BT,\"%s\",LE=%d$\n" ,-(l1+l2+3)>>1+l1+6,b2,n2);142  if (footer) DocPrint(doc,"%s",footer);143  i=PopUpMenu(doc);144  DocDel(doc);145  return i;146}147 148public Bool PopUpOk(U8 *header=NULL,U8 *footer=NULL)149{//Make PopUp win task with OKAY bttn.150  return PopUp1("OKAY",1,header,footer)>0;151}152 153public Bool PopUpNoYes(U8 *header=NULL,U8 *footer=NULL)154{//Make PopUp win task with NO/YES bttns.155  return PopUp2("YES",1,"NO",0,header,footer)>0;156}157 158public Bool PopUpCancelOk(U8 *header=NULL,U8 *footer=NULL)159{//Make PopUp win task CANCEL/OKAY bttns.160  return PopUp2("OKAY",1,"CANCEL",0,header,footer)>0;161}162 163U8 *PopUpGetStr2(U8 *header,CTask *mem_task)164{165  U8 *res,*st;166  if (header)167    "%s",header;168  st=GetStr(,,GSF_WITH_NEW_LINE);169  res=StrNew(st,mem_task);170  Free(st);171  return res;172}173 174public U8 *PopUpGetStr(U8 *header=NULL)175{//Prompt for text str in PopUp win task.176  U8 *st=MStrPrint("PopUpGetStr2(0x%X,0x%X);",header,Fs),177        *res=PopUp(st,Fs);178  Free(st);179  return res;180}181 182public I64 PopUpGetI64(U8 *msg,I64 dft,I64 lo=I64_MIN,I64 hi=I64_MAX)183{//Prompt for I64 text expression in PopUp win task.184  U8 *st=MStrPrint("GetI64(0x%X,0x%X,0x%X,0x%X);",msg,dft,lo,hi);185  I64 res=PopUp(st,Fs);186  Free(st);187  return res;188}189 190public F64 PopUpGetF64(U8 *msg,F64 dft,F64 lo=F64_MIN,F64 hi=F64_MAX)191{//Prompt for F64 text expression in PopUp win task.192  U8 *st=MStrPrint("GetF64(0x%X,0x%X(F64),0x%X(F64),0x%X(F64));",msg,dft,lo,hi);193  F64 res=PopUp(st,Fs)(F64);194  Free(st);195  return res;196}197 198public I64 PopUpRangeI64(I64 lo,I64 hi,I64 step=1,199        U8 *header=NULL,U8 *footer=NULL)200{//Evenly-spaced I64 range chooser in PopUp win task.201  I64 i;202  CDoc *doc=DocNew;203  if (header)204    DocPrint(doc,"%s",header);205  DocPrint(doc,"$LTBLUE$");206  for (i=lo;i<=hi;i+=step)207    DocPrint(doc,"$MU,\"%d\",LE=%d$\n",i,i);208  if (footer)209    DocPrint(doc,"%s",footer);210  i=PopUpMenu(doc);211  DocDel(doc);212  return i;213}214 215public F64 PopUpRangeF64(F64 lo,F64 hi,F64 step,216    U8 *fmt="%9.4f",U8 *header=NULL,U8 *footer=NULL)217{//Evenly-spaced F64 range chooser in PopUp win task.218  F64 d;219  I64 i;220  U8 buf[STR_LEN];221  CDoc *doc=DocNew;222  if (header)223    DocPrint(doc,"%s",header);224  DocPrint(doc,"$LTBLUE$");225  for (d=lo;d<=hi;d+=step) {226    StrPrint(buf,fmt,d);227    DocPrint(doc,"$MU,\"%s\",LE=0x%X$\n",buf,d);228  }229  if (footer)230    DocPrint(doc,"%s",footer);231  i=PopUpMenu(doc);232  DocDel(doc);233  return i(F64);234}235 236public F64 PopUpRangeF64Exp(F64 lo,F64 hi,F64 factor,237    U8 *fmt="%9.4f",U8 *header=NULL,U8 *footer=NULL)238{//Exp-spaced F64 range chooser in PopUp win task.239  F64 d;240  I64 i;241  U8 buf[STR_LEN];242  CDoc *doc=DocNew;243  if (header)244    DocPrint(doc,"%s",header);245  DocPrint(doc,"$LTBLUE$");246  for (d=lo;d<=hi;d*=factor) {247    StrPrint(buf,fmt,d);248    DocPrint(doc,"$MU,\"%s\",LE=0x%X$\n",buf,d);249  }250  if (footer)251    DocPrint(doc,"%s",footer);252  i=PopUpMenu(doc);253  DocDel(doc);254  return i(F64);255}256 257public F64 PopUpRangeF64Log(F64 lo,F64 hi,I64 steps,258    U8 *fmt="%9.4f",U8 *header=NULL,U8 *footer=NULL)259{//Log-spaced F64 range chooser in PopUp win task.260  return PopUpRangeF64Exp(lo,hi,Exp(Ln(hi/lo)/(steps-1)),fmt,header,footer);261}262 263#help_index "Job/Exe;Task/Job/Exe;Compiler"264public I64 AdamFile(U8 *filename,Bool warn_ext=TRUE)265{//Make adam_task execute file.266  Bool okay=TRUE;267  U8 *name=FileNameAbs(filename),268        *name2=ExtDft(name,"HC.Z");269  I64 res=0;270  if (warn_ext &&271        !FilesFindMatch(name2,FILEMASK_JIT) &&272        !PopUpCancelOk(ST_WARN_ST "Not .HC File\n\n"))273    okay=FALSE;274  if (okay)275    res=Adam("#include \"%s\";",name2);276  Free(name2);277  Free(name);278  return res;279}280 281public I64 PopUpFile(U8 *filename,Bool warn_ext=TRUE,282        CTask *parent=NULL,CTask **_pu_task=NULL)283{//ExeFile2() in PopUp task. Cont as User.284  Bool okay=TRUE;285  U8 *st,*name=FileNameAbs(filename),286        *name2=ExtDft(name,"HC.Z");287  I64 res=0;288  if (warn_ext &&289        !FilesFindMatch(name2,FILEMASK_JIT) &&290        !PopUpCancelOk(ST_WARN_ST "Not .HC File\n\n"))291    okay=FALSE;292  if (okay) {293    st=MStrPrint(294          "\"$$WW+H,1$$\";In(\"ExeFile2(\\\"%s\\\",CCF_CMD_LINE);\\n\");"295          "UserTaskCont;",296          name2);297    res=PopUp(st,parent,_pu_task);298    Free(st);299  }300  Free(name2);301  Free(name);302  return res;303}304 305public I64 PopUpRunFile(U8 *filename,I64 ccf_flags=0,...)306{//ExeFile() with args using LastFun() in PopUp task.307  U8 *st,*name=FileNameAbs(filename),308        *name2=ExtDft(name,"HC.Z");309  I64 res=0;310  st=MStrPrint(311        "\"$$WW+H,1$$\";ExeFile2(\"%s\",0x%X);LastFun(0x%X,0x%X);",312        name2,ccf_flags,argc,argv);313  res=PopUp(st,Fs);314  Free(st);315  Free(name2);316  Free(name);317  return res;318}319