//===================================================================== /// <summary> /// Constructor /// </summary> /// <param name="currentProject">The current project</param> /// <param name="currentConfig">The current XML configuration /// XML fragment</param> public VersionBuilderConfigDlg(SandcastleProject currentProject, string currentConfig) { XPathNavigator navigator, root, node; string ripOldApis; InitializeComponent(); project = currentProject; lnkProjectSite.Links[0].LinkData = "https://GitHub.com/EWSoftware/SHFB"; lbVersionInfo.DisplayMember = lbVersionInfo.ValueMember = "ListDescription"; items = new VersionSettingsCollection(); // Load the current settings config = new XmlDocument(); config.LoadXml(currentConfig); navigator = config.CreateNavigator(); root = navigator.SelectSingleNode("configuration"); if(!root.IsEmptyElement) { node = root.SelectSingleNode("currentProject"); if(node != null) { txtLabel.Text = node.GetAttribute("label", String.Empty); txtVersion.Text = node.GetAttribute("version", String.Empty); ripOldApis = node.GetAttribute("ripOldApis", String.Empty); // This wasn't in earlier versions if(!String.IsNullOrEmpty(ripOldApis)) chkRipOldAPIs.Checked = Convert.ToBoolean(ripOldApis, CultureInfo.InvariantCulture); } items.FromXml(currentProject, root); } if(items.Count == 0) pgProps.Enabled = btnDelete.Enabled = false; else { // Binding the collection to the list box caused some // odd problems with the property grid so we'll add the // items to the list box directly. foreach(VersionSettings vs in items) lbVersionInfo.Items.Add(vs); lbVersionInfo.SelectedIndex = 0; } }
/// <summary> /// This method is used to initialize the plug-in at the start of the build process /// </summary> /// <param name="buildProcess">A reference to the current build process</param> /// <param name="configuration">The configuration data that the plug-in should use to initialize itself</param> /// <exception cref="BuilderException">This is thrown if the plug-in configuration is not valid</exception> public void Initialize(BuildProcess buildProcess, XPathNavigator configuration) { XPathNavigator root, node; string ripOld; builder = buildProcess; allVersions = new VersionSettingsCollection(); uniqueLabels = new List<string>(); var metadata = (HelpFileBuilderPlugInExportAttribute)this.GetType().GetCustomAttributes( typeof(HelpFileBuilderPlugInExportAttribute), false).First(); builder.ReportProgress("{0} Version {1}\r\n{2}", metadata.Id, metadata.Version, metadata.Copyright); root = configuration.SelectSingleNode("configuration"); if(root.IsEmptyElement) throw new BuilderException("VBP0001", "The Version Builder plug-in has not been configured yet"); // Add an element for the current project. This one won't have a project to build. currentVersion = new VersionSettings(); allVersions.Add(currentVersion); node = root.SelectSingleNode("currentProject"); if(node != null) { currentVersion.FrameworkLabel = node.GetAttribute("label", String.Empty).Trim(); currentVersion.Version = node.GetAttribute("version", String.Empty).Trim(); currentVersion.RipOldApis = false; ripOld = node.GetAttribute("ripOldApis", String.Empty); // This wasn't in older versions if(!String.IsNullOrEmpty(ripOld)) ripOldApis = Convert.ToBoolean(ripOld, CultureInfo.InvariantCulture); } allVersions.FromXml(builder.CurrentProject, root); // An empty label messes up the HTML so use a single space if it's blank if(String.IsNullOrEmpty(currentVersion.FrameworkLabel)) currentVersion.FrameworkLabel = " "; if(node == null) throw new BuilderException("VBP0002", "A version value is required for the Version Builder plug-in"); if(allVersions.Count == 1) builder.ReportProgress("No other version information was supplied. Only version information " + "for the documented assemblies will be included."); foreach(VersionSettings vs in allVersions) if(!uniqueLabels.Contains(vs.FrameworkLabel)) uniqueLabels.Add(vs.FrameworkLabel); uniqueLabels.Sort(); }
/// <summary> /// This method is used to initialize the plug-in at the start of the /// build process. /// </summary> /// <param name="buildProcess">A reference to the current build /// process.</param> /// <param name="configuration">The configuration data that the plug-in /// should use to initialize itself.</param> /// <exception cref="BuilderException">This is thrown if the plug-in /// configuration is not valid.</exception> public void Initialize(BuildProcess buildProcess, XPathNavigator configuration) { XPathNavigator root, node; string ripOld; builder = buildProcess; allVersions = new VersionSettingsCollection(); uniqueLabels = new List<string>(); builder.ReportProgress("{0} Version {1}\r\n{2}", this.Name, this.Version, this.Copyright); root = configuration.SelectSingleNode("configuration"); if(root.IsEmptyElement) throw new BuilderException("VBP0002", "The Version Builder plug-in has not been configured yet"); // Add an element for the current project. This one won't have // a project to build. currentVersion = new VersionSettings(); allVersions.Add(currentVersion); node = root.SelectSingleNode("currentProject"); if(node != null) { currentVersion.FrameworkLabel = node.GetAttribute("label", String.Empty).Trim(); currentVersion.Version = node.GetAttribute("version", String.Empty).Trim(); ripOld = node.GetAttribute("ripOldApis", String.Empty); // This wasn't in older versions if(!String.IsNullOrEmpty(ripOld)) ripOldApis = Convert.ToBoolean(ripOld, CultureInfo.InvariantCulture); } allVersions.FromXml(builder.CurrentProject, root); // An empty label messes up the HTML so use a single space // if it's blank. if(String.IsNullOrEmpty(currentVersion.FrameworkLabel)) currentVersion.FrameworkLabel = " "; if(node == null || allVersions.Count == 1) throw new BuilderException("VBP0003", "A version value and at least one prior version " + "are required for the Version Builder plug-in."); foreach(VersionSettings vs in allVersions) if(!uniqueLabels.Contains(vs.FrameworkLabel)) uniqueLabels.Add(vs.FrameworkLabel); uniqueLabels.Sort(); }