Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono-addins.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Mono.Addins/Mono.Addins.Database/AddinDatabase.cs6
-rw-r--r--Mono.Addins/Mono.Addins.Database/AddinScanner.cs9
-rw-r--r--Mono.Addins/Mono.Addins.Database/DatabaseConfiguration.cs24
-rw-r--r--Mono.Addins/Mono.Addins/AddinModuleAttribute.cs1
4 files changed, 24 insertions, 16 deletions
diff --git a/Mono.Addins/Mono.Addins.Database/AddinDatabase.cs b/Mono.Addins/Mono.Addins.Database/AddinDatabase.cs
index 7cfeb98..f7357a0 100644
--- a/Mono.Addins/Mono.Addins.Database/AddinDatabase.cs
+++ b/Mono.Addins/Mono.Addins.Database/AddinDatabase.cs
@@ -470,7 +470,7 @@ namespace Mono.Addins.Database
}
}
- Configuration.SetStatus (id, true, ainfo.AddinInfo.EnabledByDefault);
+ Configuration.SetEnabled (id, true, ainfo.AddinInfo.EnabledByDefault);
SaveConfiguration ();
if (addinEngine != null && addinEngine.IsInitialized)
@@ -486,7 +486,7 @@ namespace Mono.Addins.Database
if (!IsAddinEnabled (domain, id))
return;
- Configuration.SetStatus (id, false, ai.AddinInfo.EnabledByDefault);
+ Configuration.SetEnabled (id, false, ai.AddinInfo.EnabledByDefault);
SaveConfiguration ();
// Disable all add-ins which depend on it
@@ -519,7 +519,7 @@ namespace Mono.Addins.Database
}
catch {
// If something goes wrong, enable the add-in again
- Configuration.SetStatus (id, true, ai.AddinInfo.EnabledByDefault);
+ Configuration.SetEnabled (id, true, ai.AddinInfo.EnabledByDefault);
SaveConfiguration ();
throw;
}
diff --git a/Mono.Addins/Mono.Addins.Database/AddinScanner.cs b/Mono.Addins/Mono.Addins.Database/AddinScanner.cs
index d323649..923eb94 100644
--- a/Mono.Addins/Mono.Addins.Database/AddinScanner.cs
+++ b/Mono.Addins/Mono.Addins.Database/AddinScanner.cs
@@ -554,13 +554,16 @@ namespace Mono.Addins.Database
if (!ScanEmbeddedDescription (monitor, filePath, reflector, asm, out config))
return false;
- if (config == null) {
+ if (config == null || config.IsExtensionModel) {
// In this case, only scan the assembly if it has the Addin attribute.
AddinAttribute att = (AddinAttribute) reflector.GetCustomAttribute (asm, typeof(AddinAttribute), false);
- if (att == null)
+ if (att == null) {
+ config = null;
return true;
+ }
- config = new AddinDescription ();
+ if (config == null)
+ config = new AddinDescription ();
}
config.SetBasePath (Path.GetDirectoryName (filePath));
diff --git a/Mono.Addins/Mono.Addins.Database/DatabaseConfiguration.cs b/Mono.Addins/Mono.Addins.Database/DatabaseConfiguration.cs
index 3e48d39..207fcdb 100644
--- a/Mono.Addins/Mono.Addins.Database/DatabaseConfiguration.cs
+++ b/Mono.Addins/Mono.Addins.Database/DatabaseConfiguration.cs
@@ -55,27 +55,31 @@ namespace Mono.Addins.Database
public bool IsEnabled (string addinId, bool defaultValue)
{
+ var addinName = Addin.GetIdName (addinId);
+
AddinStatus s;
- if (addinStatus.TryGetValue (addinId, out s))
- return s.Enabled && !s.Uninstalled;
+ if (addinStatus.TryGetValue (addinName, out s))
+ return s.Enabled && !IsRegisteredForUninstall (addinId);
else
return defaultValue;
}
- public void SetStatus (string addinId, bool enabled, bool defaultValue)
+ public void SetEnabled (string addinId, bool enabled, bool defaultValue)
{
- AddinStatus s;
- addinStatus.TryGetValue (addinId, out s);
-
- if (s != null && s.Uninstalled)
+ if (IsRegisteredForUninstall (addinId))
return;
+
+ var addinName = Addin.GetIdName (addinId);
+
+ AddinStatus s;
+ addinStatus.TryGetValue (addinName, out s);
if (enabled == defaultValue) {
- addinStatus.Remove (addinId);
+ addinStatus.Remove (addinName);
return;
}
if (s == null)
- s = addinStatus [addinId] = new AddinStatus (addinId);
+ s = addinStatus [addinName] = new AddinStatus (addinName);
s.Enabled = enabled;
}
@@ -123,7 +127,7 @@ namespace Mono.Addins.Database
if (disabledElem != null) {
// For back compatibility
foreach (XmlElement elem in disabledElem.SelectNodes ("Addin"))
- config.SetStatus (elem.InnerText, false, true);
+ config.SetEnabled (elem.InnerText, false, true);
return config;
}
diff --git a/Mono.Addins/Mono.Addins/AddinModuleAttribute.cs b/Mono.Addins/Mono.Addins/AddinModuleAttribute.cs
index 83d7b6f..a1f0174 100644
--- a/Mono.Addins/Mono.Addins/AddinModuleAttribute.cs
+++ b/Mono.Addins/Mono.Addins/AddinModuleAttribute.cs
@@ -31,6 +31,7 @@ namespace Mono.Addins
/// <summary>
/// Declares an optional add-in module
/// </summary>
+ [AttributeUsage (AttributeTargets.Assembly, AllowMultiple=true)]
public class AddinModuleAttribute: Attribute
{
string assemblyFile;