public static Settings DeSerializeSettings(string settingsFilePath)
        {
            // Deserialize settings
            XmlSerializer serializer = new XmlSerializer(typeof(Settings));
            Settings      settings;

            using (StreamReader tr = new StreamReader(settingsFilePath))
            {
                settings = (Settings)serializer.Deserialize(tr);
            }

            // Loop through the PicasaDB objects to set some things right after deserialising...
            bool defaultDBFound = false;

            for (int i = 0; i < settings.picasaDBs.Count; i++)
            {
                // Overwrite the default DB with the just added version...
                if (settings.picasaDBs[i].IsStandardDB == true)
                {
                    string backupDir = settings.picasaDBs[i].BackupDir;
                    settings.picasaDBs[i]           = GetDefaultPicasaDB();
                    settings.picasaDBs[i].BackupDir = backupDir;
                    defaultDBFound = true;
                }

                // NewLine's in an XML file are stored as \n while Windows wants \r\n in it's textboxes,...
                // Because the description can contain newlines... replace them.
                settings.picasaDBs[i].Description = settings.picasaDBs[i].Description.Replace("\n", Environment.NewLine);
            }

            // Loop through the PicasaButton objects to set some things right after deserialising...
            for (int i = 0; i < settings.picasaButtons.ButtonList.Count; i++)
            {
                // NewLine's in an XML file are stored as \n while Windows wants \r\n in it's textboxes,...
                // For all field that can contain newlines... replace them.
                settings.picasaButtons.ButtonList[i].Description = settings.picasaButtons.ButtonList[i].Description.Replace("\n", Environment.NewLine);
                if (!string.IsNullOrEmpty(settings.picasaButtons.ButtonList[i].Script))
                {
                    settings.picasaButtons.ButtonList[i].Script = settings.picasaButtons.ButtonList[i].Script.Replace("\n", Environment.NewLine);
                }
            }

            // Check if the settings contained a PicasaExePath. It will be null if the settings don't contain
            // an entry yet for the Path of this OS type (x86/x64) for this PC.  Set it to likely path if not.
            if (settings.PicasaExePath == "")
            {
                settings.PicasaExePath = (SettingsHelper.ProgramFilesx86() + "\\google\\Picasa3\\picasa3.exe");
            }

            if (defaultDBFound == false)
            {
                settings.picasaDBs.Insert(0, GetDefaultPicasaDB());
            }

            return(settings);
        }
        /// <summary>
        /// Contstructor of the settings class.
        /// </summary>
        public Settings()
        {
            string value = "";

            try
            {
                RegistryKey key = Registry.CurrentUser.OpenSubKey("Software\\Google\\Picasa\\Picasa2\\Runtime\\");
                value = (string)key.GetValue("appPath");
            }
            catch (Exception Ex)
            {
                throw Ex;
            }
            if (string.IsNullOrEmpty(value) == false)
            {
                PicasaExePaths.SetPath(new PathOnComputer(Environment.MachineName, value));
            }
            else
            {
                PicasaExePaths.SetPath(new PathOnComputer(Environment.MachineName, SettingsHelper.ProgramFilesx86() + "\\google\\Picasa3\\picasa3.exe"));
            }
        }