void Manager::ExecuteModal(window_ptr_ref Executed) { _MANAGER(CleverSysLog clv(L"Manager::ExecuteModal (window *Executed)")); _MANAGER(SysLog(L"Executed=%p",Executed)); bool stop=false; auto& stop_ref=m_Executed[Executed]; if (stop_ref) return; stop_ref=&stop; auto OriginalStartManager = StartManager; StartManager = true; for (;;) { Commit(); if (stop) { break; } ProcessMainLoop(); } StartManager = OriginalStartManager; return;// GetModalExitCode(); }
void Manager::ExecuteNonModal() { _MANAGER(CleverSysLog clv(L"Manager::ExecuteNonModal ()")); _MANAGER(SysLog(L"ExecutedFrame=%p, InsertedFrame=%p, DeletedFrame=%p",ExecutedFrame, InsertedFrame, DeletedFrame)); Frame *NonModal=InsertedFrame?InsertedFrame:(ExecutedFrame?ExecutedFrame:ActivatedFrame); if (!NonModal) { return; } /* $ 14.05.2002 SKV Положим текущий фрэйм в список "родителей" полумодальных фрэймов */ //Frame *SaveFrame=CurrentFrame; //AddSemiModalBackFrame(SaveFrame); int NonModalIndex=IndexOf(NonModal); if (-1==NonModalIndex) { InsertedFrame=NonModal; ExecutedFrame=nullptr; InsertCommit(); InsertedFrame=nullptr; } else { ActivateFrame(NonModalIndex); } //Frame* ModalStartLevel=NonModal; for (;;) { Commit(); if (CurrentFrame!=NonModal || EndLoop) { break; } ProcessMainLoop(); } //ExecuteModal(NonModal); /* $ 14.05.2002 SKV ... и уберём его же. */ //RemoveSemiModalBackFrame(SaveFrame); }
void Manager::ExecuteNonModal(window_ptr_ref NonModal) { _MANAGER(CleverSysLog clv(L"Manager::ExecuteNonModal ()")); if (!NonModal) return; for (;;) { Commit(); if (m_currentWindow!=NonModal || EndLoop) { break; } ProcessMainLoop(); } }
void Manager::EnterMainLoop() { Global->WaitInFastFind=0; StartManager=TRUE; for (;;) { Commit(); if (EndLoop || !HaveAnyFrame()) { break; } ProcessMainLoop(); } }
void Manager::ExecuteModal(Frame *Executed) { _MANAGER(CleverSysLog clv(L"Manager::ExecuteModal (Frame *Executed)")); _MANAGER(SysLog(L"Executed=%p, ExecutedFrame=%p",Executed,ExecutedFrame)); if (!Executed && !ExecutedFrame) { return; } if (Executed) { if (ExecutedFrame) { _MANAGER(SysLog(L"WARNING! Попытка в одном цикле запустить в модальном режиме два фрейма. Executed=%p, ExecitedFrame=%p",Executed, ExecutedFrame)); return;// nullptr; //?? Определить, какое значение правильно возвращать в этом случае } else { ExecutedFrame=Executed; } } int ModalStartLevel=ModalStackCount; int OriginalStartManager=StartManager; StartManager=TRUE; for (;;) { Commit(); if (ModalStackCount<=ModalStartLevel) { break; } ProcessMainLoop(); } StartManager=OriginalStartManager; return;// GetModalExitCode(); }