Files
duplicati/Duplicati/GUI/ApplicationSetup.cs
T
kenneth.skovhede@gmail.com 5e8fe893d5 Fixed #8, modified files count as added.
Fixed #12, signature cache, which is now enabled pr. default.
Added a cache for the S3 redirect tests, which should limit the number of calls.
Added some GC.Collect calls for the S3 backend, as it appears to be leaking HttpWebRequest objects for some reason.

git-svn-id: https://duplicati.googlecode.com/svn/trunk@111 59da171f-624f-0410-aa54-27559c288bec
2009-03-09 21:09:27 +00:00

229 lines
8.0 KiB
C#

#region Disclaimer / License
// Copyright (C) 2009, Kenneth Skovhede
// http://www.hexad.dk, opensource@hexad.dk
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library 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
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
//
#endregion
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.LightDatamodel;
using Duplicati.Datamodel;
namespace Duplicati.GUI
{
public partial class ApplicationSetup : Form
{
private IDataFetcherCached m_connection;
private ApplicationSettings m_settings;
private bool m_isUpdating = false;
public ApplicationSetup()
{
InitializeComponent();
m_connection = new DataFetcherNested(Program.DataConnection);
m_settings = new ApplicationSettings(m_connection);
RecentDuration.SetIntervals(new List<KeyValuePair<string, string>>(
new KeyValuePair<string, string>[]
{
new KeyValuePair<string, string>("One week", "1W"),
new KeyValuePair<string, string>("Two weeks", "2W"),
new KeyValuePair<string, string>("One month", "1M"),
new KeyValuePair<string, string>("Three months", "3M"),
}));
try
{
m_isUpdating = true;
RecentDuration.Value = m_settings.RecentBackupDuration;
GPGPath.Text = m_settings.GPGPath;
SFTPPath.Text = m_settings.SFtpPath;
SCPPath.Text = m_settings.ScpPath;
TempPath.Text = m_settings.TempPath;
UseCommonPassword.Checked = m_settings.UseCommonPassword;
CommonPassword.Text = m_settings.CommonPassword;
CommonPasswordUseGPG.Checked = m_settings.CommonPasswordUseGPG;
SignatureCacheEnabled.Checked = m_settings.SignatureCacheEnabled;
SignatureCachePath.Text = m_settings.SignatureCachePath;
}
finally
{
m_isUpdating = false;
}
}
private bool TestForFiles(string folder, params string[] files)
{
try
{
foreach(string file in files)
if (!System.IO.File.Exists(System.IO.Path.Combine(folder, file)))
if (MessageBox.Show(this, "The folder selected does not contain the file: " + file + ".\r\nDo you want to use that folder anyway?", Application.ProductName, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button3) != DialogResult.Yes)
return false;
}
catch (Exception ex)
{
if (MessageBox.Show(this, "An exception occured while examining the folder: "+ ex.Message + ".\r\nDo you want to use that folder anyway?", Application.ProductName, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button3) != DialogResult.Yes)
return false;
}
return true;
}
private void BrowseGPG_Click(object sender, EventArgs e)
{
if (BrowseGPGDialog.ShowDialog(this) == DialogResult.OK)
GPGPath.Text = BrowseGPGDialog.FileName;
}
private void RecentDuration_TextChanged(object sender, EventArgs e)
{
if (m_isUpdating)
return;
m_settings.RecentBackupDuration = RecentDuration.Value;
}
private void GPGPath_TextChanged(object sender, EventArgs e)
{
if (m_isUpdating)
return;
m_settings.GPGPath = GPGPath.Text;
}
private void OKBtn_Click(object sender, EventArgs e)
{
m_connection.CommitRecursive(m_connection.GetObjects<ApplicationSetting>());
this.DialogResult = DialogResult.OK;
this.Close();
}
private void BrowseSFTP_Click(object sender, EventArgs e)
{
if (BrowseSFTPDialog.ShowDialog(this) == DialogResult.OK)
SFTPPath.Text = BrowseSFTPDialog.FileName;
}
private void SFTPPath_TextChanged(object sender, EventArgs e)
{
if (m_isUpdating)
return;
m_settings.SFtpPath = SFTPPath.Text;
}
private void SCPPath_TextChanged(object sender, EventArgs e)
{
if (m_isUpdating)
return;
m_settings.ScpPath = SCPPath.Text;
}
private void BrowseSCP_Click(object sender, EventArgs e)
{
if (BrowseSCPDialog.ShowDialog(this) == DialogResult.OK)
SCPPath.Text = BrowseSCPDialog.FileName;
}
private void RecentDuration_ValueChanged(object sender, EventArgs e)
{
RecentDuration_TextChanged(sender, e);
}
private void TempPathBrowse_Click(object sender, EventArgs e)
{
if (BrowseTempPath.ShowDialog(this) == DialogResult.OK)
TempPath.Text = BrowseTempPath.SelectedPath;
}
private void TempPath_TextChanged(object sender, EventArgs e)
{
if (m_isUpdating)
return;
m_settings.TempPath = TempPath.Text;
}
private void ApplicationSetup_Load(object sender, EventArgs e)
{
}
private void UseCommonPassword_CheckedChanged(object sender, EventArgs e)
{
PasswordPanel.Enabled = UseCommonPassword.Checked;
if (m_isUpdating)
return;
m_settings.UseCommonPassword = UseCommonPassword.Checked;
if (m_settings.UseCommonPassword)
m_settings.CommonPassword = CommonPassword.Text;
else
m_settings.CommonPassword = ""; //Clear it from DB
}
private void CommonPassword_TextChanged(object sender, EventArgs e)
{
if (m_isUpdating)
return;
m_settings.CommonPassword = CommonPassword.Text;
}
private void CommonPasswordUseGPG_CheckedChanged(object sender, EventArgs e)
{
if (m_isUpdating)
return;
m_settings.CommonPasswordUseGPG = CommonPasswordUseGPG.Checked;
}
private void SignatureCachePathBrowse_Click(object sender, EventArgs e)
{
if (BrowseSignatureCachePath.ShowDialog(this) == DialogResult.OK)
SignatureCachePath.Text = BrowseSignatureCachePath.SelectedPath;
}
private void SignatureCachePath_TextChanged(object sender, EventArgs e)
{
if (m_isUpdating)
return;
m_settings.SignatureCachePath = SignatureCachePath.Text;
}
private void SignatureCacheEnabled_CheckedChanged(object sender, EventArgs e)
{
SignatureCachePath.Enabled = SignatureCachePathBrowse.Enabled = SignatureCacheEnabled.Checked;
if (m_isUpdating)
return;
m_settings.SignatureCacheEnabled = SignatureCacheEnabled.Checked;
}
}
}