Async export, import

This commit is contained in:
Jaex 2016-02-10 22:27:29 +02:00
parent 6b6f3fdb7c
commit ed7eb9cf93
4 changed files with 182 additions and 146 deletions

View file

@ -36,28 +36,10 @@ namespace ShareX
{ {
public static class ExportImportManager public static class ExportImportManager
{ {
public static bool Export() public static bool Export(string exportPath)
{ {
try try
{ {
string exportPath;
using (SaveFileDialog sfd = new SaveFileDialog())
{
sfd.DefaultExt = "sxb";
sfd.FileName = "ShareX_backup.sxb";
sfd.Filter = "ShareX backup (*.sxb)|*.sxb|All files (*.*)|*.*";
if (sfd.ShowDialog() == DialogResult.OK)
{
exportPath = sfd.FileName;
}
else
{
return false;
}
}
Set7ZipLibraryPath(); Set7ZipLibraryPath();
SevenZipCompressor zip = new SevenZipCompressor(); SevenZipCompressor zip = new SevenZipCompressor();
@ -115,26 +97,10 @@ private static void AddFileToDictionary(Dictionary<string, string> files, string
} }
} }
public static bool Import() public static bool Import(string importPath)
{ {
try try
{ {
string importPath;
using (OpenFileDialog ofd = new OpenFileDialog())
{
ofd.Filter = "ShareX backup (*.sxb)|*.sxb|All files (*.*)|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
importPath = ofd.FileName;
}
else
{
return false;
}
}
Set7ZipLibraryPath(); Set7ZipLibraryPath();
using (SevenZipExtractor zip = new SevenZipExtractor(importPath)) using (SevenZipExtractor zip = new SevenZipExtractor(importPath))

View file

@ -66,6 +66,13 @@ private void InitializeComponent()
this.lblSaveImageSubFolderPattern = new System.Windows.Forms.Label(); this.lblSaveImageSubFolderPattern = new System.Windows.Forms.Label();
this.lblSaveImageSubFolderPatternPreview = new System.Windows.Forms.Label(); this.lblSaveImageSubFolderPatternPreview = new System.Windows.Forms.Label();
this.txtSaveImageSubFolderPattern = new System.Windows.Forms.TextBox(); this.txtSaveImageSubFolderPattern = new System.Windows.Forms.TextBox();
this.tpExportImport = new System.Windows.Forms.TabPage();
this.cbExportLogs = new System.Windows.Forms.CheckBox();
this.cbExportHistory = new System.Windows.Forms.CheckBox();
this.cbExportSettings = new System.Windows.Forms.CheckBox();
this.pbExportImport = new System.Windows.Forms.ProgressBar();
this.btnExport = new System.Windows.Forms.Button();
this.btnImport = new System.Windows.Forms.Button();
this.tpProxy = new System.Windows.Forms.TabPage(); this.tpProxy = new System.Windows.Forms.TabPage();
this.cbProxyMethod = new System.Windows.Forms.ComboBox(); this.cbProxyMethod = new System.Windows.Forms.ComboBox();
this.lblProxyMethod = new System.Windows.Forms.Label(); this.lblProxyMethod = new System.Windows.Forms.Label();
@ -114,12 +121,6 @@ private void InitializeComponent()
this.tpAdvanced = new System.Windows.Forms.TabPage(); this.tpAdvanced = new System.Windows.Forms.TabPage();
this.pgSettings = new System.Windows.Forms.PropertyGrid(); this.pgSettings = new System.Windows.Forms.PropertyGrid();
this.tttvMain = new ShareX.HelpersLib.TabToTreeView(); this.tttvMain = new ShareX.HelpersLib.TabToTreeView();
this.tpExportImport = new System.Windows.Forms.TabPage();
this.cbExportSettings = new System.Windows.Forms.CheckBox();
this.cbExportHistory = new System.Windows.Forms.CheckBox();
this.cbExportLogs = new System.Windows.Forms.CheckBox();
this.btnExport = new System.Windows.Forms.Button();
this.btnImport = new System.Windows.Forms.Button();
this.tcSettings.SuspendLayout(); this.tcSettings.SuspendLayout();
this.tpGeneral.SuspendLayout(); this.tpGeneral.SuspendLayout();
this.tpIntegration.SuspendLayout(); this.tpIntegration.SuspendLayout();
@ -127,6 +128,7 @@ private void InitializeComponent()
this.gbChrome.SuspendLayout(); this.gbChrome.SuspendLayout();
this.gbWindows.SuspendLayout(); this.gbWindows.SuspendLayout();
this.tpPaths.SuspendLayout(); this.tpPaths.SuspendLayout();
this.tpExportImport.SuspendLayout();
this.tpProxy.SuspendLayout(); this.tpProxy.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nudProxyPort)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudProxyPort)).BeginInit();
this.tpUpload.SuspendLayout(); this.tpUpload.SuspendLayout();
@ -143,7 +145,6 @@ private void InitializeComponent()
((System.ComponentModel.ISupportInitialize)(this.nudRetryUpload)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudRetryUpload)).BeginInit();
this.tpPrint.SuspendLayout(); this.tpPrint.SuspendLayout();
this.tpAdvanced.SuspendLayout(); this.tpAdvanced.SuspendLayout();
this.tpExportImport.SuspendLayout();
this.SuspendLayout(); this.SuspendLayout();
// //
// tcSettings // tcSettings
@ -405,6 +406,60 @@ private void InitializeComponent()
this.txtSaveImageSubFolderPattern.Name = "txtSaveImageSubFolderPattern"; this.txtSaveImageSubFolderPattern.Name = "txtSaveImageSubFolderPattern";
this.txtSaveImageSubFolderPattern.TextChanged += new System.EventHandler(this.txtSaveImageSubFolderPattern_TextChanged); this.txtSaveImageSubFolderPattern.TextChanged += new System.EventHandler(this.txtSaveImageSubFolderPattern_TextChanged);
// //
// tpExportImport
//
this.tpExportImport.Controls.Add(this.cbExportLogs);
this.tpExportImport.Controls.Add(this.cbExportHistory);
this.tpExportImport.Controls.Add(this.cbExportSettings);
this.tpExportImport.Controls.Add(this.pbExportImport);
this.tpExportImport.Controls.Add(this.btnExport);
this.tpExportImport.Controls.Add(this.btnImport);
resources.ApplyResources(this.tpExportImport, "tpExportImport");
this.tpExportImport.Name = "tpExportImport";
this.tpExportImport.UseVisualStyleBackColor = true;
//
// cbExportLogs
//
resources.ApplyResources(this.cbExportLogs, "cbExportLogs");
this.cbExportLogs.Name = "cbExportLogs";
this.cbExportLogs.UseVisualStyleBackColor = true;
this.cbExportLogs.CheckedChanged += new System.EventHandler(this.cbExportLogs_CheckedChanged);
//
// cbExportHistory
//
resources.ApplyResources(this.cbExportHistory, "cbExportHistory");
this.cbExportHistory.Name = "cbExportHistory";
this.cbExportHistory.UseVisualStyleBackColor = true;
this.cbExportHistory.CheckedChanged += new System.EventHandler(this.cbExportHistory_CheckedChanged);
//
// cbExportSettings
//
resources.ApplyResources(this.cbExportSettings, "cbExportSettings");
this.cbExportSettings.Name = "cbExportSettings";
this.cbExportSettings.UseVisualStyleBackColor = true;
this.cbExportSettings.CheckedChanged += new System.EventHandler(this.cbExportSettings_CheckedChanged);
//
// pbExportImport
//
resources.ApplyResources(this.pbExportImport, "pbExportImport");
this.pbExportImport.MarqueeAnimationSpeed = 50;
this.pbExportImport.Name = "pbExportImport";
this.pbExportImport.Style = System.Windows.Forms.ProgressBarStyle.Marquee;
//
// btnExport
//
resources.ApplyResources(this.btnExport, "btnExport");
this.btnExport.Name = "btnExport";
this.btnExport.UseVisualStyleBackColor = true;
this.btnExport.Click += new System.EventHandler(this.btnExport_Click);
//
// btnImport
//
resources.ApplyResources(this.btnImport, "btnImport");
this.btnImport.Name = "btnImport";
this.btnImport.UseVisualStyleBackColor = true;
this.btnImport.Click += new System.EventHandler(this.btnImport_Click);
//
// tpProxy // tpProxy
// //
this.tpProxy.Controls.Add(this.cbProxyMethod); this.tpProxy.Controls.Add(this.cbProxyMethod);
@ -777,52 +832,6 @@ private void InitializeComponent()
this.tttvMain.TreeViewFont = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(162))); this.tttvMain.TreeViewFont = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(162)));
this.tttvMain.TreeViewSize = 175; this.tttvMain.TreeViewSize = 175;
// //
// tpExportImport
//
this.tpExportImport.Controls.Add(this.btnImport);
this.tpExportImport.Controls.Add(this.btnExport);
this.tpExportImport.Controls.Add(this.cbExportLogs);
this.tpExportImport.Controls.Add(this.cbExportHistory);
this.tpExportImport.Controls.Add(this.cbExportSettings);
resources.ApplyResources(this.tpExportImport, "tpExportImport");
this.tpExportImport.Name = "tpExportImport";
this.tpExportImport.UseVisualStyleBackColor = true;
//
// cbExportSettings
//
resources.ApplyResources(this.cbExportSettings, "cbExportSettings");
this.cbExportSettings.Name = "cbExportSettings";
this.cbExportSettings.UseVisualStyleBackColor = true;
this.cbExportSettings.CheckedChanged += new System.EventHandler(this.cbExportSettings_CheckedChanged);
//
// cbExportHistory
//
resources.ApplyResources(this.cbExportHistory, "cbExportHistory");
this.cbExportHistory.Name = "cbExportHistory";
this.cbExportHistory.UseVisualStyleBackColor = true;
this.cbExportHistory.CheckedChanged += new System.EventHandler(this.cbExportHistory_CheckedChanged);
//
// cbExportLogs
//
resources.ApplyResources(this.cbExportLogs, "cbExportLogs");
this.cbExportLogs.Name = "cbExportLogs";
this.cbExportLogs.UseVisualStyleBackColor = true;
this.cbExportLogs.CheckedChanged += new System.EventHandler(this.cbExportLogs_CheckedChanged);
//
// btnExport
//
resources.ApplyResources(this.btnExport, "btnExport");
this.btnExport.Name = "btnExport";
this.btnExport.UseVisualStyleBackColor = true;
this.btnExport.Click += new System.EventHandler(this.btnExport_Click);
//
// btnImport
//
resources.ApplyResources(this.btnImport, "btnImport");
this.btnImport.Name = "btnImport";
this.btnImport.UseVisualStyleBackColor = true;
this.btnImport.Click += new System.EventHandler(this.btnImport_Click);
//
// ApplicationSettingsForm // ApplicationSettingsForm
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
@ -846,6 +855,8 @@ private void InitializeComponent()
this.gbWindows.PerformLayout(); this.gbWindows.PerformLayout();
this.tpPaths.ResumeLayout(false); this.tpPaths.ResumeLayout(false);
this.tpPaths.PerformLayout(); this.tpPaths.PerformLayout();
this.tpExportImport.ResumeLayout(false);
this.tpExportImport.PerformLayout();
this.tpProxy.ResumeLayout(false); this.tpProxy.ResumeLayout(false);
this.tpProxy.PerformLayout(); this.tpProxy.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nudProxyPort)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudProxyPort)).EndInit();
@ -866,8 +877,6 @@ private void InitializeComponent()
this.tpPrint.ResumeLayout(false); this.tpPrint.ResumeLayout(false);
this.tpPrint.PerformLayout(); this.tpPrint.PerformLayout();
this.tpAdvanced.ResumeLayout(false); this.tpAdvanced.ResumeLayout(false);
this.tpExportImport.ResumeLayout(false);
this.tpExportImport.PerformLayout();
this.ResumeLayout(false); this.ResumeLayout(false);
} }
@ -965,5 +974,6 @@ private void InitializeComponent()
private System.Windows.Forms.CheckBox cbExportLogs; private System.Windows.Forms.CheckBox cbExportLogs;
private System.Windows.Forms.CheckBox cbExportHistory; private System.Windows.Forms.CheckBox cbExportHistory;
private System.Windows.Forms.CheckBox cbExportSettings; private System.Windows.Forms.CheckBox cbExportSettings;
private System.Windows.Forms.ProgressBar pbExportImport;
} }
} }

View file

@ -423,12 +423,48 @@ private void cbExportLogs_CheckedChanged(object sender, EventArgs e)
private void btnExport_Click(object sender, EventArgs e) private void btnExport_Click(object sender, EventArgs e)
{ {
ExportImportManager.Export(); using (SaveFileDialog sfd = new SaveFileDialog())
{
sfd.DefaultExt = "sxb";
sfd.FileName = "ShareX_backup.sxb";
sfd.Filter = "ShareX backup (*.sxb)|*.sxb|All files (*.*)|*.*";
if (sfd.ShowDialog() == DialogResult.OK)
{
btnExport.Enabled = false;
btnImport.Enabled = false;
pbExportImport.Visible = true;
TaskEx.Run(() => ExportImportManager.Export(sfd.FileName), () =>
{
pbExportImport.Visible = false;
btnExport.Enabled = true;
btnImport.Enabled = true;
});
}
}
} }
private void btnImport_Click(object sender, EventArgs e) private void btnImport_Click(object sender, EventArgs e)
{ {
ExportImportManager.Import(); using (OpenFileDialog ofd = new OpenFileDialog())
{
ofd.Filter = "ShareX backup (*.sxb)|*.sxb|All files (*.*)|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
btnExport.Enabled = false;
btnImport.Enabled = false;
pbExportImport.Visible = true;
TaskEx.Run(() => ExportImportManager.Import(ofd.FileName), () =>
{
pbExportImport.Visible = false;
btnExport.Enabled = true;
btnImport.Enabled = true;
});
}
}
} }
#endregion Export / Import #endregion Export / Import

View file

@ -1053,57 +1053,6 @@
<data name="&gt;&gt;tpPaths.ZOrder" xml:space="preserve"> <data name="&gt;&gt;tpPaths.ZOrder" xml:space="preserve">
<value>2</value> <value>2</value>
</data> </data>
<data name="btnImport.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="btnImport.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 128</value>
</data>
<data name="btnImport.Size" type="System.Drawing.Size, System.Drawing">
<value>184, 23</value>
</data>
<data name="btnImport.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="btnImport.Text" xml:space="preserve">
<value>Import...</value>
</data>
<data name="&gt;&gt;btnImport.Name" xml:space="preserve">
<value>btnImport</value>
</data>
<data name="&gt;&gt;btnImport.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;btnImport.Parent" xml:space="preserve">
<value>tpExportImport</value>
</data>
<data name="&gt;&gt;btnImport.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="btnExport.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 96</value>
</data>
<data name="btnExport.Size" type="System.Drawing.Size, System.Drawing">
<value>184, 23</value>
</data>
<data name="btnExport.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="btnExport.Text" xml:space="preserve">
<value>Export...</value>
</data>
<data name="&gt;&gt;btnExport.Name" xml:space="preserve">
<value>btnExport</value>
</data>
<data name="&gt;&gt;btnExport.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;btnExport.Parent" xml:space="preserve">
<value>tpExportImport</value>
</data>
<data name="&gt;&gt;btnExport.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="cbExportLogs.AutoSize" type="System.Boolean, mscorlib"> <data name="cbExportLogs.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</data> </data>
@ -1132,7 +1081,7 @@
<value>tpExportImport</value> <value>tpExportImport</value>
</data> </data>
<data name="&gt;&gt;cbExportLogs.ZOrder" xml:space="preserve"> <data name="&gt;&gt;cbExportLogs.ZOrder" xml:space="preserve">
<value>2</value> <value>0</value>
</data> </data>
<data name="cbExportHistory.AutoSize" type="System.Boolean, mscorlib"> <data name="cbExportHistory.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@ -1162,7 +1111,7 @@
<value>tpExportImport</value> <value>tpExportImport</value>
</data> </data>
<data name="&gt;&gt;cbExportHistory.ZOrder" xml:space="preserve"> <data name="&gt;&gt;cbExportHistory.ZOrder" xml:space="preserve">
<value>3</value> <value>1</value>
</data> </data>
<data name="cbExportSettings.AutoSize" type="System.Boolean, mscorlib"> <data name="cbExportSettings.AutoSize" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
@ -1189,8 +1138,83 @@
<value>tpExportImport</value> <value>tpExportImport</value>
</data> </data>
<data name="&gt;&gt;cbExportSettings.ZOrder" xml:space="preserve"> <data name="&gt;&gt;cbExportSettings.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="pbExportImport.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 160</value>
</data>
<data name="pbExportImport.Size" type="System.Drawing.Size, System.Drawing">
<value>184, 24</value>
</data>
<data name="pbExportImport.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="pbExportImport.Visible" type="System.Boolean, mscorlib">
<value>False</value>
</data>
<data name="&gt;&gt;pbExportImport.Name" xml:space="preserve">
<value>pbExportImport</value>
</data>
<data name="&gt;&gt;pbExportImport.Type" xml:space="preserve">
<value>System.Windows.Forms.ProgressBar, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;pbExportImport.Parent" xml:space="preserve">
<value>tpExportImport</value>
</data>
<data name="&gt;&gt;pbExportImport.ZOrder" xml:space="preserve">
<value>3</value>
</data>
<data name="btnExport.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 96</value>
</data>
<data name="btnExport.Size" type="System.Drawing.Size, System.Drawing">
<value>184, 23</value>
</data>
<data name="btnExport.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="btnExport.Text" xml:space="preserve">
<value>Export...</value>
</data>
<data name="&gt;&gt;btnExport.Name" xml:space="preserve">
<value>btnExport</value>
</data>
<data name="&gt;&gt;btnExport.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;btnExport.Parent" xml:space="preserve">
<value>tpExportImport</value>
</data>
<data name="&gt;&gt;btnExport.ZOrder" xml:space="preserve">
<value>4</value> <value>4</value>
</data> </data>
<data name="btnImport.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>NoControl</value>
</data>
<data name="btnImport.Location" type="System.Drawing.Point, System.Drawing">
<value>16, 128</value>
</data>
<data name="btnImport.Size" type="System.Drawing.Size, System.Drawing">
<value>184, 23</value>
</data>
<data name="btnImport.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="btnImport.Text" xml:space="preserve">
<value>Import...</value>
</data>
<data name="&gt;&gt;btnImport.Name" xml:space="preserve">
<value>btnImport</value>
</data>
<data name="&gt;&gt;btnImport.Type" xml:space="preserve">
<value>System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;btnImport.Parent" xml:space="preserve">
<value>tpExportImport</value>
</data>
<data name="&gt;&gt;btnImport.ZOrder" xml:space="preserve">
<value>5</value>
</data>
<data name="tpExportImport.Location" type="System.Drawing.Point, System.Drawing"> <data name="tpExportImport.Location" type="System.Drawing.Point, System.Drawing">
<value>4, 22</value> <value>4, 22</value>
</data> </data>