public PluginStatusCollectionChangedEventArgs(IPluginStatusCollection c, ChangeStatus action, Guid pluginID, ConfigPluginStatus status)
 {
     Collection = c;
     Action     = action;
     PluginID   = pluginID;
     Status     = status;
 }
 public PluginStatusCollectionChangedEventArgs( IPluginStatusCollection c, ChangeStatus action, Guid pluginID, ConfigPluginStatus status )
 {
     Collection = c;
     Action = action;
     PluginID = pluginID;
     Status = status;
 }
Exemple #3
0
 public ConfigPluginStatus GetStatus(Guid pluginID, ConfigPluginStatus defaultStatus)
 {
     if (_pluginStatusDic.ContainsKey(pluginID))
     {
         return(_pluginStatusDic[pluginID].Status);
     }
     return(defaultStatus);
 }
Exemple #4
0
 internal void Change(ChangeStatus action, Guid pluginId, ConfigPluginStatus status)
 {
     _holder.OnPluginStatusCollectionChanged(action, pluginId, status);
     if (Changed != null)
     {
         PluginStatusCollectionChangedEventArgs e = new PluginStatusCollectionChangedEventArgs(this, action, pluginId, status);
         Changed(this, e);
     }
 }
 internal void Change( ChangeStatus action, Guid pluginId, ConfigPluginStatus status )
 {
     _holder.OnPluginStatusCollectionChanged( action, pluginId, status );
     if( Changed != null )
     {
         PluginStatusCollectionChangedEventArgs e = new PluginStatusCollectionChangedEventArgs( this, action, pluginId, status );
         Changed( this, e );
     }
 }
Exemple #6
0
 internal bool CanChange(ChangeStatus action, Guid pluginId, ConfigPluginStatus status)
 {
     if (Changing != null)
     {
         PluginStatusCollectionChangingEventArgs eCancel = new PluginStatusCollectionChangingEventArgs(this, action, pluginId, status);
         Changing(this, eCancel);
         return(!eCancel.Cancel);
     }
     return(true);
 }
 internal bool CanChange( ChangeStatus action, Guid pluginId, ConfigPluginStatus status )
 {
     if( Changing != null )
     {
         PluginStatusCollectionChangingEventArgs eCancel = new PluginStatusCollectionChangingEventArgs( this, action, pluginId, status );
         Changing( this, eCancel );
         return !eCancel.Cancel;
     }
     return true;
 }
 public void SetStatus( Guid pluginId, ConfigPluginStatus status )
 {
     PluginStatus currentPluginStatus;
     if ( _pluginStatusDic.TryGetValue( pluginId, out currentPluginStatus ) )
     {
         currentPluginStatus.Status = status;
     }
     else if ( CanChange( ChangeStatus.Add, pluginId, status ) )
     {
         PluginStatus newStatus = new PluginStatus( this, pluginId, status );
         _pluginStatusDic.Add( pluginId, newStatus );
         Change( ChangeStatus.Add, pluginId, status );
     }
 }
Exemple #9
0
        public void SetStatus(Guid pluginId, ConfigPluginStatus status)
        {
            PluginStatus currentPluginStatus;

            if (_pluginStatusDic.TryGetValue(pluginId, out currentPluginStatus))
            {
                currentPluginStatus.Status = status;
            }
            else if (CanChange(ChangeStatus.Add, pluginId, status))
            {
                PluginStatus newStatus = new PluginStatus(this, pluginId, status);
                _pluginStatusDic.Add(pluginId, newStatus);
                Change(ChangeStatus.Add, pluginId, status);
            }
        }
        SolvedConfigStatus SolveStatus(Guid pluginId)
        {
            // Set default status/actions
            ConfigPluginStatus finalStatus = ConfigPluginStatus.Manual;
            ConfigUserAction   userAction  = ConfigUserAction.None;

            if (finalStatus != ConfigPluginStatus.Disabled)
            {
                // Gets the systemStatus, if any.
                ConfigPluginStatus systemStatus = _cfg.GetSystemConfiguration(false).PluginStatusCollection.GetStatus(pluginId, finalStatus);
                // Sets it if more restrictive
                if (systemStatus > finalStatus || systemStatus == ConfigPluginStatus.Disabled)
                {
                    finalStatus = systemStatus;
                }

                if (finalStatus != ConfigPluginStatus.Disabled)
                {
                    // Gets the user status, if any.
                    ConfigPluginStatus userStatus = _cfg.GetUserConfiguration(false).PluginStatusCollection.GetStatus(pluginId, finalStatus);
                    // Sets it if more restrictive.
                    if (userStatus > finalStatus || userStatus == ConfigPluginStatus.Disabled)
                    {
                        finalStatus = userStatus;
                    }

                    if (finalStatus != ConfigPluginStatus.Disabled)
                    {
                        // Gets the UserAction, if any.
                        userAction = _cfg.GetUserConfiguration(false).LiveUserConfiguration.GetAction(pluginId);
                    }
                }
            }
            // Solves UserAction and finalStatus
            SolvedConfigStatus solvedStatus = finalStatus == ConfigPluginStatus.Disabled ? SolvedConfigStatus.Disabled : SolvedConfigStatus.Optional;

            if (userAction == ConfigUserAction.Started || (finalStatus == ConfigPluginStatus.AutomaticStart && userAction != ConfigUserAction.Stopped))
            {
                solvedStatus = SolvedConfigStatus.MustExistAndRun;
            }
            else if (userAction == ConfigUserAction.Stopped)
            {
                solvedStatus = SolvedConfigStatus.Disabled;
            }
            return(solvedStatus);
        }
Exemple #11
0
        public VMIPlugin( VMIContextViewModel ctx, IPluginInfo plugin, VMIBase parent )
            : base(ctx, parent)
        {
            _pluginInfo = plugin;

            Label = plugin.PublicName;
            Assembly = plugin.AssemblyInfo.AssemblyName;
            DetailsTemplateName = "PluginDetails";

            _systemPluginStatus = VMIContext.Context.ConfigManager.SystemConfiguration.PluginsStatus.GetStatus( Id, ConfigPluginStatus.Manual );
            _userPluginStatus = VMIContext.Context.ConfigManager.UserConfiguration.PluginsStatus.GetStatus( Id, ConfigPluginStatus.Manual );

            _pluginRunner = VMIContext.Context.GetService<PluginRunner>( true );
            _pluginRunner.ApplyDone += new EventHandler<ApplyDoneEventArgs>( OnApplyDone );

            VMIContext.Context.ConfigManager.UserConfiguration.LiveUserConfiguration.Changed += new EventHandler<LiveUserConfigurationChangedEventArgs>( OnLiveUserConfigurationChanged );
            VMIContext.Context.ConfigManager.SystemConfiguration.PluginsStatus.Changed += new EventHandler<PluginStatusCollectionChangedEventArgs>( OnSystemPluginStatusChanged );
            VMIContext.Context.ConfigManager.UserConfiguration.PluginsStatus.Changed += new EventHandler<PluginStatusCollectionChangedEventArgs>( OnUserPluginStatusChanged );

            VMIContext.Context.ConfigManager.UserConfiguration.PropertyChanged += new PropertyChangedEventHandler( OnUserConfigurationChanged );
            VMIContext.Context.ConfigManager.SystemConfiguration.PropertyChanged += new PropertyChangedEventHandler( OnSystemConfigurationChanged );

            CreateCommands();

            IList<IPluginInfo> editableBy = new List<IPluginInfo>();
            foreach( IPluginConfigAccessorInfo p in plugin.EditableBy )
                editableBy.Add( p.Plugin );
            _canEdit = new List<IPluginInfo>();
            foreach( IPluginConfigAccessorInfo p in _pluginInfo.EditorsInfo )
                _canEdit.Add( p.EditedSource );
            IList<IPluginInfo> required = new List<IPluginInfo>();

            _vmRequirementLayers = new List<VMIPluginRequirementLayer>();
            foreach( RequirementLayer layer in RequirementLayers )
            {
                _vmRequirementLayers.Add( new VMIPluginRequirementLayer( this, layer ) );
            }

            ServiceRefs = new VMCollection<VMAlias<VMIService>, IServiceReferenceInfo>( plugin.ServiceReferences, ( info ) => { return new VMAlias<VMIService>( VMIContext.FindOrCreate( info ), this ); } );
            CanEdit = new VMCollection<VMAlias<VMIPlugin>, IPluginInfo>( new CKReadOnlyListOnIList<IPluginInfo>( _canEdit ), ( info ) => { return new VMAlias<VMIPlugin>( VMIContext.FindOrCreate( info ), this ); } );
            EditableBy = new VMCollection<VMAlias<VMIPlugin>, IPluginInfo>( new CKReadOnlyListOnIList<IPluginInfo>( editableBy ), ( info ) => { return new VMAlias<VMIPlugin>( VMIContext.FindOrCreate( info ), this ); } );
        }
Exemple #12
0
        public void ReadContent(IStructuredReader sr)
        {
            XmlReader r = sr.Xml;

            r.Read();
            Dictionary <Guid, PluginStatus> newContent = new Dictionary <Guid, PluginStatus>();

            while (r.IsStartElement("PluginStatus"))
            {
                Guid guid = new Guid(r.GetAttribute("Guid"));
                ConfigPluginStatus status = (ConfigPluginStatus)Enum.Parse(typeof(ConfigPluginStatus), r.GetAttribute("Status"));
                newContent[guid] = new PluginStatus(this, guid, status);
                r.Skip();
            }
            _pluginStatusDic.Clear();
            _pluginStatusDic.AddRange(newContent);

            //may eventually be replaced by some code in SolvedPluginConfiguration
            //Without that, SolvedPluginConfiguration's ResolveConfiguration method is not called
            Change(ChangeStatus.ContainerUpdate, Guid.Empty, 0);
        }
 internal void OnPluginStatusCollectionChanged( ChangeStatus action, Guid pluginId, ConfigPluginStatus status )
 {
     OnCollectionChanged(); 
 }
 public ConfigPluginStatus GetStatus( Guid pluginID, ConfigPluginStatus defaultStatus )
 {
     if( _pluginStatusDic.ContainsKey( pluginID ) )
         return _pluginStatusDic[pluginID].Status;
     return defaultStatus;
 }
Exemple #15
0
 private void RefreshSystemPluginStatus()
 {
     _systemPluginStatus = VMIContext.Context.ConfigManager.SystemConfiguration.PluginsStatus.GetStatus( Id, ConfigPluginStatus.Manual );
     OnPropertyChanged( "SystemPluginStatus" );
 }
Exemple #16
0
 void RefreshUserPluginStatus()
 {
     _userPluginStatus = VMIContext.Context.ConfigManager.UserConfiguration.PluginsStatus.GetStatus( Id, ConfigPluginStatus.Manual );
     OnPropertyChanged( "UserPluginStatus" );
 }
Exemple #17
0
 public PluginStatus(PluginStatusCollection holder, Guid pluginId, ConfigPluginStatus status)
 {
     _holder   = holder;
     _pluginId = pluginId;
     _status   = status;
 }
Exemple #18
0
 public PluginStatus(PluginStatusCollection holder, Guid pluginId, ConfigPluginStatus status)
 {
     _holder = holder;
     _pluginId = pluginId;
     _status = status;
 }
 internal void OnPluginStatusCollectionChanged(ChangeStatus action, Guid pluginId, ConfigPluginStatus status)
 {
     OnCollectionChanged();
 }