/// <summary> /// When the item changes, show its summary in the text box and set the Appears In list box data source /// </summary> /// <param name="sender">The sender of the event</param> /// <param name="e">The event arguments</param> private void lbNamespaces_SelectedIndexChanged(object sender, EventArgs e) { List <string> assemblies; string name; if (lbNamespaces.SelectedIndex != -1) { NamespaceSummaryItem nsi = (NamespaceSummaryItem)lbNamespaces.SelectedItem; txtSummary.Text = nsi.Summary; name = nsi.Name; if (name[0] == '(') { name = String.Empty; } if (namespaceInfo.TryGetValue(name, out assemblies)) { lbAppearsIn.DataSource = assemblies; } else { lbAppearsIn.DataSource = null; } } else { txtSummary.Text = null; lbAppearsIn.DataSource = null; } }
/// <summary> /// Store changes to the summary when the textbox loses focus /// </summary> /// <param name="sender">The sender of the event</param> /// <param name="e">The event arguments</param> private void txtSummary_Leave(object sender, EventArgs e) { NamespaceSummaryItem nsi = (NamespaceSummaryItem)lbNamespaces.SelectedItem; if (nsi != null && nsi.Summary != txtSummary.Text) { nsi.Summary = txtSummary.Text; } }
/// <summary> /// Mark the summary item as documented or not when the check state changes /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void lbNamespaces_ItemCheck(object sender, ItemCheckEventArgs e) { NamespaceSummaryItem nsi = (NamespaceSummaryItem)lbNamespaces.Items[e.Index]; bool isChecked = (e.NewValue == CheckState.Checked); if (nsi.IsDocumented != isChecked) { nsi.IsDocumented = isChecked; } }
/// <summary> /// Mark the summary item as documented or not when the check state /// changes. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void lbNamespaces_ItemCheck(object sender, ItemCheckEventArgs e) { NamespaceSummaryItem nsi = (NamespaceSummaryItem)lbNamespaces.SelectedItem; bool isChecked = (e.NewValue == CheckState.Checked); if (nsi != null && nsi.IsDocumented != isChecked) { nsi.IsDocumented = isChecked; wasChanged = true; } }
/// <summary> /// When the item changes, show its summary in the text box. /// </summary> /// <param name="sender">The sender of the event</param> /// <param name="e">The event arguments</param> private void lbNamespaces_SelectedIndexChanged(object sender, EventArgs e) { if (lbNamespaces.SelectedIndex != -1) { NamespaceSummaryItem nsi = (NamespaceSummaryItem)lbNamespaces.SelectedItem; txtSummary.Text = nsi.Summary; } else { txtSummary.Text = null; } }
/// <summary> /// Apply the namespace filter to the namespace list /// </summary> /// <param name="sender">The sender of the event</param> /// <param name="e">The event arguments</param> private void btnApplyFilter_Click(object sender, RoutedEventArgs e) { Regex reFilter = null; lbNamespaces.Items.Clear(); txtSearchText.Text = txtSearchText.Text.Trim(); if (txtSearchText.Text.Length != 0) { try { reFilter = new Regex(txtSearchText.Text, RegexOptions.IgnoreCase); } catch (ArgumentException ex) { MessageBox.Show("The search regular expression is not valid: " + ex.Message, Constants.AppName, MessageBoxButton.OK, MessageBoxImage.Exclamation); return; } } // Add the items to the list box in sorted order by name foreach (string key in namespaceItems.Keys) { NamespaceSummaryItem nsi = namespaceItems[key]; // Always show groups if (!nsi.IsGroup) { // Filter by assembly? if (cboAssembly.SelectedIndex != 0) { string name = nsi.Name; if (name[0] == '(') { name = String.Empty; } if (namespaceInfo.TryGetValue(name, out List <string> assemblies)) { if (!assemblies.Contains(cboAssembly.Text)) { continue; } } } // Filter by search text? if (reFilter != null && !reFilter.IsMatch(nsi.Name)) { continue; } } lbNamespaces.Items.Add(nsi); } if (lbNamespaces.Items.Count != 0) { btnDelete.IsEnabled = txtSummary.IsEnabled = true; lbNamespaces.SelectedIndex = 0; } else { btnDelete.IsEnabled = txtSummary.IsEnabled = false; } }
/// <summary> /// This is called to import settings from an NDoc project into /// a new Sandcastle Help File Builder project. /// </summary> /// <param name="ndocProject">The NDoc project file from which to /// import the settings.</param> private void ImportFromNDoc(string ndocProject) { StreamReader sr = null; XmlDocument sourceFile = new XmlDocument(); XmlNodeList elements; XmlNode node; DocumentAssembly da; ContentItem ci, rootPage = null; DependencyItem di; NamespaceSummaryItem nsi; string folderName; try { this.Cursor = Cursors.WaitCursor; sr = new StreamReader(ndocProject); sourceFile.Load(sr); // Add the assemblies elements = sourceFile.SelectNodes("//assemblies/*"); foreach (XmlNode assembly in elements) { da = new DocumentAssembly(); da.AssemblyPath = new FilePath( assembly.Attributes["location"].Value); da.XmlCommentsPath = new FilePath( assembly.Attributes["documentation"].Value); project.Assemblies.Add(da); } // Add the namespace summaries elements = sourceFile.SelectNodes("//namespaces/*"); foreach (XmlNode ns in elements) { nsi = new NamespaceSummaryItem(ns.Attributes["name"].Value); nsi.Summary = ns.InnerXml; project.NamespaceSummaries.Add(nsi); } // Add one for the global namespace if it isn't there if (!project.NamespaceSummaries.Contains(String.Empty)) { project.NamespaceSummaries.Add(new NamespaceSummaryItem()); } project.NamespaceSummaries.Sort(); // Add reference paths elements = sourceFile.SelectNodes("//referencePaths/*"); foreach (XmlNode reference in elements) { di = new DependencyItem(); di.DependencyPath = new FileFolderGacPath( reference.Attributes["path"].Value + "\\*.dll"); project.Dependencies.Add(di); } // Add options from the MSDN documenter node = sourceFile.SelectSingleNode("//documenters/documenter" + "[@name=\"MSDN\" or @name=\"MSDN-CHM\"]"); if (node != null) { foreach (XmlNode child in node.ChildNodes) { switch (child.Attributes["name"].Value) { case "AdditionalContentResourceDirectory": ci = new ContentItem(); ci.SourcePath = new FilePath( child.Attributes["value"].Value); folderName = Path.GetDirectoryName(ci.SourcePath); ci.DestinationPath = folderName.Substring( folderName.LastIndexOf('\\') + 1); project.AdditionalContent.Add(ci); break; case "CopyrightHref": project.CopyrightHref = child.Attributes["value"].Value; break; case "CopyrightText": project.CopyrightText = child.Attributes["value"].Value; break; case "DocumentAttributes": project.DocumentAttributes = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "DocumentExplicitInterfaceImplementations": project.DocumentExplicitInterfaceImplementations = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "DocumentInheritedMembers": project.DocumentInheritedMembers = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "DocumentInheritedFrameworkMembers": project.DocumentInheritedFrameworkMembers = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "DocumentInternals": project.DocumentInternals = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "DocumentPrivates": project.DocumentPrivates = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "DocumentProtected": project.DocumentProtected = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "DocumentProtectedInternalAsProtected": project.DocumentProtectedInternalAsProtected = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "DocumentSealedProtected": project.DocumentSealedProtected = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "FeedbackEmailAddress": project.FeedbackEMailAddress = child.Attributes["value"].Value; break; case "HtmlHelpName": project.HtmlHelpName = child.Attributes["value"].Value; break; case "OutputDirectory": project.OutputPath = new FolderPath( child.Attributes["value"].Value); break; case "Title": project.HelpTitle = child.Attributes["value"].Value; break; case "RootPageContainsNamespaces": project.RootNamespaceContainer = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "RootPageFileName": if (rootPage == null) { rootPage = new ContentItem(); rootPage.SourcePath = new FilePath( child.Attributes["value"].Value); project.AdditionalContent.Insert(0, rootPage); } else { rootPage.SourcePath = new FilePath( child.Attributes["value"].Value); } break; case "RootPageTOCName": if (rootPage == null) { rootPage = new ContentItem(); rootPage.SourcePath = new FilePath( @".\Unknown"); project.AdditionalContent.Insert(0, rootPage); } break; case "FilesToInclude": foreach (string filename in child.Attributes[ "value"].Value.Split(new char[] { '|' })) { ci = new ContentItem(); ci.SourcePath = new FilePath(filename); project.AdditionalContent.Add(ci); } break; case "AutoDocumentConstructors": project.AutoDocumentConstructors = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "ShowMissingSummaries": project.ShowMissingSummaries = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "ShowMissingRemarks": project.ShowMissingRemarks = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "ShowMissingParams": project.ShowMissingParams = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "ShowMissingReturns": project.ShowMissingReturns = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; case "ShowMissingValues": project.ShowMissingValues = Convert.ToBoolean( child.Attributes["value"].Value, CultureInfo.InvariantCulture); break; default: break; } } } } catch (Exception ex) { System.Diagnostics.Debug.Write(ex); MessageBox.Show(ex.Message, Constants.AppName, MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { if (sr != null) { sr.Close(); } this.Cursor = Cursors.Default; } }