/// <summary> /// Hook all event handlers that are used for editor interaction. /// </summary> private void hookHandlers() { _guiManager.CompositionPointSelected += requireRedraw; //hook transaction handlers Transactions.TransactionOpened += (t) => { _vs.Log.Message(">> {0}", t.Description); tryShowProgress(t); }; Transactions.TransactionCommit += (t) => _vs.Log.Message("<< {0}", t.Description); Transactions.TransactionProgressChanged += (t) => tryShowProgress(t); _loader.AppDomain.OnLog += logHandler; //hook changes handlers _vs.FlushingChangesProgress += (fileName) => _changesTransaction.ReportProgress(fileName); _vs.AfterFlushingChanges += () => _changesTransaction.Commit(); _vs.BeforeFlushingChanges += (description) => { if (description == null) { description = "changes"; } _changesTransaction = _loader.AppDomain.Transactions.StartNew("Registering " + description); }; //hook solution handling _vs.SolutionOpened += _vs_SolutionOpened; _vs.SolutionOpeningStarted += _vs_SolutionOpeningStarted; _vs.SolutionClosed += _vs_SolutionClosed; //hook project handling _vs.ProjectAdded += _vs_ProjectAdded; _vs.ProjectAddingStarted += _vs_ProjectAddingStarted; _vs.ProjectRemoved += _vs_ProjectRemoved; //hook type system _loader.AppDomain.MethodInvalidated += methodInvalidated; _loader.AppDomain.CompositionSchemeInvalidated += requireRedraw; _loader.AppDomain.ComponentAdded += (c) => requireRedraw(); _loader.AppDomain.ComponentRemoved += (c) => requireRedraw(); _vs.StartListening(); }