private void tvReports_AfterSelect(object sender, TreeViewEventArgs e) { #region Clear while (true) { if (buttonHelpResources.SubItems[0] == labelHelp) { break; } buttonHelpResources.SubItems.RemoveAt(0); } #endregion reportInfo info = reportsHelper[e.Node.Tag] as reportInfo; if (info != null && (info.videos.Count > 0 || info.samples.Count > 0)) { int indexSubItems = 0; // Video if (info.videos.Count > 0) { LabelItem labelVideos = new LabelItem(); labelVideos.BackColor = System.Drawing.Color.FromArgb(221, 231, 238); labelVideos.BorderSide = Stimulsoft.Controls.Win.DotNetBar.eBorderSide.All; labelVideos.BorderType = Stimulsoft.Controls.Win.DotNetBar.eBorderType.SingleLine; labelVideos.ForeColor = System.Drawing.Color.FromArgb(0, 21, 110); labelVideos.PaddingBottom = 1; labelVideos.PaddingLeft = 1; labelVideos.PaddingTop = 1; labelVideos.SingleLineColor = System.Drawing.Color.FromArgb(197, 197, 197); labelVideos.Text = (string)demoLocalization["LabelVideos"]; buttonHelpResources.SubItems.Insert(indexSubItems++, labelVideos); int index = -1; while (++index < info.videos.Count) { videoInfo vi = info.videos[index]; ButtonItem button = new ButtonItem(); button.Image = videoBitmap; button.Text = "<b>" + vi.name + "</b><br>" + vi.description + "</br>"; button.Tag = vi.hyperlink; button.Click += new EventHandler(infoButton_Click); buttonHelpResources.SubItems.Insert(indexSubItems++, button); } } // Samples if (info.samples.Count > 0) { LabelItem labelSamples = new LabelItem(); labelSamples.BackColor = System.Drawing.Color.FromArgb(221, 231, 238); labelSamples.BorderSide = Stimulsoft.Controls.Win.DotNetBar.eBorderSide.All; labelSamples.BorderType = Stimulsoft.Controls.Win.DotNetBar.eBorderType.SingleLine; labelSamples.ForeColor = System.Drawing.Color.FromArgb(0, 21, 110); labelSamples.PaddingBottom = 1; labelSamples.PaddingLeft = 1; labelSamples.PaddingTop = 1; labelSamples.SingleLineColor = System.Drawing.Color.FromArgb(197, 197, 197); labelSamples.Text = (string)demoLocalization["LabelSamples"]; buttonHelpResources.SubItems.Insert(indexSubItems++, labelSamples); int index = -1; while (++index < info.samples.Count) { sampleInfo si = info.samples[index]; ButtonItem button = new ButtonItem(); button.Image = (si.isVB) ? global::Demo.Properties.Resources.VBProject : global::Demo.Properties.Resources.CSharpProject; button.Text = "<b>" + si.name + "</b><br>" + si.description + "</br>"; button.Tag = si.path; button.Click += new EventHandler(infoButton_Click); buttonHelpResources.SubItems.Insert(indexSubItems++, button); } } } }
private void ReadReportsInfo() { #region Load string fileName = StiLocalization.CultureName; switch (fileName) { case "ua": case "be": case "ru": fileName = "ReportsRu.xml"; break; default: fileName = "ReportsEn.xml"; break; } StreamReader sr = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("Demo." + fileName)); XmlTextReader tr = new XmlTextReader(sr); #endregion TreeNode categoryNode = null; bool is64Bit = IntPtr.Size == 8; tr.Read(); while (!tr.EOF) { if (tr.IsStartElement()) { bool isNew = tr.GetAttribute("new") == "True"; #region Category if (tr.Name == "Category") { bool x86Only = tr.GetAttribute("x86Only") == "True"; if (!(x86Only && is64Bit)) { categoryNode = new TreeNode(tr.GetAttribute("name"), 0, 0); categoryNode.Tag = tr.GetAttribute("name"); tvReports.Nodes.Add(categoryNode); } } #endregion #region Report else if (tr.Name == "Report") { bool x86Only = tr.GetAttribute("x86Only") == "True"; if (!(x86Only && is64Bit)) { TreeNode reportNode = new TreeNode(tr.GetAttribute("name"), 1, 1); reportNode.Tag = tr.GetAttribute("file"); if (tr.NodeType == XmlNodeType.Element) { reportInfo rptInfo = reportsHelper[reportNode.Tag] as reportInfo; if (rptInfo == null) { rptInfo = new reportInfo(); reportsHelper[reportNode.Tag] = rptInfo; } tr.Read(); int depth = tr.Depth; tr.Read(); while (tr.Depth >= depth && tr.NodeType != XmlNodeType.EndElement) { switch (tr.Name) { case "desc": rptInfo.description = tr.ReadElementContentAsString(); break; case "video": videoInfo video = new videoInfo(); video.name = tr.GetAttribute("name"); video.description = tr.GetAttribute("desc"); video.hyperlink = tr.ReadElementContentAsString(); rptInfo.videos.Add(video); break; case "sample": sampleInfo csSample = new sampleInfo(); csSample.name = tr.GetAttribute("name"); csSample.description = tr.GetAttribute("desc"); csSample.isVB = tr.GetAttribute("vb") == "True"; csSample.path = tr.ReadElementContentAsString(); rptInfo.samples.Add(csSample); break; } tr.Read(); } tr.Read(); } categoryNode.Nodes.Add(reportNode); } } #endregion #region Localization else if (tr.Name == "Localization") { tr.Read(); int depth = tr.Depth; tr.Read(); while (tr.Depth >= depth && tr.NodeType != System.Xml.XmlNodeType.EndElement) { string key = tr.Name; string content = tr.ReadElementContentAsString(); demoLocalization.Add(key, content); tr.Read(); } } #endregion } tr.Read(); } tr.Close(); sr.Close(); tvReports.Nodes[0].Expand(); }