313 lines
15 KiB
C#
313 lines
15 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the MIT license. See LICENSE file in the project root for details.
|
|
|
|
using System;
|
|
using System.ComponentModel;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.Globalization;
|
|
using System.Reflection;
|
|
using System.Windows.Forms;
|
|
using OpenLiveWriter.Controls;
|
|
using OpenLiveWriter.CoreServices;
|
|
using OpenLiveWriter.CoreServices.Layout;
|
|
using OpenLiveWriter.CoreServices.ResourceDownloading;
|
|
using OpenLiveWriter.Localization;
|
|
using System.Text;
|
|
|
|
namespace OpenLiveWriter.PostEditor
|
|
{
|
|
|
|
public class AboutForm : ApplicationDialog
|
|
{
|
|
/// <summary>
|
|
/// Form fields.
|
|
/// </summary>
|
|
private Label labelCopyright;
|
|
private Button buttonOK;
|
|
private PictureBox pictureBoxLogo;
|
|
private Label labelProduct;
|
|
private Label labelVersion;
|
|
private System.Windows.Forms.LinkLabel lnkShowLogFile;
|
|
private Label labelConfigVersion;
|
|
private TextBox copyrightTextbox;
|
|
|
|
/// <summary>
|
|
/// Required designer variable.
|
|
/// </summary>
|
|
private Container components = null;
|
|
private LinkLabel labelWebsiteLink;
|
|
|
|
// Copyright notices are not to be localized.
|
|
string[] credits = {
|
|
"Apache log4net (Apache 2.0) (C) Copyright 2004-2015 The Apache Software Foundation\nhttp://logging.apache.org/log4net/",
|
|
/* Brian Lambert */ "Portions Copyright © 2003 Brian Lambert, used with permission of the author under the MIT License.",
|
|
"DeltaCompressionDotNet (MS-PL) Copyright © Todd Aspeotis 2013 \nhttps://github.com/taspeotis/DeltaCompressionDotNet",
|
|
"DotNetZip (MS-PL) Copyright (c) 2011 Dino Chiesa.\nhttp://dotnetzip.codeplex.com/",
|
|
"Google API Client Library for .NET (Apache 2.0) (C) Copyright Google Inc.\nhttps://developers.google.com/api-client-library/dotnet/",
|
|
"Ionic Zlib Copyright (c) 2000,2001,2002,2003 ymnk, JCraft",
|
|
"Mono.Cecil (MIT) Copyright © 2008 - 2015 Jb Evain Copyright © 2008 - 2011 Novell, Inc \nhttps://github.com/jbevain/cecil",
|
|
"PlatformSpellCheck (MIT) Copyright © 2015 Bruce Bowyer-Smyth \nhttps://github.com/bbowyersmyth/spellcheck/",
|
|
/* XmpMetadata.cs */ "Portions Copyright © 2011 Omar Shahine, licensed under Creative Commons Attribution 3.0 Unported License.",
|
|
"Splat (MIT) Copyright © 2013 Paul Betts \nhttps://github.com/paulcbetts/splat/",
|
|
"Squirrel.Windows (MIT) Copyright © 2012 GitHub, Inc. \nhttps://github.com/squirrel/squirrel.windows",
|
|
"zlib-1.1.3 Copyright (C) 1995-2004 Jean-loup Gailly and Mark Adler",
|
|
};
|
|
|
|
public AboutForm()
|
|
{
|
|
//
|
|
// Required for Windows Form Designer support
|
|
//
|
|
InitializeComponent();
|
|
|
|
labelProduct.Font = Res.GetFont(FontSize.XXLarge, FontStyle.Regular);
|
|
buttonOK.Text = Res.Get(StringId.OKButtonText);
|
|
labelVersion.Text = Res.Get(StringId.AboutVersion);
|
|
|
|
labelCopyright.Text = Res.Get(StringId.AboutCopyright);
|
|
|
|
lnkShowLogFile.Text = Res.Get(StringId.ShowLogFile);
|
|
lnkShowLogFile.Refresh();
|
|
|
|
// Piece of crap designer.
|
|
Bitmap aboutBoxImage = ResourceHelper.LoadAssemblyResourceBitmap("Images.AboutBoxImageSmall.png");
|
|
pictureBoxLogo = new PictureBox();
|
|
pictureBoxLogo.Bounds = new Rectangle(7, 16, aboutBoxImage.Width, aboutBoxImage.Height);
|
|
pictureBoxLogo.Image = aboutBoxImage;
|
|
pictureBoxLogo.RightToLeft = RightToLeft.No;
|
|
Controls.Add(pictureBoxLogo);
|
|
|
|
// Set the dialog text.
|
|
Text = TextHelper.StripHotkey(String.Format(CultureInfo.CurrentCulture, Res.Get(StringId.AboutAbout), ApplicationEnvironment.ProductNameQualified));
|
|
#if DEBUG
|
|
string displayVersion = ApplicationEnvironment.ProductDisplayVersion + " " + CultureInfo.CurrentUICulture;
|
|
#else
|
|
string displayVersion = ApplicationEnvironment.ProductDisplayVersion;
|
|
#endif
|
|
|
|
labelProduct.Text = ApplicationEnvironment.ProductNameVersioned;
|
|
labelVersion.Text = String.Format(CultureInfo.CurrentCulture, labelVersion.Text, displayVersion);
|
|
|
|
Version version = Assembly.GetExecutingAssembly().GetName().Version;
|
|
labelConfigVersion.Text = String.Format(CultureInfo.CurrentCulture, Res.Get(StringId.AboutConfigurationVersion), version);
|
|
labelConfigVersion.Visible = false;
|
|
|
|
copyrightTextbox.Font = Res.GetFont(FontSize.Small, FontStyle.Regular);
|
|
StringBuilder strCredits = new StringBuilder();
|
|
|
|
foreach (string str in credits)
|
|
{
|
|
strCredits.AppendFormat("{0}\r\n\r\n", str);
|
|
}
|
|
copyrightTextbox.Text = strCredits.ToString().TrimEnd();
|
|
copyrightTextbox.AccessibleName = ControlHelper.ToAccessibleName(Res.Get(StringId.CopyrightInformation));
|
|
|
|
// Drive focus down to the OK button.
|
|
buttonOK.Focus();
|
|
}
|
|
|
|
protected override void OnLoad(EventArgs e)
|
|
{
|
|
base.OnLoad(e);
|
|
|
|
using (new AutoGrow(this, AnchorStyles.Bottom | AnchorStyles.Right, true))
|
|
{
|
|
pictureBoxLogo.Left = labelCopyright.Left;
|
|
labelProduct.Left = pictureBoxLogo.Right + 10;
|
|
labelVersion.Left = pictureBoxLogo.Right + 10;
|
|
LayoutHelper.NaturalizeHeight(labelProduct);
|
|
labelProduct.Top = pictureBoxLogo.Top + (pictureBoxLogo.Height / 2) - labelProduct.Height;
|
|
LayoutHelper.DistributeVertically(15, false, labelProduct, labelVersion);
|
|
LayoutHelper.NaturalizeHeightAndDistribute(8, labelVersion, labelCopyright);
|
|
|
|
LayoutHelper.FitControlsBelow(10, labelCopyright);
|
|
|
|
DisplayHelper.AutoFitSystemButton(buttonOK, buttonOK.Width, int.MaxValue);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Clean up any resources being used.
|
|
/// </summary>
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
if (disposing)
|
|
{
|
|
if (components != null)
|
|
{
|
|
components.Dispose();
|
|
}
|
|
}
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
#region Windows Form Designer generated code
|
|
/// <summary>
|
|
/// Required method for Designer support - do not modify
|
|
/// the contents of this method with the code editor.
|
|
/// </summary>
|
|
private void InitializeComponent()
|
|
{
|
|
this.labelProduct = new System.Windows.Forms.Label();
|
|
this.labelCopyright = new System.Windows.Forms.Label();
|
|
this.buttonOK = new System.Windows.Forms.Button();
|
|
this.labelVersion = new System.Windows.Forms.Label();
|
|
this.lnkShowLogFile = new System.Windows.Forms.LinkLabel();
|
|
this.labelConfigVersion = new System.Windows.Forms.Label();
|
|
this.copyrightTextbox = new System.Windows.Forms.TextBox();
|
|
this.labelWebsiteLink = new System.Windows.Forms.LinkLabel();
|
|
this.SuspendLayout();
|
|
//
|
|
// labelProduct
|
|
//
|
|
this.labelProduct.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
|
this.labelProduct.Font = new System.Drawing.Font("Tahoma", 12F);
|
|
this.labelProduct.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
|
this.labelProduct.Location = new System.Drawing.Point(22, 16);
|
|
this.labelProduct.Name = "labelProduct";
|
|
this.labelProduct.Size = new System.Drawing.Size(287, 24);
|
|
this.labelProduct.TabIndex = 0;
|
|
this.labelProduct.Text = "Open Live Writer";
|
|
//
|
|
// labelCopyright
|
|
//
|
|
this.labelCopyright.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
|
this.labelCopyright.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
|
this.labelCopyright.Location = new System.Drawing.Point(22, 100);
|
|
this.labelCopyright.Name = "labelCopyright";
|
|
this.labelCopyright.Size = new System.Drawing.Size(284, 30);
|
|
this.labelCopyright.TabIndex = 1;
|
|
this.labelCopyright.Text = "© 2015 .NET Foundation. All rights reserved.";
|
|
//
|
|
// buttonOK
|
|
//
|
|
this.buttonOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
|
this.buttonOK.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
|
this.buttonOK.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
|
this.buttonOK.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
|
this.buttonOK.Location = new System.Drawing.Point(344, 280);
|
|
this.buttonOK.Name = "buttonOK";
|
|
this.buttonOK.Size = new System.Drawing.Size(75, 23);
|
|
this.buttonOK.TabIndex = 7;
|
|
this.buttonOK.Text = "OK";
|
|
this.buttonOK.Click += new System.EventHandler(this.buttonOK_Click);
|
|
//
|
|
// labelVersion
|
|
//
|
|
this.labelVersion.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
|
this.labelVersion.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
|
this.labelVersion.Location = new System.Drawing.Point(22, 55);
|
|
this.labelVersion.Name = "labelVersion";
|
|
this.labelVersion.Size = new System.Drawing.Size(287, 20);
|
|
this.labelVersion.TabIndex = 0;
|
|
this.labelVersion.Text = "Build xxx.xxxx.xxxx";
|
|
//
|
|
// lnkShowLogFile
|
|
//
|
|
this.lnkShowLogFile.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
|
this.lnkShowLogFile.AutoSize = true;
|
|
this.lnkShowLogFile.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
|
this.lnkShowLogFile.LinkBehavior = System.Windows.Forms.LinkBehavior.HoverUnderline;
|
|
this.lnkShowLogFile.LinkColor = System.Drawing.SystemColors.HotTrack;
|
|
this.lnkShowLogFile.Location = new System.Drawing.Point(20, 282);
|
|
this.lnkShowLogFile.Name = "lnkShowLogFile";
|
|
this.lnkShowLogFile.Size = new System.Drawing.Size(75, 15);
|
|
this.lnkShowLogFile.TabIndex = 8;
|
|
this.lnkShowLogFile.TabStop = true;
|
|
this.lnkShowLogFile.Text = "Show log file";
|
|
this.lnkShowLogFile.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
|
this.lnkShowLogFile.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkShowLogFile_LinkClicked);
|
|
//
|
|
// labelConfigVersion
|
|
//
|
|
this.labelConfigVersion.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
|
this.labelConfigVersion.ImeMode = System.Windows.Forms.ImeMode.NoControl;
|
|
this.labelConfigVersion.Location = new System.Drawing.Point(22, 75);
|
|
this.labelConfigVersion.Name = "labelConfigVersion";
|
|
this.labelConfigVersion.Size = new System.Drawing.Size(284, 18);
|
|
this.labelConfigVersion.TabIndex = 9;
|
|
this.labelConfigVersion.Text = "Configuration Version 12.0.2342.0324";
|
|
//
|
|
// copyrightTextbox
|
|
//
|
|
this.copyrightTextbox.AcceptsReturn = true;
|
|
this.copyrightTextbox.Location = new System.Drawing.Point(12, 133);
|
|
this.copyrightTextbox.Multiline = true;
|
|
this.copyrightTextbox.Name = "copyrightTextbox";
|
|
this.copyrightTextbox.ReadOnly = true;
|
|
this.copyrightTextbox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
|
this.copyrightTextbox.Size = new System.Drawing.Size(410, 141);
|
|
this.copyrightTextbox.TabIndex = 12;
|
|
//
|
|
// labelWebsiteLink
|
|
//
|
|
this.labelWebsiteLink.AutoSize = true;
|
|
this.labelWebsiteLink.Location = new System.Drawing.Point(249, 20);
|
|
this.labelWebsiteLink.Name = "labelWebsiteLink";
|
|
this.labelWebsiteLink.Size = new System.Drawing.Size(173, 15);
|
|
this.labelWebsiteLink.TabIndex = 13;
|
|
this.labelWebsiteLink.TabStop = true;
|
|
this.labelWebsiteLink.Text = "http://www.openlivewriter.org/";
|
|
this.labelWebsiteLink.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.labelWebsiteLink_LinkClicked);
|
|
//
|
|
// AboutForm
|
|
//
|
|
this.AcceptButton = this.buttonOK;
|
|
this.BackColor = System.Drawing.SystemColors.Window;
|
|
this.CancelButton = this.buttonOK;
|
|
this.ClientSize = new System.Drawing.Size(434, 312);
|
|
this.Controls.Add(this.labelWebsiteLink);
|
|
this.Controls.Add(this.copyrightTextbox);
|
|
this.Controls.Add(this.labelConfigVersion);
|
|
this.Controls.Add(this.lnkShowLogFile);
|
|
this.Controls.Add(this.buttonOK);
|
|
this.Controls.Add(this.labelVersion);
|
|
this.Controls.Add(this.labelCopyright);
|
|
this.Controls.Add(this.labelProduct);
|
|
this.Margin = new System.Windows.Forms.Padding(4);
|
|
this.MaximizeBox = false;
|
|
this.MinimizeBox = false;
|
|
this.Name = "AboutForm";
|
|
this.Text = "About {0}";
|
|
this.ResumeLayout(false);
|
|
this.PerformLayout();
|
|
|
|
}
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// Shows the AboutForm.
|
|
/// </summary>
|
|
/// <returns>The DialogResult.</returns>
|
|
public static DialogResult DisplayDialog()
|
|
{
|
|
using (new WaitCursor())
|
|
{
|
|
using (AboutForm aboutForm = new AboutForm())
|
|
return aboutForm.ShowDialog(Win32WindowImpl.ForegroundWin32Window);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// buttonOK_Click event handler.
|
|
/// </summary>
|
|
/// <param name="sender">The source of the event.</param>
|
|
/// <param name="e">An EventArgs that contains the event data.</param>
|
|
private void buttonOK_Click(object sender, EventArgs e)
|
|
{
|
|
DialogResult = DialogResult.OK;
|
|
}
|
|
|
|
private void lnkShowLogFile_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
Process.Start("explorer.exe", string.Format(CultureInfo.InvariantCulture, "/select,\"{0}\"", ApplicationEnvironment.LogFilePath));
|
|
}
|
|
|
|
private void labelWebsiteLink_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
|
{
|
|
System.Diagnostics.Process.Start(labelWebsiteLink.Text);
|
|
}
|
|
}
|
|
}
|