diff options
author | Lluis Sanchez Gual <lluis@novell.com> | 2011-02-11 19:35:46 +0300 |
---|---|---|
committer | Lluis Sanchez Gual <lluis@novell.com> | 2011-02-11 19:35:46 +0300 |
commit | 030dd34f1b965f1a62f4ecc29fa5cbd50a2d68ac (patch) | |
tree | 9f1b4084bab169a36a21bc2adbfed3a6bd3c8182 /Mono.Addins.Setup | |
parent | 4e15666fd29886a78f32de20d42dc666daaf14bd (diff) |
Added support for enabling/disabling registered repositories.
Diffstat (limited to 'Mono.Addins.Setup')
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> |