From fc0d32a82ff07b6518695683587c9a5c860e4375 Mon Sep 17 00:00:00 2001 From: JKlingen Date: Mon, 9 Apr 2012 21:43:20 +0000 Subject: [PATCH] try to load the latest help file in preferred language from getgreenshot.org, using local help files as fallback git-svn-id: http://svn.code.sf.net/p/greenshot/code/trunk@1764 7dccd23d-a4a3-4e1f-8c07-b4c1b4018ab4 --- Greenshot/Forms/ImageEditorForm.cs | 2 +- Greenshot/Forms/MainForm.cs | 12 +--- Greenshot/Greenshot.csproj | 1 + Greenshot/Help/HelpBrowserForm.Designer.cs | 76 -------------------- Greenshot/Help/HelpBrowserForm.cs | 50 ------------- Greenshot/Help/HelpFileLoader.cs | 84 ++++++++++++++++++++++ 6 files changed, 87 insertions(+), 138 deletions(-) delete mode 100644 Greenshot/Help/HelpBrowserForm.Designer.cs delete mode 100644 Greenshot/Help/HelpBrowserForm.cs create mode 100644 Greenshot/Help/HelpFileLoader.cs diff --git a/Greenshot/Forms/ImageEditorForm.cs b/Greenshot/Forms/ImageEditorForm.cs index 7d9c7fa79..4a3b0a3f3 100644 --- a/Greenshot/Forms/ImageEditorForm.cs +++ b/Greenshot/Forms/ImageEditorForm.cs @@ -673,7 +673,7 @@ namespace Greenshot { #region help void HelpToolStripMenuItem1Click(object sender, System.EventArgs e) { - new HelpBrowserForm(coreConf.Language).Show(); + HelpFileLoader.LoadHelp(); } void AboutToolStripMenuItemClick(object sender, System.EventArgs e) { diff --git a/Greenshot/Forms/MainForm.cs b/Greenshot/Forms/MainForm.cs index 6ec4ac01a..ef02abedf 100644 --- a/Greenshot/Forms/MainForm.cs +++ b/Greenshot/Forms/MainForm.cs @@ -874,17 +874,7 @@ namespace Greenshot { } void Contextmenu_helpClick(object sender, EventArgs e) { - if (helpBrowserForm != null) { - WindowDetails.ToForeground(helpBrowserForm.Handle); - } else { - try { - using (helpBrowserForm = new HelpBrowserForm(conf.Language)) { - helpBrowserForm.ShowDialog(); - } - } finally { - helpBrowserForm = null; - } - } + HelpFileLoader.LoadHelp(); } void Contextmenu_exitClick(object sender, EventArgs e) { diff --git a/Greenshot/Greenshot.csproj b/Greenshot/Greenshot.csproj index 20c0a0563..a46abe472 100644 --- a/Greenshot/Greenshot.csproj +++ b/Greenshot/Greenshot.csproj @@ -169,6 +169,7 @@ + Always diff --git a/Greenshot/Help/HelpBrowserForm.Designer.cs b/Greenshot/Help/HelpBrowserForm.Designer.cs deleted file mode 100644 index e923dbf79..000000000 --- a/Greenshot/Help/HelpBrowserForm.Designer.cs +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Greenshot - a free and open source screenshot tool - * Copyright (C) 2007-2012 Thomas Braun, Jens Klingen, Robin Krom - * - * For more information see: http://getgreenshot.org/ - * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/greenshot/ - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 1 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -namespace Greenshot.Help -{ - partial class HelpBrowserForm : System.Windows.Forms.Form - { - /// - /// Designer variable used to keep track of non-visual components. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Disposes resources used by the form. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing) { - if (components != null) { - components.Dispose(); - } - } - base.Dispose(disposing); - } - - /// - /// This method is required for Windows Forms designer support. - /// Do not change the method contents inside the source code editor. The Forms designer might - /// not be able to load this method if it was changed manually. - /// - private void InitializeComponent() - { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm)); - this.webBrowser1 = new System.Windows.Forms.WebBrowser(); - this.SuspendLayout(); - // - // webBrowser1 - // - this.webBrowser1.Dock = System.Windows.Forms.DockStyle.Fill; - this.webBrowser1.Location = new System.Drawing.Point(0, 0); - this.webBrowser1.MinimumSize = new System.Drawing.Size(20, 20); - this.webBrowser1.Name = "webBrowser1"; - this.webBrowser1.Size = new System.Drawing.Size(412, 560); - this.webBrowser1.TabIndex = 0; - // - // HelpBrowserForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; - this.ClientSize = new System.Drawing.Size(412, 560); - this.Controls.Add(this.webBrowser1); - this.Name = "HelpBrowserForm"; - this.Text = "Greenshot Help"; - this.ResumeLayout(false); - } - private System.Windows.Forms.WebBrowser webBrowser1; - } -} diff --git a/Greenshot/Help/HelpBrowserForm.cs b/Greenshot/Help/HelpBrowserForm.cs deleted file mode 100644 index abb605654..000000000 --- a/Greenshot/Help/HelpBrowserForm.cs +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Greenshot - a free and open source screenshot tool - * Copyright (C) 2007-2012 Thomas Braun, Jens Klingen, Robin Krom - * - * For more information see: http://getgreenshot.org/ - * The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/greenshot/ - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 1 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -using System; -using System.IO; -using Greenshot.Configuration; -using GreenshotPlugin.Core; - -namespace Greenshot.Help { - /// - /// Description of HelpBrowserForm. - /// - public partial class HelpBrowserForm { - private ILanguage lang; - public HelpBrowserForm(string language) { - // - // The InitializeComponent() call is required for Windows Forms designer support. - // - InitializeComponent(); - this.Icon = GreenshotPlugin.Core.GreenshotResources.getGreenshotIcon(); - lang = Language.GetInstance(); - - webBrowser1.Url = new Uri(Path.Combine("path://", lang.GetHelpFilePath())); - - updateUI(); - } - - private void updateUI() { - - this.Text = lang.GetString(LangKey.help_title); - } - } -} diff --git a/Greenshot/Help/HelpFileLoader.cs b/Greenshot/Help/HelpFileLoader.cs new file mode 100644 index 000000000..c18810bb2 --- /dev/null +++ b/Greenshot/Help/HelpFileLoader.cs @@ -0,0 +1,84 @@ +/* + * Created by SharpDevelop. + * User: jens + * Date: 09.04.2012 + * Time: 19:24 + * + * To change this template use Tools | Options | Coding | Edit Standard Headers. + */ +using Greenshot.Configuration; +using GreenshotPlugin.Core; +using System; +using System.Diagnostics; +using System.Net; +using System.Windows.Forms; + +namespace Greenshot.Help +{ + /// + /// Description of HelpFileLoader. + /// + public sealed class HelpFileLoader + { + + private static readonly log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(HelpFileLoader)); + + private const string EXT_HELP_URL = @"http://getgreenshot.org/help/"; + + private HelpFileLoader() + { + } + + public static void LoadHelp() { + string uri = findOnlineHelpUrl(Language.GetInstance().CurrentLanguage); + if(uri == null) { + uri = Language.GetInstance().GetHelpFilePath(); + } + Process.Start(uri); + } + + /// URL of help file in selected ietf, or (if not present) default ietf, or null (if not present, too. probably indicating that there is no internet connection) + private static string findOnlineHelpUrl(string currentIETF) { + string ret = null; + + string extHelpUrlForCurrrentIETF = EXT_HELP_URL; + + if(!currentIETF.Equals("en_US")) { + extHelpUrlForCurrrentIETF += currentIETF.ToLower() + "/"; + } + + HttpStatusCode? s = getHttpStatus(extHelpUrlForCurrrentIETF); + if(s == HttpStatusCode.OK) { + ret = extHelpUrlForCurrrentIETF; + } else if(s != null && !extHelpUrlForCurrrentIETF.Equals(EXT_HELP_URL)) { + LOG.Debug(String.Format("Localized online help not found at %s, will try %s as fallback", extHelpUrlForCurrrentIETF, EXT_HELP_URL)); + s = getHttpStatus(EXT_HELP_URL); + if(s == HttpStatusCode.OK) { + ret = EXT_HELP_URL; + } else { + LOG.Warn(String.Format("%s returned status %s", EXT_HELP_URL, s)); + } + } else if(s == null){ + LOG.Info("Internet connection does not seem to be available, will load help from file system."); + } + + return ret; + } + + /// + /// Retrieves HTTP status for a given url. + /// + /// URL for which the HTTP status is to be checked + /// An HTTP status code, or null if there is none (probably indicating that there is no internet connection available + private static HttpStatusCode? getHttpStatus(string url) { + try { + HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); + HttpWebResponse res = (HttpWebResponse)req.GetResponse(); + return res.StatusCode; + } catch(WebException e) { + if(e.Response != null) return ((HttpWebResponse)e.Response).StatusCode; + else return null; + } + } + } +}