public void FinishDecompilation() { try { IPhasePageInteractor prev = CurrentPhase; workerDlgSvc.StartBackgroundWork("Finishing decompilation.", delegate() { for (;;) { var next = NextPage(prev); if (next == null) { break; } next.PerformWork(workerDlgSvc); prev = next; } }); prev.EnterPage(); CurrentPhase = prev; projectBrowserSvc.Reload(); procedureListSvc.Load(decompilerSvc.Decompiler.Project); } catch (Exception ex) { uiSvc.ShowError(ex, "An error occurred while finishing decompilation."); } workerDlgSvc.FinishBackgroundWork(); }
public void NextPhase() { try { IPhasePageInteractor next = NextPage(CurrentPhase); if (next != null) { SwitchInteractor(next); } } catch (Exception ex) { uiSvc.ShowError(ex, "Unable to proceed."); } workerDlgSvc.FinishBackgroundWork(); }
private IPhasePageInteractor NextPage(IPhasePageInteractor phase) { IPhasePageInteractor next = null; if (phase == pageInitial) { next = pageScanned; } else if (phase == pageScanned) { next = pageAnalyzed; } else if (phase == pageAnalyzed) { next = pageFinal; } return(next); }
public void SwitchInteractor(IPhasePageInteractor interactor) { if (interactor == CurrentPhase) { return; } if (CurrentPhase != null) { if (!CurrentPhase.LeavePage()) { return; } } CurrentPhase = interactor; workerDlgSvc.StartBackgroundWork("Entering next phase...", delegate() { interactor.PerformWork(workerDlgSvc); }); interactor.EnterPage(); }
public void FinishDecompilation() { try { IPhasePageInteractor prev = CurrentPhase; workerDlgSvc.StartBackgroundWork("Finishing decompilation.", delegate() { IPhasePageInteractor next; while (nextPage.TryGetValue(prev, out next)) { next.PerformWork(workerDlgSvc); prev = next; } }); prev.EnterPage(); } catch (Exception ex) { uiSvc.ShowError(ex, "An error occurred while finishing decompilation."); } workerDlgSvc.FinishBackgroundWork(); }
public void SwitchInteractor(IPhasePageInteractor interactor) { if (interactor == CurrentPhase) return; if (CurrentPhase != null) { if (!CurrentPhase.LeavePage()) return; } CurrentPhase = interactor; workerDlgSvc.StartBackgroundWork("Entering next phase...", delegate() { interactor.PerformWork(workerDlgSvc); }); interactor.EnterPage(); UpdateToolbarState(); }