Ejemplo n.º 1
0
        public RPackageManager(IRSettings settings, IRInteractiveWorkflow interactiveWorkflow, Action dispose)
        {
            _session                = interactiveWorkflow.RSessions.GetOrCreate(SessionNames.PackageManager);
            _settings               = settings;
            _interactiveWorkflow    = interactiveWorkflow;
            _loadedPackagesEvent    = new DirtyEventSource(this);
            _installedPackagesEvent = new DirtyEventSource(this);
            _availablePackagesEvent = new DirtyEventSource(this);

            _disposableBag = DisposableBag.Create <RPackageManager>(dispose)
                             .Add(() => _interactiveWorkflow.RSessions.BrokerChanged    -= BrokerChanged)
                             .Add(() => _interactiveWorkflow.RSession.Mutated           -= RSessionMutated)
                             .Add(() => _interactiveWorkflow.RSession.PackagesInstalled -= PackagesInstalled)
                             .Add(() => _interactiveWorkflow.RSession.PackagesRemoved   -= PackagesRemoved);

            _interactiveWorkflow.RSessions.BrokerChanged    += BrokerChanged;
            _interactiveWorkflow.RSession.Mutated           += RSessionMutated;
            _interactiveWorkflow.RSession.PackagesInstalled += PackagesInstalled;
            _interactiveWorkflow.RSession.PackagesRemoved   += PackagesRemoved;
        }