diff --git a/Greenshot-OCR-Plugin/Greenshot-OCR-Plugin.csproj b/Greenshot-OCR-Plugin/Greenshot-OCR-Plugin.csproj index 1a134d0be..7cb63abe2 100644 --- a/Greenshot-OCR-Plugin/Greenshot-OCR-Plugin.csproj +++ b/Greenshot-OCR-Plugin/Greenshot-OCR-Plugin.csproj @@ -56,6 +56,7 @@ + diff --git a/Greenshot-OCR-Plugin/OCRConfiguration.cs b/Greenshot-OCR-Plugin/OCRConfiguration.cs new file mode 100644 index 000000000..938302fe9 --- /dev/null +++ b/Greenshot-OCR-Plugin/OCRConfiguration.cs @@ -0,0 +1,38 @@ +/* + * Greenshot - a free and open source screenshot tool + * Copyright (C) 2007-2010 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.Collections.Generic; +using Greenshot.Core; + +namespace GreenshotOCR { + /// + /// Description of CoreConfiguration. + /// + [IniSection("OCR", Description="Greenshot OCR configuration")] + public class OCRConfiguration : IniSection { + [IniProperty("Language", Description="Language for OCR", DefaultValue="miLANG_ENGLISH")] + public string Language; + [IniProperty("orientimage", Description="Orient image?", DefaultValue="true")] + public bool Orientimage; + [IniProperty("straightenImage", Description="Straighten image?", DefaultValue="true")] + public bool StraightenImage; + } +} diff --git a/Greenshot-OCR-Plugin/OCRPlugin.cs b/Greenshot-OCR-Plugin/OCRPlugin.cs index 031651449..dda1645cf 100644 --- a/Greenshot-OCR-Plugin/OCRPlugin.cs +++ b/Greenshot-OCR-Plugin/OCRPlugin.cs @@ -39,15 +39,13 @@ namespace GreenshotOCR { /// public class OcrPlugin : IGreenshotPlugin { private static log4net.ILog LOG = log4net.LogManager.GetLogger(typeof(OcrPlugin)); - private const string CONFIG_FILENAME = "ocr-config.properties"; - private const string MODI_OFFICE11 = @"Software\Microsoft\Office\11.0\MODI"; private const string MODI_OFFICE12 = @"Software\Microsoft\Office\12.0\MODI"; private IGreenshotPluginHost host; private ICaptureHost captureHost = null; private PluginAttribute myAttributes; - private Properties config = new Properties(); + private OCRConfiguration config; public OcrPlugin() { } @@ -70,7 +68,12 @@ namespace GreenshotOCR { LOG.Warn("No MODI found!"); return; } - LoadConfig(); + + // Load configuration + config = IniConfig.GetInstance().GetSection(); + if (config.IsDirty) { + IniConfig.GetInstance().Save(); + } this.host.RegisterHotKey(3, 0x2C, new HotKeyHandler(MyHotkeyHandler)); // Here we can hang ourselves to the main context menu! @@ -109,13 +112,10 @@ namespace GreenshotOCR { MessageBox.Show("Sorry, is seems that Microsoft Office Document Imaging (MODI) is not installed, therefor the OCR Plugin cannot work."); return; } - SettingsForm settingsForm = new SettingsForm(GetLanguages(),config); + SettingsForm settingsForm = new SettingsForm(GetLanguages(), config); DialogResult result = settingsForm.ShowDialog(); if (result == DialogResult.OK) { - config.ChangeProperty("language", settingsForm.OCRLanguage); - config.ChangeBoolProperty("orientImage", settingsForm.OrientImage); - config.ChangeBoolProperty("straightenImage", settingsForm.StraightenImage);; - SaveConfig(); + IniConfig.GetInstance().Save(); } } @@ -135,41 +135,6 @@ namespace GreenshotOCR { return null; } - private void LoadConfig() { - string filename = Path.Combine(host.ConfigurationPath, CONFIG_FILENAME); - if (File.Exists(filename)) { - LOG.Debug("Loading configuration from: " + filename); - config = Properties.read(filename); - } - bool changed = false; - if (config == null) { - config = new Properties(); - changed = true; - } - if (!config.ContainsKey("language")) { - config.AddProperty("language", "miLANG_ENGLISH"); - changed = true; - } - if (!config.ContainsKey("straightenImage")) { - config.AddBoolProperty("straightenImage", false); - changed = true; - } - if (!config.ContainsKey("orientImage")) { - config.AddBoolProperty("orientImage", false); - changed = true; - } - if (changed) { - SaveConfig(); - } - - } - - private void SaveConfig() { - string filename = Path.Combine(host.ConfigurationPath, CONFIG_FILENAME); - LOG.Debug("Saving configuration to: " + filename); - config.write(filename, "# The configuration file for the Greenshot OCR Plugin"); - } - private void StartOCRRegion() { LOG.Debug("Starting OCR!"); captureHost.MakeCapture(CaptureMode.Region, false, new CaptureHandler(DoOCR)); @@ -236,7 +201,7 @@ namespace GreenshotOCR { //md.OnOCRProgress += ; // Do the OCR. - modi11Document.OCR((MODI11.MiLANGUAGES)Enum.Parse(typeof(MODI11.MiLANGUAGES), config.GetProperty("language")), config.GetBoolProperty("orientImage"), config.GetBoolProperty("straightenImage")); + modi11Document.OCR((MODI11.MiLANGUAGES)Enum.Parse(typeof(MODI11.MiLANGUAGES), config.Language), config.Orientimage, config.StraightenImage); // Get the first (and only image) MODI11.Image modi11Image = (MODI11.Image)modi11Document.Images[0]; // Get the layout. @@ -255,7 +220,7 @@ namespace GreenshotOCR { //md.OnOCRProgress += ; // Do the OCR. - modi12Document.OCR((MODI12.MiLANGUAGES)Enum.Parse(typeof(MODI12.MiLANGUAGES), config.GetProperty("language")), config.GetBoolProperty("orientImage"), config.GetBoolProperty("straightenImage")); + modi12Document.OCR((MODI12.MiLANGUAGES)Enum.Parse(typeof(MODI12.MiLANGUAGES), config.Language), config.Orientimage, config.StraightenImage); // Get the first (and only image) MODI12.Image modi12Image = (MODI12.Image)modi12Document.Images[0]; // Get the layout. diff --git a/Greenshot-OCR-Plugin/SettingsForm.cs b/Greenshot-OCR-Plugin/SettingsForm.cs index b353c18b0..24c7617d9 100644 --- a/Greenshot-OCR-Plugin/SettingsForm.cs +++ b/Greenshot-OCR-Plugin/SettingsForm.cs @@ -31,14 +31,13 @@ namespace GreenshotOCR { /// public partial class SettingsForm : Form { private ILanguage language = Language.GetInstance(); - private string selectedLanguage; - private bool orientImage; - private bool straightenImage; + private OCRConfiguration config; - public SettingsForm(string [] languages, Properties config) { + public SettingsForm(string [] languages, OCRConfiguration config) { // // The InitializeComponent() call is required for Windows Forms designer support. // + this.config = config; InitializeComponent(); language.SynchronizeLanguageToCulture(); initializeComponentText(); @@ -48,13 +47,13 @@ namespace GreenshotOCR { foreach(string availableLanguage in languages) { string displayLanguage = cleanLanguage(availableLanguage); comboBox_languages.Items.Add(displayLanguage); - if (availableLanguage.Equals(config["language"])) { + if (availableLanguage.Equals(config.Language)) { comboBox_languages.SelectedIndex = index; } index++; } - checkBox_orientImage.Checked = config.GetBoolProperty("orientImage"); - checkBox_straightenImage.Checked = config.GetBoolProperty("straightenImage"); + checkBox_orientImage.Checked = config.Orientimage; + checkBox_straightenImage.Checked = config.StraightenImage; } private void initializeComponentText() { this.label_language.Text = language.GetString(LangKey.language); @@ -70,16 +69,6 @@ namespace GreenshotOCR { return displayLanguage; } - public string OCRLanguage { - get {return selectedLanguage;} - } - public bool OrientImage { - get {return orientImage;} - } - public bool StraightenImage { - get {return straightenImage;} - } - void ButtonCancelClick(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; } @@ -87,10 +76,10 @@ namespace GreenshotOCR { void ButtonOKClick(object sender, EventArgs e) { string selectedString = (string) comboBox_languages.SelectedItem; if (selectedString != null) { - selectedLanguage = "miLANG_" + selectedString.ToUpper().Replace(" ", "_"); + config.Language = "miLANG_" + selectedString.ToUpper().Replace(" ", "_"); } - orientImage = checkBox_orientImage.Checked; - straightenImage = checkBox_straightenImage.Checked; + config.Orientimage = checkBox_orientImage.Checked; + config.StraightenImage = checkBox_straightenImage.Checked; DialogResult = DialogResult.OK;