/// <summary> /// Construct an Addin for a type. /// </summary> /// <param name="type">The type to be used</param> public Addin(Type type) { this.typeName = type.AssemblyQualifiedName; object[] attrs = type.GetCustomAttributes(typeof(NUnitAddinAttribute), false); if (attrs.Length == 1) { NUnitAddinAttribute attr = (NUnitAddinAttribute)attrs[0]; this.name = attr.Name; this.description = attr.Description; this.extensionType = attr.Type; } if (this.name == null) { this.name = type.Name; } if (this.extensionType == 0) { this.extensionType = ExtensionType.Core; } this.status = AddinStatus.Enabled; }
public TreeIter AddAddin(AddinHeader info, object dataItem, AddinStatus status) { addinData [info] = dataItem; TreeIter iter; if (ShowCategories) { TreeIter piter = TreeIter.Zero; if (info.Category == "") { string otherCat = Catalog.GetString("Other"); piter = FindCategory(otherCat); } else { piter = FindCategory(info.Category); } iter = treeStore.AppendNode(piter); } else { iter = treeStore.AppendNode(); } UpdateRow(iter, info, dataItem, status); return(iter); }
public void SetEnabled(string addinId, bool enabled, bool defaultValue, bool exactVersionMatch) { if (IsRegisteredForUninstall(addinId)) { return; } var addinName = exactVersionMatch ? addinId : Addin.GetIdName(addinId); AddinStatus s; addinStatus.TryGetValue(addinName, out s); if (s == null) { s = addinStatus [addinName] = new AddinStatus(addinName); } s.Enabled = enabled; // If enabling a specific version of an add-in, make sure the add-in is enabled as a whole if (enabled && exactVersionMatch) { SetEnabled(addinId, true, defaultValue, false); } }
void StoreIcon(TreeIter it, string iconId, Gdk.Pixbuf customPix, AddinStatus status) { if (customPix == null) { customPix = iconInstalled; } if ((status & AddinStatus.Installed) == 0) { treeStore.SetValue(it, ColImage, customPix); return; } else if (ShowInstalledMarkers && (status & AddinStatus.HasUpdate) == 0) { customPix = GetCachedIcon(iconId, "InstalledOverlay", delegate { return(Services.AddIconOverlay(customPix, installedOverlay)); }); iconId = iconId + "_Installed"; } if ((status & AddinStatus.Disabled) != 0) { customPix = GetCachedIcon(iconId, "Desaturate", delegate { return(Services.DesaturateIcon(customPix)); }); iconId = iconId + "_Desaturate"; } if ((status & AddinStatus.HasUpdate) != 0) { customPix = GetCachedIcon(iconId, "UpdateOverlay", delegate { return(Services.AddIconOverlay(customPix, updateOverlay)); }); } treeStore.SetValue(it, ColImage, customPix); }
public static DatabaseConfiguration Read(string file) { DatabaseConfiguration config = new DatabaseConfiguration (); XmlDocument doc = new XmlDocument (); doc.Load (file); XmlElement disabledElem = (XmlElement) doc.DocumentElement.SelectSingleNode ("DisabledAddins"); if (disabledElem != null) { // For back compatibility foreach (XmlElement elem in disabledElem.SelectNodes ("Addin")) config.SetEnabled (elem.InnerText, false, true); return config; } XmlElement statusElem = (XmlElement) doc.DocumentElement.SelectSingleNode ("AddinStatus"); if (statusElem != null) { foreach (XmlElement elem in statusElem.SelectNodes ("Addin")) { AddinStatus status = new AddinStatus (elem.GetAttribute ("id")); string senabled = elem.GetAttribute ("enabled"); status.Enabled = senabled.Length == 0 || senabled == "True"; status.Uninstalled = elem.GetAttribute ("uninstalled") == "True"; config.addinStatus [status.AddinId] = status; foreach (XmlElement fileElem in elem.SelectNodes ("File")) { if (status.Files == null) status.Files = new List<string> (); status.Files.Add (fileElem.InnerText); } } } return config; }
void LoadUpdates() { object s = updatesTree.SaveStatus(); updatesTree.Clear(); AddinRepositoryEntry[] reps; reps = service.Repositories.GetAvailableAddins(RepositorySearchFlags.LatestVersionsOnly); int count = 0; foreach (AddinRepositoryEntry arep in reps) { if (!Services.InApplicationNamespace(service, arep.Addin.Id)) { continue; } // Find whatever version is installed Addin sinfo = AddinManager.Registry.GetAddin(Addin.GetIdName(arep.Addin.Id)); if (sinfo == null || !sinfo.Enabled || Addin.CompareVersions(sinfo.Version, arep.Addin.Version) <= 0) { continue; } if (IsFiltered(arep.Addin)) { continue; } AddinStatus status = AddinStatus.Installed; if (!sinfo.Enabled || Services.GetMissingDependencies(sinfo).Any()) { status |= AddinStatus.Disabled; } updatesTree.AddAddin(arep.Addin, arep, status | AddinStatus.HasUpdate); count++; } labelUpdates.Text = string.Format(Catalog.GetPluralString("{0} update available", "{0} updates available", count), count); updatesTabLabel.Text = Catalog.GetString("Updates"); if (count > 0) { updatesTabLabel.Text += " (" + count + ")"; } buttonUpdateAll.Visible = count > 0; if (count > 0) { updatesTree.RestoreStatus(s); } else { updatesTree.ShowEmptyMessage(); } }
/// <summary> /// Sets the load status of an addin /// </summary> /// <param name="name">The name of the addin</param> /// <param name="status">The status to be set</param> /// <param name="message">An optional message explaining the status</param> public void SetStatus( string name, AddinStatus status, string message ) { Addin addin = FindAddinByName(name); if (addin != null) { addin.Status = status; addin.Message = message; } }
public void SetStatus( string name, AddinStatus status, string message ) { foreach( Addin addin in addins ) if ( addin.Name == name ) { addin.Status = status; addin.Message = message; } }
void OnAddinStatusChanged(AddinStatus status) { var evt = StatusChanged; if (evt != null) { evt.Invoke(this, new AddinStatusChangedEventArgs(status, this)); } }
public void SetStatus(string name, AddinStatus status) { foreach (Addin addin in addins) { if (addin.Name == name) { addin.Status = status; } } }
public void SetStatus(string name, AddinStatus status, string message) { Addin addin = FindAddinByName(name); if (addin != null) { addin.Status = status; addin.Message = message; } }
public void SetStatus(string name, AddinStatus status, string message) { foreach (Addin addin in addins) { if (addin.Name == name) { addin.Status = status; addin.Message = message; } } }
public void RegisterForUninstall(string addinId, IEnumerable <string> files) { AddinStatus s; if (!addinStatus.TryGetValue(addinId, out s)) { s = addinStatus [addinId] = new AddinStatus(addinId); } s.Enabled = false; s.Uninstalled = true; s.Files = new List <string> (files); }
void LoadInstalled() { object s = tree.SaveStatus(); int count = 0; tree.Clear(); foreach (Addin ainfo in AddinManager.Registry.GetModules(AddinSearchFlags.IncludeAddins | AddinSearchFlags.LatestVersionsOnly)) { if (Services.InApplicationNamespace(service, ainfo.Id) && !ainfo.Description.IsHidden) { AddinHeader ah = SetupService.GetAddinHeader(ainfo); if (IsFiltered(ah)) { continue; } AddinStatus st = AddinStatus.Installed; if (!ainfo.Enabled || Services.GetMissingDependencies(ainfo).Any()) { st |= AddinStatus.Disabled; } if (addininfoInstalled.GetUpdate(ainfo) != null) { st |= AddinStatus.HasUpdate; } tree.AddAddin(ah, ainfo, st); count++; } } if (count > 0) { tree.RestoreStatus(s); } else { tree.ShowEmptyMessage(); } UpdateAddinInfo(); installedTabLabel.Text = Catalog.GetString("Installed"); if (filterEntry.Text.Length != 0 && count > 0) { installedTabLabel.Text += " (" + count + ")"; } }
/// <summary> /// Installs the addins. /// </summary> public void InstallAddins() { log.Info("Installing Addins"); if (AddinRegistry != null) { foreach (Addin addin in AddinRegistry.Addins) { if ((this.ExtensionTypes & addin.ExtensionType) != 0) { AddinStatus status = AddinStatus.Unknown; string message = null; try { Type type = Type.GetType(addin.TypeName); if (type == null) { status = AddinStatus.Error; message = string.Format("Unable to locate {0} Type", addin.TypeName); } else if (!InstallAddin(type)) { status = AddinStatus.Error; message = "Install method returned false"; } else { status = AddinStatus.Loaded; } } catch (Exception ex) { status = AddinStatus.Error; message = ex.ToString(); } AddinRegistry.SetStatus(addin.Name, status, message); if (status != AddinStatus.Loaded) { log.Error("Failed to load {0}", addin.Name); log.Error(message); } } } } }
void SetRowIcon(TreeIter it, AddinHeader info, object dataItem, AddinStatus status) { string customIcom = info.Properties.GetPropertyValue("Icon32"); string iconId = info.Id + " " + info.Version + " " + customIcom; Gdk.Pixbuf customPix; if (customIcom.Length == 0) { customPix = null; iconId = "__"; } else if (!cachedIcons.TryGetValue(iconId, out customPix)) { if (dataItem is Addin) { string file = Path.Combine(((Addin)dataItem).Description.BasePath, customIcom); if (File.Exists(file)) { try { customPix = new Gdk.Pixbuf(file); } catch (Exception ex) { Console.WriteLine(ex); } } cachedIcons [iconId] = customPix; } else if (dataItem is AddinRepositoryEntry) { AddinRepositoryEntry arep = (AddinRepositoryEntry)dataItem; string tmpId = iconId; arep.BeginDownloadSupportFile(customIcom, delegate(IAsyncResult res) { Gtk.Application.Invoke(delegate { LoadRemoteIcon(it, tmpId, arep, res, info, dataItem, status); }); }, null); iconId = "__"; } } StoreIcon(it, iconId, customPix, status); }
public void SetEnabled (string addinId, bool enabled, bool defaultValue, bool exactVersionMatch) { if (IsRegisteredForUninstall (addinId)) return; var addinName = exactVersionMatch ? addinId : Addin.GetIdName (addinId); AddinStatus s; addinStatus.TryGetValue (addinName, out s); if (enabled == defaultValue) { addinStatus.Remove (addinName); return; } if (s == null) s = addinStatus [addinName] = new AddinStatus (addinName); s.Enabled = enabled; }
private void UpdateAddinStatus() { for (int i = 0; i < moduleDT.Rows.Count; i++) { string name = (string)moduleDT.GetValue("Name", i); string type = (string)moduleDT.GetValue("Type", i); string status; if (type == "AddIn") { AddinStatus addinStatus = FrameworkAddinManager.GetAddinStatus(name); status = (addinStatus == AddinStatus.Running) ? "R" : "S"; } else { status = "R"; // mark framework as running. } moduleDT.SetValue("Status", i, status); } }
static DatabaseConfiguration ReadInternal(string file) { DatabaseConfiguration config = new DatabaseConfiguration(); XmlDocument doc = new XmlDocument(); doc.Load(file); XmlElement disabledElem = (XmlElement)doc.DocumentElement.SelectSingleNode("DisabledAddins"); if (disabledElem != null) { // For back compatibility foreach (XmlElement elem in disabledElem.SelectNodes("Addin")) { config.SetEnabled(elem.InnerText, false, true, false); } return(config); } XmlElement statusElem = (XmlElement)doc.DocumentElement.SelectSingleNode("AddinStatus"); if (statusElem != null) { foreach (XmlElement elem in statusElem.SelectNodes("Addin")) { AddinStatus status = new AddinStatus(elem.GetAttribute("id")); string senabled = elem.GetAttribute("enabled"); status.Enabled = senabled.Length == 0 || senabled == "True"; status.Uninstalled = elem.GetAttribute("uninstalled") == "True"; config.addinStatus [status.AddinId] = status; foreach (XmlElement fileElem in elem.SelectNodes("File")) { if (status.Files == null) { status.Files = new List <string> (); } status.Files.Add(fileElem.InnerText); } } } return(config); }
/// <summary> /// Construct an Addin for a type. /// </summary> /// <param name="type">The type to be used</param> public Addin( Type type ) { this.typeName = type.AssemblyQualifiedName; object[] attrs = type.GetCustomAttributes( typeof(NUnitAddinAttribute), false ); if ( attrs.Length == 1 ) { NUnitAddinAttribute attr = (NUnitAddinAttribute)attrs[0]; this.name = attr.Name; this.description = attr.Description; this.extensionType = attr.Type; } if ( this.name == null ) this.name = type.Name; if ( this.extensionType == 0 ) this.extensionType = ExtensionType.Core; this.status = AddinStatus.Enabled; }
public void SetStatus(string addinId, bool enabled, bool defaultValue) { AddinStatus s; addinStatus.TryGetValue(addinId, out s); if (s != null && s.Uninstalled) { return; } if (enabled == defaultValue) { addinStatus.Remove(addinId); return; } if (s == null) { s = addinStatus [addinId] = new AddinStatus(addinId); } s.Enabled = enabled; }
public void SetEnabled(string addinId, bool enabled, bool defaultValue, bool exactVersionMatch) { if (IsRegisteredForUninstall(addinId)) { return; } var addinName = exactVersionMatch ? addinId : Addin.GetIdName(addinId); AddinStatus s; addinStatus.TryGetValue(addinName, out s); if (enabled == defaultValue) { addinStatus.Remove(addinName); return; } if (s == null) { s = addinStatus [addinName] = new AddinStatus(addinName); } s.Enabled = enabled; }
void SetRowIcon(TreeIter it, AddinHeader info, object dataItem, AddinStatus status) { string customIcom = info.Properties.GetPropertyValue ("Icon32"); string iconId = info.Id + " " + info.Version + " " + customIcom; Gdk.Pixbuf customPix; if (customIcom.Length == 0) { customPix = null; iconId = "__"; } else if (!cachedIcons.TryGetValue (iconId, out customPix)) { if (dataItem is Addin) { string file = Path.Combine (((Addin)dataItem).Description.BasePath, customIcom); if (File.Exists (file)) { try { customPix = new Gdk.Pixbuf (file); } catch (Exception ex) { Console.WriteLine (ex); } } cachedIcons [iconId] = customPix; } else if (dataItem is AddinRepositoryEntry) { AddinRepositoryEntry arep = (AddinRepositoryEntry) dataItem; string tmpId = iconId; arep.BeginDownloadSupportFile (customIcom, delegate (IAsyncResult res) { Gtk.Application.Invoke (delegate { LoadRemoteIcon (it, tmpId, arep, res, info, dataItem, status); }); }, null); iconId = "__"; } } StoreIcon (it, iconId, customPix, status); }
internal AddinStatusChangedEventArgs(AddinStatus addinStatus, Addin addin) { AddinStatus = addinStatus; Addin = addin; }
protected virtual void UpdateRow(TreeIter iter, AddinHeader info, object dataItem, AddinStatus status) { bool sel = selected.Contains(info); treeStore.SetValue(iter, ColAddin, info); treeStore.SetValue(iter, ColData, dataItem); string name = EscapeWithFilterMarker(info.Name); if (!string.IsNullOrEmpty(info.Description)) { string desc = info.Description; int i = desc.IndexOf('\n'); if (i != -1) { desc = desc.Substring(0, i); } name += "\n<small><span foreground=\"darkgrey\">" + EscapeWithFilterMarker(desc) + "</span></small>"; } if (status != AddinStatus.Disabled) { treeStore.SetValue(iter, ColName, name); treeStore.SetValue(iter, ColVersion, info.Version); treeStore.SetValue(iter, ColAllowSelection, allowSelection); } else { treeStore.SetValue(iter, ColName, "<span foreground=\"grey\">" + name + "</span>"); treeStore.SetValue(iter, ColVersion, "<span foreground=\"grey\">" + info.Version + "</span>"); treeStore.SetValue(iter, ColAllowSelection, false); } treeStore.SetValue(iter, ColShowImage, true); treeStore.SetValue(iter, ColSelected, sel); SetRowIcon(iter, info, dataItem, status); }
public void RegisterForUninstall(string addinId, IEnumerable<string> files) { AddinStatus s; if (!addinStatus.TryGetValue (addinId, out s)) s = addinStatus [addinId] = new AddinStatus (addinId); s.Enabled = false; s.Uninstalled = true; s.Files = new List<string> (files); }
public void SetStatus(string addinId, bool enabled, bool defaultValue) { AddinStatus s; addinStatus.TryGetValue (addinId, out s); if (s != null && s.Uninstalled) return; if (enabled == defaultValue) { addinStatus.Remove (addinId); return; } if (s == null) s = addinStatus [addinId] = new AddinStatus (addinId); s.Enabled = enabled; }
void LoadGallery() { object s = galleryTree.SaveStatus(); galleryTree.Clear(); string rep = GetRepoSelection(); AddinRepositoryEntry[] reps; if (rep == AllRepoMarker) { reps = service.Repositories.GetAvailableAddins(RepositorySearchFlags.LatestVersionsOnly); } else { reps = service.Repositories.GetAvailableAddins(rep, RepositorySearchFlags.LatestVersionsOnly); } int count = 0; foreach (AddinRepositoryEntry arep in reps) { if (!Services.InApplicationNamespace(service, arep.Addin.Id)) { continue; } if (IsFiltered(arep.Addin)) { continue; } AddinStatus status = AddinStatus.NotInstalled; // Find whatever version is installed Addin sinfo = AddinManager.Registry.GetAddin(Addin.GetIdName(arep.Addin.Id)); if (sinfo != null) { status |= AddinStatus.Installed; if (!sinfo.Enabled || Services.GetMissingDependencies(sinfo).Any()) { status |= AddinStatus.Disabled; } if (Addin.CompareVersions(sinfo.Version, arep.Addin.Version) > 0) { status |= AddinStatus.HasUpdate; } } galleryTree.AddAddin(arep.Addin, arep, status); count++; } if (count > 0) { galleryTree.RestoreStatus(s); } else { galleryTree.ShowEmptyMessage(); } galleryTabLabel.Text = Catalog.GetString("Gallery"); if (filterEntry.Text.Length != 0 && count > 0) { galleryTabLabel.Text += " (" + count + ")"; } }
public TreeIter AddAddin(AddinHeader info, object dataItem, AddinStatus status) { addinData [info] = dataItem; TreeIter iter; if (ShowCategories) { TreeIter piter = TreeIter.Zero; if (info.Category == "") { string otherCat = Catalog.GetString ("Other"); piter = FindCategory (otherCat); } else { piter = FindCategory (info.Category); } iter = treeStore.AppendNode (piter); } else { iter = treeStore.AppendNode (); } UpdateRow (iter, info, dataItem, status); return iter; }
protected virtual void UpdateRow(TreeIter iter, AddinHeader info, object dataItem, AddinStatus status) { bool sel = selected.Contains (info); treeStore.SetValue (iter, ColAddin, info); treeStore.SetValue (iter, ColData, dataItem); string name = EscapeWithFilterMarker (info.Name); if (!string.IsNullOrEmpty (info.Description)) { string desc = info.Description; int i = desc.IndexOf ('\n'); if (i != -1) desc = desc.Substring (0, i); name += "\n<small><span foreground=\"darkgrey\">" + EscapeWithFilterMarker (desc) + "</span></small>"; } if (status != AddinStatus.Disabled) { treeStore.SetValue (iter, ColName, name); treeStore.SetValue (iter, ColVersion, info.Version); treeStore.SetValue (iter, ColAllowSelection, allowSelection); } else { treeStore.SetValue (iter, ColName, "<span foreground=\"grey\">" + name + "</span>"); treeStore.SetValue (iter, ColVersion, "<span foreground=\"grey\">" + info.Version + "</span>"); treeStore.SetValue (iter, ColAllowSelection, false); } treeStore.SetValue (iter, ColShowImage, true); treeStore.SetValue (iter, ColSelected, sel); SetRowIcon (iter, info, dataItem, status); }
void LoadRemoteIcon(TreeIter it, string iconId, AddinRepositoryEntry arep, IAsyncResult res, AddinHeader info, object dataItem, AddinStatus status) { if (!disposed && treeStore.IterIsValid (it)) { Gdk.Pixbuf customPix = null; try { Gdk.PixbufLoader loader = new Gdk.PixbufLoader (arep.EndDownloadSupportFile (res)); customPix = loader.Pixbuf; } catch (Exception ex) { Console.WriteLine (ex); } cachedIcons [iconId] = customPix; StoreIcon (it, iconId, customPix, status); } }
public void SetStatus( string name, AddinStatus status ) { foreach( Addin addin in addins ) if ( addin.Name == name ) addin.Status = status; }
void LoadRemoteIcon(TreeIter it, string iconId, AddinRepositoryEntry arep, IAsyncResult res, AddinHeader info, object dataItem, AddinStatus status) { if (!disposed && treeStore.IterIsValid(it)) { Gdk.Pixbuf customPix = null; try { Gdk.PixbufLoader loader = new Gdk.PixbufLoader(arep.EndDownloadSupportFile(res)); customPix = loader.Pixbuf; } catch (Exception ex) { Console.WriteLine(ex); } cachedIcons [iconId] = customPix; StoreIcon(it, iconId, customPix, status); } }
public void SetEnabled(string addinId, bool enabled, bool defaultValue, bool exactVersionMatch) { if (IsRegisteredForUninstall (addinId)) return; var addinName = exactVersionMatch ? addinId : Addin.GetIdName (addinId); AddinStatus s; addinStatus.TryGetValue (addinName, out s); if (s == null) s = addinStatus [addinName] = new AddinStatus (addinName); s.Enabled = enabled; // If enabling a specific version of an add-in, make sure the add-in is enabled as a whole if (enabled && exactVersionMatch) SetEnabled (addinId, true, defaultValue, false); }
void StoreIcon(TreeIter it, string iconId, Gdk.Pixbuf customPix, AddinStatus status) { if (customPix == null) customPix = iconInstalled; if ((status & AddinStatus.Installed) == 0) { treeStore.SetValue (it, ColImage, customPix); return; } else if (ShowInstalledMarkers && (status & AddinStatus.HasUpdate) == 0) { customPix = GetCachedIcon (iconId, "InstalledOverlay", delegate { return Services.AddIconOverlay (customPix, installedOverlay); }); iconId = iconId + "_Installed"; } if ((status & AddinStatus.Disabled) != 0) { customPix = GetCachedIcon (iconId, "Desaturate", delegate { return Services.DesaturateIcon (customPix); }); iconId = iconId + "_Desaturate"; } if ((status & AddinStatus.HasUpdate) != 0) customPix = GetCachedIcon (iconId, "UpdateOverlay", delegate { return Services.AddIconOverlay (customPix, updateOverlay); }); treeStore.SetValue (it, ColImage, customPix); }