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:
authorLluis Sanchez Gual <lluis@novell.com>2011-02-11 19:35:46 +0300
committerLluis Sanchez Gual <lluis@novell.com>2011-02-11 19:35:46 +0300
commit030dd34f1b965f1a62f4ecc29fa5cbd50a2d68ac (patch)
tree9f1b4084bab169a36a21bc2adbfed3a6bd3c8182 /Mono.Addins.Setup
parent4e15666fd29886a78f32de20d42dc666daaf14bd (diff)
Added support for enabling/disabling registered repositories.
Diffstat (limited to 'Mono.Addins.Setup')
-rw-r--r--Mono.Addins.Setup/Makefile.am1
-rw-r--r--Mono.Addins.Setup/Mono.Addins.Setup.csproj1
-rw-r--r--Mono.Addins.Setup/Mono.Addins.Setup/AddinSystemConfigurationReaderWriter.cs42
-rw-r--r--Mono.Addins.Setup/Mono.Addins.Setup/RepositoryRecord.cs17
-rw-r--r--Mono.Addins.Setup/Mono.Addins.Setup/RepositoryRegistry.cs21
-rw-r--r--Mono.Addins.Setup/Mono.Addins.Setup/serializers.xml16
6 files changed, 80 insertions, 18 deletions
diff --git a/Mono.Addins.Setup/Makefile.am b/Mono.Addins.Setup/Makefile.am
index bb82ff3..ebd6024 100644
--- a/Mono.Addins.Setup/Makefile.am
+++ b/Mono.Addins.Setup/Makefile.am
@@ -55,6 +55,7 @@ EXTRAS = \
REFERENCES = \
-r:ICSharpCode.SharpZipLib \
-r:System \
+ -r:System.Core \
-r:System.Xml
DLL_REFERENCES =
diff --git a/Mono.Addins.Setup/Mono.Addins.Setup.csproj b/Mono.Addins.Setup/Mono.Addins.Setup.csproj
index 3a40af7..61b6cdf 100644
--- a/Mono.Addins.Setup/Mono.Addins.Setup.csproj
+++ b/Mono.Addins.Setup/Mono.Addins.Setup.csproj
@@ -37,6 +37,7 @@
<Reference Include="ICSharpCode.SharpZipLib" />
<Reference Include="System" />
<Reference Include="System.Xml" />
+ <Reference Include="System.Core" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Mono.Addins\Mono.Addins.csproj">
diff --git a/Mono.Addins.Setup/Mono.Addins.Setup/AddinSystemConfigurationReaderWriter.cs b/Mono.Addins.Setup/Mono.Addins.Setup/AddinSystemConfigurationReaderWriter.cs
index dceab3d..370b3db 100644
--- a/Mono.Addins.Setup/Mono.Addins.Setup/AddinSystemConfigurationReaderWriter.cs
+++ b/Mono.Addins.Setup/Mono.Addins.Setup/AddinSystemConfigurationReaderWriter.cs
@@ -219,7 +219,7 @@ namespace Mono.Addins.Setup
Reader.ReadStartElement();
Reader.MoveToContent();
- bool b10=false, b11=false, b12=false, b13=false, b14=false;
+ bool b10=false, b11=false, b12=false, b13=false, b14=false, b15=false;
while (Reader.NodeType != System.Xml.XmlNodeType.EndElement)
{
@@ -227,28 +227,33 @@ namespace Mono.Addins.Setup
{
if (Reader.LocalName == "File" && Reader.NamespaceURI == "" && !b11) {
b11 = true;
- string s15 = Reader.ReadElementString ();
- ob.@File = s15;
+ string s16 = Reader.ReadElementString ();
+ ob.@File = s16;
+ }
+ else if (Reader.LocalName == "Enabled" && Reader.NamespaceURI == "" && !b15) {
+ b15 = true;
+ string s17 = Reader.ReadElementString ();
+ ob.@Enabled = XmlConvert.ToBoolean (s17);
}
else if (Reader.LocalName == "IsReference" && Reader.NamespaceURI == "" && !b10) {
b10 = true;
- string s16 = Reader.ReadElementString ();
- ob.@IsReference = XmlConvert.ToBoolean (s16);
+ string s18 = Reader.ReadElementString ();
+ ob.@IsReference = XmlConvert.ToBoolean (s18);
}
else if (Reader.LocalName == "Name" && Reader.NamespaceURI == "" && !b13) {
b13 = true;
- string s17 = Reader.ReadElementString ();
- ob.@Name = s17;
+ string s19 = Reader.ReadElementString ();
+ ob.@Name = s19;
}
else if (Reader.LocalName == "Url" && Reader.NamespaceURI == "" && !b12) {
b12 = true;
- string s18 = Reader.ReadElementString ();
- ob.@Url = s18;
+ string s20 = Reader.ReadElementString ();
+ ob.@Url = s20;
}
else if (Reader.LocalName == "LastModified" && Reader.NamespaceURI == "" && !b14) {
b14 = true;
- string s19 = Reader.ReadElementString ();
- ob.@LastModified = XmlConvert.ToDateTime (s19, XmlDateTimeSerializationMode.RoundtripKind);
+ string s21 = Reader.ReadElementString ();
+ ob.@LastModified = XmlConvert.ToDateTime (s21, XmlDateTimeSerializationMode.RoundtripKind);
}
else {
UnknownNode (ob);
@@ -315,23 +320,23 @@ namespace Mono.Addins.Setup
if (ob.@Repositories != null) {
WriteStartElement ("Repositories", "", ob.@Repositories);
- for (int n20 = 0; n20 < ob.@Repositories.Count; n20++) {
- WriteObject_RepositoryRecord (((Mono.Addins.Setup.RepositoryRecord) ob.@Repositories[n20]), "Repository", "", false, false, true);
+ for (int n22 = 0; n22 < ob.@Repositories.Count; n22++) {
+ WriteObject_RepositoryRecord (((Mono.Addins.Setup.RepositoryRecord) ob.@Repositories[n22]), "Repository", "", false, false, true);
}
WriteEndElement (ob.@Repositories);
}
WriteElementString ("RepositoryIdCount", "", ob.@RepositoryIdCount.ToString(CultureInfo.InvariantCulture));
if (ob.@DisabledAddins != null) {
WriteStartElement ("DisabledAddins", "", ob.@DisabledAddins);
- for (int n21 = 0; n21 < ob.@DisabledAddins.Count; n21++) {
- WriteElementString ("Addin", "", ob.@DisabledAddins[n21]);
+ for (int n23 = 0; n23 < ob.@DisabledAddins.Count; n23++) {
+ WriteElementString ("Addin", "", ob.@DisabledAddins[n23]);
}
WriteEndElement (ob.@DisabledAddins);
}
if (ob.@AddinPaths != null) {
WriteStartElement ("AddinPaths", "", ob.@AddinPaths);
- for (int n22 = 0; n22 < ob.@AddinPaths.Count; n22++) {
- WriteElementString ("Addin", "", ob.@AddinPaths[n22]);
+ for (int n24 = 0; n24 < ob.@AddinPaths.Count; n24++) {
+ WriteElementString ("Addin", "", ob.@AddinPaths[n24]);
}
WriteEndElement (ob.@AddinPaths);
}
@@ -367,6 +372,9 @@ namespace Mono.Addins.Setup
WriteElementString ("Url", "", ob.@Url);
WriteElementString ("Name", "", ob.@Name);
WriteElementString ("LastModified", "", XmlConvert.ToString (ob.@LastModified, XmlDateTimeSerializationMode.RoundtripKind));
+ if (ob.@Enabled != true) {
+ WriteElementString ("Enabled", "", (ob.@Enabled?"true":"false"));
+ }
if (writeWrappingElem) WriteEndElement (ob);
}
diff --git a/Mono.Addins.Setup/Mono.Addins.Setup/RepositoryRecord.cs b/Mono.Addins.Setup/Mono.Addins.Setup/RepositoryRecord.cs
index 70ba2a9..036ffa6 100644
--- a/Mono.Addins.Setup/Mono.Addins.Setup/RepositoryRecord.cs
+++ b/Mono.Addins.Setup/Mono.Addins.Setup/RepositoryRecord.cs
@@ -42,6 +42,7 @@ namespace Mono.Addins.Setup
string file;
string url;
string name;
+ bool enabled = true;
DateTime lastModified = new DateTime (1900,1,1);
[XmlAttribute ("id")]
@@ -85,6 +86,12 @@ namespace Mono.Addins.Setup
set { lastModified = value; }
}
+ [System.ComponentModel.DefaultValue (true)]
+ public bool Enabled {
+ get { return this.enabled; }
+ set { enabled = value; }
+ }
+
public Repository GetCachedRepository ()
{
Repository repo = (Repository) AddinStore.ReadObject (File, typeof(Repository));
@@ -149,5 +156,15 @@ namespace Mono.Addins.Setup
DateTime LastModified {
get;
}
+
+ /// <summary>
+ /// Gets a value indicating whether this <see cref="Mono.Addins.Setup.AddinRepository"/> is enabled.
+ /// </summary>
+ /// <value>
+ /// <c>true</c> if enabled; otherwise, <c>false</c>.
+ /// </value>
+ bool Enabled {
+ get;
+ }
}
}
diff --git a/Mono.Addins.Setup/Mono.Addins.Setup/RepositoryRegistry.cs b/Mono.Addins.Setup/Mono.Addins.Setup/RepositoryRegistry.cs
index 4fbda64..d18a2f1 100644
--- a/Mono.Addins.Setup/Mono.Addins.Setup/RepositoryRegistry.cs
+++ b/Mono.Addins.Setup/Mono.Addins.Setup/RepositoryRegistry.cs
@@ -28,6 +28,7 @@
using System;
+using System.Linq;
using System.IO;
using System.Collections;
using Mono.Addins.Setup.ProgressMonitoring;
@@ -196,6 +197,21 @@ namespace Mono.Addins.Setup
repoList = null;
}
+ public void SetRepositoryEnabled (string url, bool enabled)
+ {
+ RepositoryRecord rep = FindRepositoryRecord (url);
+ if (rep == null)
+ return; // Nothing to do
+ rep.Enabled = enabled;
+ Repository crep = rep.GetCachedRepository ();
+ if (crep != null) {
+ foreach (RepositoryEntry re in crep.Repositories)
+ SetRepositoryEnabled (new Uri (new Uri (url), re.Url).ToString (), enabled);
+ }
+
+ service.SaveConfiguration ();
+ }
+
/// <summary>
/// Checks if a repository is already subscribed.
/// </summary>
@@ -266,7 +282,7 @@ namespace Mono.Addins.Setup
int num = service.Configuration.Repositories.Count;
for (int n=0; n<num; n++) {
RepositoryRecord rr = (RepositoryRecord) service.Configuration.Repositories [n];
- if ((url == null || rr.Url == url) && !rr.IsReference)
+ if (((url == null && rr.Enabled) || rr.Url == url) && !rr.IsReference)
UpdateRepository (monitor, new Uri (rr.Url), rr);
monitor.Step (1);
}
@@ -305,6 +321,7 @@ namespace Mono.Addins.Setup
RepositoryRecord refRep = FindRepositoryRecord (refRepUrl);
if (refRep == null)
refRep = RegisterRepository (refRepUrl, true);
+ refRep.Enabled = rr.Enabled;
if (refRep.LastModified < re.LastModified) {
UpdateRepository (monitor, refRepUri, refRep);
}
@@ -500,6 +517,8 @@ namespace Mono.Addins.Setup
ee = service.Configuration.Repositories;
foreach (RepositoryRecord rr in ee) {
+ if (!rr.Enabled)
+ continue;
Repository rep = rr.GetCachedRepository();
if (rep == null) continue;
foreach (PackageRepositoryEntry addin in rep.Addins) {
diff --git a/Mono.Addins.Setup/Mono.Addins.Setup/serializers.xml b/Mono.Addins.Setup/Mono.Addins.Setup/serializers.xml
new file mode 100644
index 0000000..3d22e70
--- /dev/null
+++ b/Mono.Addins.Setup/Mono.Addins.Setup/serializers.xml
@@ -0,0 +1,16 @@
+<configuration>
+ <serializer class="Mono.Addins.Setup.AddinSystemConfiguration" assembly="../../bin/Mono.Addins.Setup.dll">
+ <reader>AddinSystemConfigurationReader</reader>
+ <writer>AddinSystemConfigurationWriter</writer>
+ <namespace>Mono.Addins.Setup</namespace>
+ <outFileName>AddinSystemConfigurationReaderWriter.cs</outFileName>
+ <generateAsInternal>true</generateAsInternal>
+ </serializer>
+ <serializer class="Mono.Addins.Setup.Repository" assembly="../../bin/Mono.Addins.Setup.dll">
+ <reader>RepositoryReader</reader>
+ <writer>RepositoryWriter</writer>
+ <namespace>Mono.Addins.Setup</namespace>
+ <outFileName>RepositoryReaderWriter.cs</outFileName>
+ <generateAsInternal>true</generateAsInternal>
+ </serializer>
+</configuration>