#help_index "Task/Settings" public CTaskSettings *SettingsPush(CTask *task = NULL, I64 flags = 0) {//Typically, called at start of an application. //It saves many settings so they can be restored //at the end of the application with SettingsPop(). CTaskSettings *tmpse; CDoc *doc; if (!task) task = Fs; if (!TaskValidate(task)) return NULL; tmpse = CAlloc(sizeof(CTaskSettings), task); tmpse->cur_dir = DirCur(task, task); tmpse->draw_it = task->draw_it; GrPaletteGet(tmpse->palette); tmpse->task_end_cb = task->task_end_cb; if (!(flags & TSF_SAME_SONG)) { if (tmpse->song_task = task->song_task) { Suspend(task->song_task); Sound; } task->song_task = NULL; } if (tmpse->animate_task = task->animate_task) Suspend(task->animate_task); task->animate_task = NULL; if (doc = DocPut(task)) { tmpse->hide_cursor = !Bt(&doc->flags, DOCf_HIDE_CURSOR); tmpse->highlight_cursor = !Bt(&doc->flags, DOCf_DONT_HIGHLIGHT_CURSOR); tmpse->scroll = !Bt(&doc->flags, DOCf_NO_SCROLL_BARS); } tmpse->left = task->win_left; tmpse->right = task->win_right; tmpse->top = task->win_top; tmpse->bottom = task->win_bottom; tmpse->scroll_x = task->scroll_x; tmpse->scroll_y = task->scroll_y; tmpse->scroll_z = task->scroll_z; tmpse->win_inhibit = task->win_inhibit; tmpse->text_attr = task->text_attr; StrCopy(tmpse->task_title, task->task_title); tmpse->title_src = task->title_src; tmpse->border_attr = task->border_attr; tmpse->border_src = task->border_src; tmpse->border = !Bt(&task->display_flags, DISPLAYf_NO_BORDER); if (TaskValidate(ac.task)) tmpse->autocomplete = TRUE; else tmpse->autocomplete = FALSE; tmpse->next = task->next_settings; task->next_settings = tmpse; return tmpse; } U0 SettingsPop2(CTask *task, CTaskSettings *tmpse) { CDoc *doc; if (doc = DocPut(task)) { LBEqual(&doc->flags, DOCf_HIDE_CURSOR, !tmpse->hide_cursor); LBEqual(&doc->flags, DOCf_DONT_HIGHLIGHT_CURSOR, !tmpse->highlight_cursor); LBEqual(&doc->flags, DOCf_NO_SCROLL_BARS, !tmpse->scroll); } WinBorder(tmpse->border, task); WinHorz(tmpse->left, tmpse->right, task); WinVert(tmpse->top, tmpse->bottom, task); task->scroll_x = tmpse->scroll_x; task->scroll_y = tmpse->scroll_y; task->scroll_z = tmpse->scroll_z; task->win_inhibit = tmpse->win_inhibit; task->text_attr = tmpse->text_attr; task->border_attr = tmpse->border_attr; task->border_src = tmpse->border_src; task->title_src = tmpse->title_src; StrCopy(task->task_title, tmpse->task_title); AutoComplete(tmpse->autocomplete); GrPaletteSet(tmpse->palette); LFBFlush; Sound; } public U0 SettingsPop(CTask *task=NULL,I64 flags=0) {//Typically, called at end of an application. CTaskSettings *tmpse; if (!task) task = Fs; if (!TaskValidate(task)) return; if (tmpse = task->next_settings) { task->next_settings = tmpse->next; Cd(tmpse->cur_dir); Free(tmpse->cur_dir); task->draw_it = tmpse->draw_it; task->task_end_cb = tmpse->task_end_cb; if (task->animate_task) Kill(task->animate_task); if (task->animate_task = tmpse->animate_task) Suspend(task->animate_task,FALSE); if (!(flags & TSF_SAME_SONG)) { if (task->song_task) Kill(task->song_task); if (task->song_task = tmpse->song_task) Suspend(task->song_task,FALSE); } SettingsPop2(task, tmpse); //Do it to get ress fast Refresh(, TRUE); SettingsPop2(task, tmpse); //Redo in case was lost by old update Free(tmpse); } }