From 547eedb5d486ca40b38ad70a299d52b4696a3581 Mon Sep 17 00:00:00 2001 From: abrendan Date: Sun, 24 Nov 2024 02:57:56 +0100 Subject: [PATCH] Add project files. --- smolZIP.sln | 25 +++++ smolZIP/MainForm.Designer.cs | 102 +++++++++++++++++ smolZIP/MainForm.cs | 133 +++++++++++++++++++++++ smolZIP/MainForm.resx | 120 ++++++++++++++++++++ smolZIP/Program.cs | 16 +++ smolZIP/Properties/AssemblyInfo.cs | 33 ++++++ smolZIP/Properties/Resources.Designer.cs | 73 +++++++++++++ smolZIP/Properties/Resources.resx | 124 +++++++++++++++++++++ smolZIP/Properties/Settings.Designer.cs | 30 +++++ smolZIP/Properties/Settings.settings | 7 ++ smolZIP/Resources/background1.jpg | Bin 0 -> 28317 bytes smolZIP/packages.config | 5 + smolZIP/smolZIP.csproj | 85 +++++++++++++++ 13 files changed, 753 insertions(+) create mode 100644 smolZIP.sln create mode 100644 smolZIP/MainForm.Designer.cs create mode 100644 smolZIP/MainForm.cs create mode 100644 smolZIP/MainForm.resx create mode 100644 smolZIP/Program.cs create mode 100644 smolZIP/Properties/AssemblyInfo.cs create mode 100644 smolZIP/Properties/Resources.Designer.cs create mode 100644 smolZIP/Properties/Resources.resx create mode 100644 smolZIP/Properties/Settings.Designer.cs create mode 100644 smolZIP/Properties/Settings.settings create mode 100644 smolZIP/Resources/background1.jpg create mode 100644 smolZIP/packages.config create mode 100644 smolZIP/smolZIP.csproj diff --git a/smolZIP.sln b/smolZIP.sln new file mode 100644 index 0000000..2d874fb --- /dev/null +++ b/smolZIP.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.11.35327.3 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "smolZIP", "smolZIP\smolZIP.csproj", "{26AA0E0D-D336-47BB-B7B1-7BB383318507}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {26AA0E0D-D336-47BB-B7B1-7BB383318507}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {26AA0E0D-D336-47BB-B7B1-7BB383318507}.Debug|Any CPU.Build.0 = Debug|Any CPU + {26AA0E0D-D336-47BB-B7B1-7BB383318507}.Release|Any CPU.ActiveCfg = Release|Any CPU + {26AA0E0D-D336-47BB-B7B1-7BB383318507}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {AE2DFE5D-8CAE-4A80-832D-C8823A2F0FA7} + EndGlobalSection +EndGlobal diff --git a/smolZIP/MainForm.Designer.cs b/smolZIP/MainForm.Designer.cs new file mode 100644 index 0000000..fbd69b1 --- /dev/null +++ b/smolZIP/MainForm.Designer.cs @@ -0,0 +1,102 @@ +namespace smolZIP +{ + partial class MainForm + { + private System.ComponentModel.IContainer components = null; + private System.Windows.Forms.Button btnExtractZip; + private System.Windows.Forms.Button btnCreateZip; + private System.Windows.Forms.ProgressBar progressBar; + private System.Windows.Forms.Label lblTitle; + private System.Windows.Forms.Label lblVersion; + + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + private void InitializeComponent() + { + this.btnExtractZip = new System.Windows.Forms.Button(); + this.btnCreateZip = new System.Windows.Forms.Button(); + this.progressBar = new System.Windows.Forms.ProgressBar(); + this.lblTitle = new System.Windows.Forms.Label(); + this.lblVersion = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // btnExtractZip + // + this.btnExtractZip.BackColor = System.Drawing.Color.Transparent; + this.btnExtractZip.Location = new System.Drawing.Point(12, 325); + this.btnExtractZip.Name = "btnExtractZip"; + this.btnExtractZip.Size = new System.Drawing.Size(109, 43); + this.btnExtractZip.TabIndex = 2; + this.btnExtractZip.Text = "Extract ZIP"; + this.btnExtractZip.UseVisualStyleBackColor = false; + this.btnExtractZip.Click += new System.EventHandler(this.btnExtractZip_Click); + // + // btnCreateZip + // + this.btnCreateZip.Location = new System.Drawing.Point(190, 325); + this.btnCreateZip.Name = "btnCreateZip"; + this.btnCreateZip.Size = new System.Drawing.Size(104, 43); + this.btnCreateZip.TabIndex = 3; + this.btnCreateZip.Text = "Create ZIP"; + this.btnCreateZip.UseVisualStyleBackColor = true; + this.btnCreateZip.Click += new System.EventHandler(this.btnCreateZip_Click); + // + // progressBar + // + this.progressBar.Location = new System.Drawing.Point(12, 285); + this.progressBar.Name = "progressBar"; + this.progressBar.Size = new System.Drawing.Size(282, 23); + this.progressBar.TabIndex = 4; + // + // lblTitle + // + this.lblTitle.AutoSize = true; + this.lblTitle.BackColor = System.Drawing.Color.Transparent; + this.lblTitle.Font = new System.Drawing.Font("Space Mono", 14.25F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblTitle.ForeColor = System.Drawing.Color.White; + this.lblTitle.Location = new System.Drawing.Point(21, 109); + this.lblTitle.Name = "lblTitle"; + this.lblTitle.Size = new System.Drawing.Size(259, 28); + this.lblTitle.TabIndex = 0; + this.lblTitle.Text = "smolZIP by abrendan"; + this.lblTitle.Click += new System.EventHandler(this.lblTitle_Click); + // + // lblVersion + // + this.lblVersion.AutoSize = true; + this.lblVersion.BackColor = System.Drawing.Color.Transparent; + this.lblVersion.ForeColor = System.Drawing.Color.White; + this.lblVersion.Location = new System.Drawing.Point(225, 269); + this.lblVersion.Name = "lblVersion"; + this.lblVersion.Size = new System.Drawing.Size(69, 13); + this.lblVersion.TabIndex = 1; + this.lblVersion.Text = "Version 1.0.0"; + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.BackgroundImage = global::smolZIP.Properties.Resources.background1; + this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.ClientSize = new System.Drawing.Size(306, 380); + this.Controls.Add(this.lblTitle); + this.Controls.Add(this.lblVersion); + this.Controls.Add(this.progressBar); + this.Controls.Add(this.btnCreateZip); + this.Controls.Add(this.btnExtractZip); + this.Name = "MainForm"; + this.Text = "smolZIP"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + } +} \ No newline at end of file diff --git a/smolZIP/MainForm.cs b/smolZIP/MainForm.cs new file mode 100644 index 0000000..03d0b85 --- /dev/null +++ b/smolZIP/MainForm.cs @@ -0,0 +1,133 @@ +using System; +using System.ComponentModel; +using System.IO; +using System.Windows.Forms; +using ICSharpCode.SharpZipLib.Core; +using ICSharpCode.SharpZipLib.Zip; + +namespace smolZIP +{ + public partial class MainForm : Form + { + private const string AppVersion = "1.0.0"; + + public MainForm() + { + InitializeComponent(); + } + + // Extract ZIP File with progress + private void ExtractZip(string zipFilePath, string extractPath) + { + try + { + using (FileStream fs = File.OpenRead(zipFilePath)) + { + ZipFile zf = new ZipFile(fs); + progressBar.Maximum = (int)zf.Count; + progressBar.Value = 0; + + foreach (ZipEntry entry in zf) + { + if (!entry.IsFile) continue; + + string entryFileName = entry.Name; + byte[] buffer = new byte[4096]; + + // ZipFile.GetInputStream() returns a raw input stream. + using (Stream zipStream = zf.GetInputStream(entry)) + { + string fullZipToPath = Path.Combine(extractPath, entryFileName); + string directoryName = Path.GetDirectoryName(fullZipToPath); + + if (directoryName.Length > 0) + Directory.CreateDirectory(directoryName); + + using (FileStream streamWriter = File.Create(fullZipToPath)) + { + StreamUtils.Copy(zipStream, streamWriter, buffer); + } + } + + progressBar.Value++; + } + } + MessageBox.Show("Extraction complete!", "smolZIP", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + MessageBox.Show($"An error occurred: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + finally + { + progressBar.Value = 0; + } + } + + // Create ZIP File with progress + private void CreateZip(string folderPath, string zipFilePath) + { + try + { + FastZipEvents events = new FastZipEvents(); + events.Progress = new ProgressHandler((source, progress) => + { + progressBar.Value = progressBar.Value + 1; + }); + + FastZip fastZip = new FastZip(events); + fastZip.CreateZip(zipFilePath, folderPath, true, null); + MessageBox.Show("Archiving complete!", "smolZIP", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + catch (Exception ex) + { + MessageBox.Show($"An error occurred: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + finally + { + progressBar.Value = 0; + } + } + + private void btnExtractZip_Click(object sender, EventArgs e) + { + using (OpenFileDialog openFileDialog = new OpenFileDialog()) + { + openFileDialog.Filter = "Zip files (*.zip)|*.zip"; + if (openFileDialog.ShowDialog() == DialogResult.OK) + { + using (FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog()) + { + if (folderBrowserDialog.ShowDialog() == DialogResult.OK) + { + ExtractZip(openFileDialog.FileName, folderBrowserDialog.SelectedPath); + } + } + } + } + } + + private void btnCreateZip_Click(object sender, EventArgs e) + { + using (FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog()) + { + if (folderBrowserDialog.ShowDialog() == DialogResult.OK) + { + using (SaveFileDialog saveFileDialog = new SaveFileDialog()) + { + saveFileDialog.Filter = "Zip files (*.zip)|*.zip"; + if (saveFileDialog.ShowDialog() == DialogResult.OK) + { + CreateZip(folderBrowserDialog.SelectedPath, saveFileDialog.FileName); + } + } + } + } + } + + private void lblTitle_Click(object sender, EventArgs e) + { + + } + } +} \ No newline at end of file diff --git a/smolZIP/MainForm.resx b/smolZIP/MainForm.resx new file mode 100644 index 0000000..7080a7d --- /dev/null +++ b/smolZIP/MainForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/smolZIP/Program.cs b/smolZIP/Program.cs new file mode 100644 index 0000000..a78daee --- /dev/null +++ b/smolZIP/Program.cs @@ -0,0 +1,16 @@ +using System; +using System.Windows.Forms; + +namespace smolZIP +{ + static class Program + { + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new MainForm()); + } + } +} \ No newline at end of file diff --git a/smolZIP/Properties/AssemblyInfo.cs b/smolZIP/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..facdc82 --- /dev/null +++ b/smolZIP/Properties/AssemblyInfo.cs @@ -0,0 +1,33 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("smolZIP")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("smolZIP")] +[assembly: AssemblyCopyright("Copyright © 2024")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("26aa0e0d-d336-47bb-b7b1-7bb383318507")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/smolZIP/Properties/Resources.Designer.cs b/smolZIP/Properties/Resources.Designer.cs new file mode 100644 index 0000000..b711cf1 --- /dev/null +++ b/smolZIP/Properties/Resources.Designer.cs @@ -0,0 +1,73 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace smolZIP.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("smolZIP.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap background1 { + get { + object obj = ResourceManager.GetObject("background1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/smolZIP/Properties/Resources.resx b/smolZIP/Properties/Resources.resx new file mode 100644 index 0000000..433b504 --- /dev/null +++ b/smolZIP/Properties/Resources.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\background1.jpg;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/smolZIP/Properties/Settings.Designer.cs b/smolZIP/Properties/Settings.Designer.cs new file mode 100644 index 0000000..572852f --- /dev/null +++ b/smolZIP/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace smolZIP.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/smolZIP/Properties/Settings.settings b/smolZIP/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/smolZIP/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/smolZIP/Resources/background1.jpg b/smolZIP/Resources/background1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..db37eaa7fc6a30728645490066fff47d1691943a GIT binary patch literal 28317 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 Pk9^wq&yh*Z->v@-U*e0( literal 0 HcmV?d00001 diff --git a/smolZIP/packages.config b/smolZIP/packages.config new file mode 100644 index 0000000..27f7a28 --- /dev/null +++ b/smolZIP/packages.config @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/smolZIP/smolZIP.csproj b/smolZIP/smolZIP.csproj new file mode 100644 index 0000000..4e61402 --- /dev/null +++ b/smolZIP/smolZIP.csproj @@ -0,0 +1,85 @@ + + + + + Debug + AnyCPU + {26AA0E0D-D336-47BB-B7B1-7BB383318507} + WinExe + smolZIP + smolZIP + v2.0 + 512 + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + ..\packages\ICSharpCode.SharpZipLib.dll.0.85.4.369\lib\net20\ICSharpCode.SharpZipLib.dll + + + ..\packages\SevenZip.19.0.0\lib\net20\SevenZip.dll + + + + + + + + + + + Form + + + MainForm.cs + + + + + MainForm.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file