Team Ai
Datasetpublic

hschumann2/TempleOS-Source-Code

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes847downloads
TaskSettings.txt122 linesDownload Raw Back to Adam
1 2#help_index "Task/Settings"3 4public CTaskSettings *SettingsPush(CTask *task=NULL,I64 flags=0)5{//Typically, called at start of an application.6//It saves many settings so they can be restored7  //at the end of the application with SettingsPop().8 9  CTaskSettings *tmpse;10  CDoc *doc;11  if (!task) task=Fs;12  if (!TaskValidate(task)) return NULL;13  tmpse=CAlloc(sizeof(CTaskSettings),task);14  tmpse->cur_dir=DirCur(task,task);15  tmpse->draw_it=task->draw_it;16  GrPaletteGet(tmpse->palette);17  tmpse->task_end_cb=task->task_end_cb;18 19  if (!(flags&TSF_SAME_SONG)) {20    if (tmpse->song_task=task->song_task) {21      Suspend(task->song_task);22      Snd;23    }24    task->song_task=NULL;25  }26 27  if (tmpse->animate_task=task->animate_task)28    Suspend(task->animate_task);29  task->animate_task=NULL;30 31  if (doc=DocPut(task)) {32    tmpse->hide_cursor=!Bt(&doc->flags,DOCf_HIDE_CURSOR);33    tmpse->highlight_cursor=!Bt(&doc->flags,DOCf_DONT_HIGHLIGHT_CURSOR);34    tmpse->scroll=!Bt(&doc->flags,DOCf_NO_SCROLL_BARS);35  }36 37  tmpse->left=task->win_left;38  tmpse->right=task->win_right;39  tmpse->top=task->win_top;40  tmpse->bottom=task->win_bottom;41 42  tmpse->scroll_x=task->scroll_x;43  tmpse->scroll_y=task->scroll_y;44  tmpse->scroll_z=task->scroll_z;45 46  tmpse->win_inhibit=task->win_inhibit;47  tmpse->text_attr=task->text_attr;48  StrCpy(tmpse->task_title,task->task_title);49  tmpse->title_src  =task->title_src;50  tmpse->border_attr=task->border_attr;51  tmpse->border_src =task->border_src;52  tmpse->border=!Bt(&task->display_flags,DISPLAYf_NO_BORDER);53  if (TaskValidate(ac.task))54    tmpse->autocomplete=TRUE;55  else56    tmpse->autocomplete=FALSE;57 58  tmpse->next=task->next_settings;59  task->next_settings=tmpse;60  return tmpse;61}62 63U0 SettingsPop2(CTask *task,CTaskSettings *tmpse)64{65  CDoc *doc;66 67  if (doc=DocPut(task)) {68    LBEqu(&doc->flags,DOCf_HIDE_CURSOR,!tmpse->hide_cursor);69    LBEqu(&doc->flags,DOCf_DONT_HIGHLIGHT_CURSOR,!tmpse->highlight_cursor);70    LBEqu(&doc->flags,DOCf_NO_SCROLL_BARS,!tmpse->scroll);71  }72 73  WinBorder(tmpse->border,task);74  WinHorz(tmpse->left,tmpse->right,task);75  WinVert(tmpse->top,tmpse->bottom,task);76  task->scroll_x=tmpse->scroll_x;77  task->scroll_y=tmpse->scroll_y;78  task->scroll_z=tmpse->scroll_z;79  task->win_inhibit=tmpse->win_inhibit;80  task->text_attr=tmpse->text_attr;81  task->border_attr=tmpse->border_attr;82  task->border_src =tmpse->border_src;83  task->title_src  =tmpse->title_src;84  StrCpy(task->task_title,tmpse->task_title);85  AutoComplete(tmpse->autocomplete);86  GrPaletteSet(tmpse->palette);87  Snd;88}89 90public U0 SettingsPop(CTask *task=NULL,I64 flags=0)91{//Typically, called at end of an application.92  CTaskSettings *tmpse;93  if (!task) task=Fs;94  if (!TaskValidate(task))95    return;96  if (tmpse=task->next_settings) {97    task->next_settings=tmpse->next;98    Cd(tmpse->cur_dir);99    Free(tmpse->cur_dir);100    task->draw_it=tmpse->draw_it;101    task->task_end_cb=tmpse->task_end_cb;102 103    if (task->animate_task)104      Kill(task->animate_task);105    if (task->animate_task=tmpse->animate_task)106      Suspend(task->animate_task,FALSE);107 108    if (!(flags&TSF_SAME_SONG)) {109      if (task->song_task)110        Kill(task->song_task);111      if (task->song_task=tmpse->song_task)112        Suspend(task->song_task,FALSE);113    }114 115    SettingsPop2(task,tmpse); //Do it to get ress fast116    Refresh(,TRUE);117    SettingsPop2(task,tmpse); //Redo in case was lost by old update118 119    Free(tmpse);120  }121}122