Mono.Addins.Database.AddinIndex.FindCondition C# (CSharp) Method

FindCondition() public method

public FindCondition ( AddinDescription desc, ModuleDescription mod, string conditionId ) : string
desc Mono.Addins.Description.AddinDescription
mod Mono.Addins.Description.ModuleDescription
conditionId string
return string
        public string FindCondition(AddinDescription desc, ModuleDescription mod, string conditionId)
        {
            if (desc.ConditionTypes.Any (c => c.Id == conditionId))
                return desc.AddinId;

            foreach (Dependency dep in mod.Dependencies) {
                AddinDependency adep = dep as AddinDependency;

                if (adep == null)
                    continue;
                var descs = FindDescriptions (desc.Domain, adep.FullAddinId);
                foreach (var d in descs) {
                    var c = FindCondition (d, d.MainModule, conditionId);
                    if (c != null)
                        return c;
                }
            }
            return null;
        }

Usage Example

Beispiel #1
0
        void AddChildExtensions(AddinDescription conf, ModuleDescription module, AddinUpdateData updateData, AddinIndex index, string path, ExtensionNodeDescriptionCollection nodes, bool conditionChildren)
        {
            // Don't register conditions as extension nodes.
            if (!conditionChildren)
                updateData.RegisterExtension (conf, module, path);

            foreach (ExtensionNodeDescription node in nodes) {
                if (node.NodeName == "ComplexCondition")
                    continue;
                updateData.RelExtensionNodes++;
                string id = node.GetAttribute ("id");
                if (id.Length != 0) {
                    bool isCondition = node.NodeName == "Condition";
                    if (isCondition) {
                        // Find the add-in that provides the implementation for this condition.
                        // Store that id in the condition. The add-in engine will ensure the add-in
                        // is loaded when it tries to evaluate this condition.
                        var condAsm = index.FindCondition (conf, module, id);
                        if (condAsm != null)
                            node.SetAttribute (Condition.SourceAddinAttribute, condAsm);
                    }
                    AddChildExtensions (conf, module, updateData, index, path + "/" + id, node.ChildNodes, isCondition);
                }
            }
        }