285 lines · 10.8 KB · C#
RawDownload
//******************************************************************************************************//  AboutDialog.cs - Gbtc////  Copyright © 2012, Grid Protection Alliance.  All Rights Reserved.////  Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See//  the NOTICE file distributed with this work for additional information regarding copyright ownership.//  The GPA licenses this file to you under the MIT License (MIT), the "License"; you may//  not use this file except in compliance with the License. You may obtain a copy of the License at:////      http://www.opensource.org/licenses/MIT////  Unless agreed to in writing, the subject software distributed under the License is distributed on an//  "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the//  License for the specific language governing permissions and limitations.////  Code Modification History://  ----------------------------------------------------------------------------------------------------//  05/26/2006 - Pinal C. Patel//       Original version of source code generated.//  10/01/2008 - J. Ritchie Carroll//       Converted to C#.//  03/20/2009 - Pinal C. Patel//       Edited code comments.//  09/14/2009 - Stephen C. Wills//       Added new header and license agreement.//  12/20/2012 - Starlynn Danyelle Gilliam//       Modified Header.////****************************************************************************************************** using System;using System.Collections.Generic;using System.Collections.Specialized;using System.Diagnostics;using System.Drawing;using System.IO;using System.Reflection;using System.Text;using System.Windows.Forms;using GSF.Reflection; namespace GSF.Windows.Forms{    /// <summary>    /// Represents a common about dialog box.    /// </summary>    public partial class AboutDialog : Form    {        #region [ Members ]         // Fields        private string m_url;        private List<AssemblyInfo> m_assemblies;         #endregion         #region [ Constructors ]         /// <summary>        /// Initializes a new instance of the <see cref="AboutDialog"/> class.        /// </summary>        public AboutDialog()        {            InitializeComponent();             AssemblyInfo executingAssembly = AssemblyInfo.ExecutingAssembly;            SetCompanyUrl("http://www.gridprotectionalliance.org/");            SetCompanyLogo(executingAssembly.GetEmbeddedResource("GSF.Windows.Forms.Logo.bmp"));            SetCompanyDisclaimer(executingAssembly.GetEmbeddedResource("GSF.Windows.Forms.Disclaimer.txt"));        }         #endregion         #region [ Methods ]         /// <summary>        /// Conceals the tab where disclaimer text is displayed.        /// </summary>        /// <remarks></remarks>        public void HideDisclaimerTab()        {            TabControlInformation.TabPages.Remove(TabPageDisclaimer);        }         /// <summary>        /// Conceals the tab where application information is displayed.        /// </summary>        /// <remarks></remarks>        public void HideApplicationTab()        {            TabControlInformation.TabPages.Remove(TabPageApplication);        }         /// <summary>        /// Conceals the tab where assemblies and their information is displayed.        /// </summary>        /// <remarks></remarks>        public void HideAssembliesTab()        {            TabControlInformation.TabPages.Remove(TabPageAssemblies);        }         /// <summary>        /// Sets the URL that will be opened when the logo is clicked.        /// </summary>        /// <param name="url">URL of the company's home page.</param>        /// <remarks></remarks>        public void SetCompanyUrl(string url)        {            m_url = url;        }         /// <summary>        /// Sets the logo that is to be displayed in the About Dialog.        /// </summary>        /// <param name="logoFile">Location of the logo file.</param>        /// <remarks></remarks>        public void SetCompanyLogo(string logoFile)        {            if (File.Exists(logoFile))            {                // Logo file exists so load it in memory.                StreamReader logoReader = new StreamReader(logoFile);                SetCompanyLogo(logoReader.BaseStream);                logoReader.Close(); // Release all locks on the file.            }            else            {                MessageBox.Show("The logo file \'" + logoFile + "\' does not exist.", "Missing File", MessageBoxButtons.OK, MessageBoxIcon.Warning);            }        }         /// <summary>        /// Sets the logo that is to be displayed in the About Dialog.        /// </summary>        /// <param name="logoStream">System.IO.Stream of the logo.</param>        /// <remarks></remarks>        public void SetCompanyLogo(Stream logoStream)        {            if (logoStream != null)            {                using (Image img = PictureBoxLogo.Image)                {                    PictureBoxLogo.Image = new Bitmap(logoStream);                }            }        }         /// <summary>        /// Sets the disclaimer text that is to be displayed in the About Dialog.        /// </summary>        /// <param name="disclaimerFile">Location of the file that contains the disclaimer text.</param>        /// <remarks></remarks>        public void SetCompanyDisclaimer(string disclaimerFile)        {            if (File.Exists(disclaimerFile))            {                // Disclaimer file exists so load it in memory.                StreamReader disclaimerReader = new StreamReader(disclaimerFile, Encoding.Default);                SetCompanyDisclaimer(disclaimerReader.BaseStream);                disclaimerReader.Close(); // Release all locks on the file.            }            else            {                MessageBox.Show("The disclaimer file \'" + disclaimerFile + "\' does not exist.", "Missing File", MessageBoxButtons.OK, MessageBoxIcon.Warning);            }        }         /// <summary>        /// Sets the disclaimer text that is to be displayed in the About Dialog.        /// </summary>        /// <param name="disclaimerStream">System.IO.Stream of the disclaimer text.</param>        /// <remarks></remarks>        public void SetCompanyDisclaimer(Stream disclaimerStream)        {            if (disclaimerStream != null)                RichTextBoxDisclaimer.Text = new StreamReader(disclaimerStream, Encoding.Default).ReadToEnd();        }         private void AddListViewItem(ListView listView, string text, params string[] subitems)        {            //Add a new ListViewItem with the specified data to the specified ListView.            ListViewItem item = new ListViewItem();            item.Text = text;             foreach (string subitem in subitems)            {                item.SubItems.Add(subitem);            }             listView.Items.Add(item);        }         private void _AboutDialog_Load(object sender, EventArgs e)        {            Text = string.Format(this.Text, AssemblyInfo.EntryAssembly.Title);             if (Owner != null)            {                Size originalSize = this.Size;                Font = Owner.Font;                Size = originalSize;            }             // Show information about the application that opened this dialog box.            ListViewApplicationInfo.Items.Clear();             AddListViewItem(ListViewApplicationInfo, "Friendly Name", AppDomain.CurrentDomain.FriendlyName);            AddListViewItem(ListViewApplicationInfo, "Name", AssemblyInfo.EntryAssembly.Name);            AddListViewItem(ListViewApplicationInfo, "Version", AssemblyInfo.EntryAssembly.Version.ToString());            AddListViewItem(ListViewApplicationInfo, "Build Date", AssemblyInfo.EntryAssembly.BuildDate.ToString());            AddListViewItem(ListViewApplicationInfo, "Location", AssemblyInfo.EntryAssembly.Location);            AddListViewItem(ListViewApplicationInfo, "Title", AssemblyInfo.EntryAssembly.Title);            AddListViewItem(ListViewApplicationInfo, "Description", AssemblyInfo.EntryAssembly.Description);            AddListViewItem(ListViewApplicationInfo, "Company", AssemblyInfo.EntryAssembly.Company);            AddListViewItem(ListViewApplicationInfo, "Product", AssemblyInfo.EntryAssembly.Product);            AddListViewItem(ListViewApplicationInfo, "Copyright", AssemblyInfo.EntryAssembly.Copyright);             // None of the application assemblies contain trademark information...            //AddListViewItem(ListViewApplicationInfo, "Trademark", AssemblyInfo.EntryAssembly.Trademark);             // Query all the assemblies used by the calling application.            if ((object)m_assemblies == null)            {                m_assemblies = new List<AssemblyInfo>();                foreach (Assembly asm in AppDomain.CurrentDomain.GetAssemblies())                {                    try                    {                        // Ignore assemblies that are not physically accessible from the file system.                        if (File.Exists(asm.Location))                            m_assemblies.Add(new AssemblyInfo(asm));                    }                    catch                    {                        // Accessing Location property on assemblies that are built dynamically will result in an                        // exception since such assemblies only exist in-memory, so we'll ignore such assemblies.                    }                }            }             // Show a list of all the queried assemblies.            ComboBoxAssemblies.DisplayMember = "Name";            ComboBoxAssemblies.DataSource = m_assemblies;             if (ComboBoxAssemblies.Items.Count > 0)                ComboBoxAssemblies.SelectedIndex = 0;        }         private void PictureBoxLogo_Click(object sender, EventArgs e)        {            if (!string.IsNullOrEmpty(m_url))                Process.Start(m_url);        }         private void RichTextBoxDisclaimer_LinkClicked(object sender, LinkClickedEventArgs e)        {            if (!string.IsNullOrEmpty(e.LinkText))                Process.Start(e.LinkText);        }         private void ComboBoxAssemblies_SelectedIndexChanged(object sender, EventArgs e)        {            if (ComboBoxAssemblies.SelectedItem != null)            {                ListViewAssemblyInfo.Items.Clear();                 NameValueCollection attributes = ((AssemblyInfo)ComboBoxAssemblies.SelectedItem).GetAttributes();                 foreach (string key in attributes)                {                    AddListViewItem(ListViewAssemblyInfo, key, attributes[key]);                }            }        }         private void ButtonOK_Click(object sender, EventArgs e)        {            Close();        }         #endregion    }}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t