diff --git a/Mk0.Software.ImageSorter/App.config b/Mk0.Software.ImageSorter/App.config index 452f2d1..12e7981 100644 --- a/Mk0.Software.ImageSorter/App.config +++ b/Mk0.Software.ImageSorter/App.config @@ -37,27 +37,33 @@ - - - - - - - - True - - - 0 - - - 0 - - - 0 - - - 0 - - + + + + + + + + True + + + 0 + + + 0 + + + 0 + + + 0 + + + False + + + 0 + + diff --git a/Mk0.Software.ImageSorter/Main.Designer.cs b/Mk0.Software.ImageSorter/Main.Designer.cs index c4b2a3b..9a4c723 100644 --- a/Mk0.Software.ImageSorter/Main.Designer.cs +++ b/Mk0.Software.ImageSorter/Main.Designer.cs @@ -53,8 +53,6 @@ this.buttonRotate270 = new System.Windows.Forms.Button(); this.buttonMirrorHorizontal = new System.Windows.Forms.Button(); this.buttonMirrorVertikal = new System.Windows.Forms.Button(); - this.buttonZoom100 = new System.Windows.Forms.Button(); - this.buttonZoomAuto = new System.Windows.Forms.Button(); this.panel1 = new System.Windows.Forms.Panel(); this.labelNoImages = new System.Windows.Forms.Label(); this.labelZoom = new System.Windows.Forms.Label(); @@ -64,6 +62,8 @@ this.label1 = new System.Windows.Forms.Label(); this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog(); + this.comboBoxZoom = new System.Windows.Forms.ComboBox(); + this.label3 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox)).BeginInit(); this.contextMenuStrip.SuspendLayout(); this.groupBox1.SuspendLayout(); @@ -333,30 +333,6 @@ this.buttonMirrorVertikal.UseVisualStyleBackColor = true; this.buttonMirrorVertikal.Click += new System.EventHandler(this.ImageMirror); // - // buttonZoom100 - // - this.buttonZoom100.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonZoom100.Location = new System.Drawing.Point(712, 538); - this.buttonZoom100.Name = "buttonZoom100"; - this.buttonZoom100.Size = new System.Drawing.Size(100, 23); - this.buttonZoom100.TabIndex = 11; - this.buttonZoom100.Tag = "100"; - this.buttonZoom100.Text = "Zoom 100%"; - this.buttonZoom100.UseVisualStyleBackColor = true; - this.buttonZoom100.Click += new System.EventHandler(this.Zoom); - // - // buttonZoomAuto - // - this.buttonZoomAuto.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.buttonZoomAuto.Location = new System.Drawing.Point(818, 538); - this.buttonZoomAuto.Name = "buttonZoomAuto"; - this.buttonZoomAuto.Size = new System.Drawing.Size(100, 23); - this.buttonZoomAuto.TabIndex = 12; - this.buttonZoomAuto.Tag = "auto"; - this.buttonZoomAuto.Text = "Zoom Auto"; - this.buttonZoomAuto.UseVisualStyleBackColor = true; - this.buttonZoomAuto.Click += new System.EventHandler(this.Zoom); - // // panel1 // this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) @@ -449,16 +425,41 @@ this.pictureBox1.TabIndex = 0; this.pictureBox1.TabStop = false; // + // comboBoxZoom + // + this.comboBoxZoom.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.comboBoxZoom.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBoxZoom.FormattingEnabled = true; + this.comboBoxZoom.Items.AddRange(new object[] { + "Auto", + "Vollbild", + "Original"}); + this.comboBoxZoom.Location = new System.Drawing.Point(799, 538); + this.comboBoxZoom.Name = "comboBoxZoom"; + this.comboBoxZoom.Size = new System.Drawing.Size(121, 21); + this.comboBoxZoom.TabIndex = 14; + this.comboBoxZoom.SelectedIndexChanged += new System.EventHandler(this.ComboBoxZoom_SelectedIndexChanged); + // + // label3 + // + this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(759, 543); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(34, 13); + this.label3.TabIndex = 15; + this.label3.Text = "Zoom"; + // // Main // this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi; this.ClientSize = new System.Drawing.Size(967, 566); + this.Controls.Add(this.label3); + this.Controls.Add(this.comboBoxZoom); this.Controls.Add(this.panel3); this.Controls.Add(this.labelZoom); this.Controls.Add(this.panel1); - this.Controls.Add(this.buttonZoomAuto); - this.Controls.Add(this.buttonZoom100); this.Controls.Add(this.buttonMirrorVertikal); this.Controls.Add(this.buttonMirrorHorizontal); this.Controls.Add(this.buttonRotate270); @@ -473,8 +474,9 @@ this.Name = "Main"; this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Show; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Image Sorter v1.27 | © 2015-2019 by manuelkamper.com"; + this.Text = "Image Sorter v1.29 | © 2015-2019 by manuelkamper.com"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Main_FormClosing); + this.Load += new System.EventHandler(this.Main_Load); this.Shown += new System.EventHandler(this.Main_Shown); this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Main_KeyDown); this.Resize += new System.EventHandler(this.Main_ResizeEnd); @@ -513,8 +515,6 @@ private System.Windows.Forms.Button buttonRotate270; private System.Windows.Forms.Button buttonMirrorHorizontal; private System.Windows.Forms.Button buttonMirrorVertikal; - private System.Windows.Forms.Button buttonZoom100; - private System.Windows.Forms.Button buttonZoomAuto; private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Label labelZoom; private System.Windows.Forms.ContextMenuStrip contextMenuStrip; @@ -532,6 +532,8 @@ private System.Windows.Forms.Button buttonQuellPfad; private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog; private System.Windows.Forms.Label labelZielPath; + private System.Windows.Forms.ComboBox comboBoxZoom; + private System.Windows.Forms.Label label3; } } diff --git a/Mk0.Software.ImageSorter/Main.cs b/Mk0.Software.ImageSorter/Main.cs index ea23175..0e013e6 100644 --- a/Mk0.Software.ImageSorter/Main.cs +++ b/Mk0.Software.ImageSorter/Main.cs @@ -39,34 +39,49 @@ namespace Mk0.Software.ImageSorter private Thread folderThread; private bool threadIsRunning = false; private Banner banner; - private string zoomType = "auto"; + //private string zoomType = "auto"; private string startuppath; private string startupimage; + public string[] Args; - public Main(string startuppath) + public Main() { InitializeComponent(); banner = new Banner(components, panel3, pictureBox1, pictureBox2, label1, label2); pictureBox.Cursor = grabCursor; DoubleBuffered = true; - if (!string.IsNullOrEmpty(startuppath) && File.Exists(startuppath)) - { - this.startuppath = Path.GetDirectoryName(startuppath); - startupimage = Path.GetFileName(startuppath); - } SetDefaultPath(); + comboBoxZoom.SelectedIndex = Properties.Settings.Default.zoom; + } - if (Properties.Settings.Default.fileAssociation) + private void Main_Load(object sender, EventArgs e) + { + if (Args != null) { - ExtractAssocIcons(); + ProcessParameters(null, Args); + Args = null; + } + } - FileAssociation.Check("Image_Sorter", ".jpg", Application.StartupPath, "JPG Bild", $@"{Application.StartupPath}\AssocIcons\jpg.ico"); - FileAssociation.Check("Image_Sorter", ".png", Application.StartupPath, "PNG Bild", $@"{Application.StartupPath}\AssocIcons\png.ico"); - FileAssociation.Check("Image_Sorter", ".gif", Application.StartupPath, "GIF Bild", $@"{Application.StartupPath}\AssocIcons\gif.ico"); - FileAssociation.Check("Image_Sorter", ".jpeg", Application.StartupPath, "JPEG Bild", $@"{Application.StartupPath}\AssocIcons\jpeg.ico"); - FileAssociation.Check("Image_Sorter", ".bmp", Application.StartupPath, "BMP Bild", $@"{Application.StartupPath}\AssocIcons\bmp.ico"); - FileAssociation.Check("Image_Sorter", ".tif", Application.StartupPath, "TIF Bild", $@"{Application.StartupPath}\AssocIcons\tif.ico"); - FileAssociation.Check("Image_Sorter", ".tiff", Application.StartupPath, "TIFF Bild", $@"{Application.StartupPath}\AssocIcons\tiff.ico"); + public delegate void ProcessParametersDelegate(object sender, string[] args); + public void ProcessParameters(object sender, string[] args) + { + if (args != null && args.Length != 0) + { + if (!string.IsNullOrEmpty(args[0]) && File.Exists(args[0])) + { + startuppath = Path.GetDirectoryName(args[0]); + startupimage = Path.GetFileName(args[0]); + if (!string.IsNullOrEmpty(startuppath) && File.Exists(startuppath)) + { + startuppath = Path.GetDirectoryName(startuppath); + startupimage = Path.GetFileName(startuppath); + } + SetDefaultPath(); + SearchImages(); + CountPicsInPath(); + LoadPicture(GetImageIndex(Path.Combine(startuppath, startupimage))); + } } } @@ -440,8 +455,7 @@ namespace Mk0.Software.ImageSorter buttonRotate180.Enabled = enabled; buttonRotate270.Enabled = enabled; buttonRotate90.Enabled = enabled; - buttonZoom100.Enabled = enabled; - buttonZoomAuto.Enabled = enabled; + comboBoxZoom.Enabled = enabled; buttonJumpOver.Enabled = enabled; labelNoImages.Visible = !enabled; } @@ -711,37 +725,48 @@ namespace Mk0.Software.ImageSorter } /// - /// Zoom-Optionen für Buttons + /// Zoom-Optionen /// /// /// - private void Zoom(object sender, EventArgs e) + private void Zoom() { - Button btn = (Button)sender; - string zoom = btn.Tag.ToString(); + string zoom = comboBoxZoom.SelectedItem.ToString(); - if (zoom == "100") + if (zoom == "Original") { - zoomType = "100"; - buttonZoom100.Font = new Font(buttonZoom100.Font, FontStyle.Bold); - buttonZoomAuto.Font = new Font(buttonZoomAuto.Font, FontStyle.Regular); pictureBox.SizeMode = PictureBoxSizeMode.Zoom; pictureBox.Size = new Size(pictureBox.Image.Width, pictureBox.Image.Height); if (pictureBox.Image.Width > panel1.Width) { pictureBox.Left = (panel1.Width / 2) - (pictureBox.Width / 2); } else { pictureBox.Left = (panel1.Width / 2) - (pictureBox.Image.Width / 2); } if (pictureBox.Image.Height > panel1.Height) { pictureBox.Top = (panel1.Height / 2) - (pictureBox.Height / 2); } else { pictureBox.Top = (panel1.Height / 2) - (pictureBox.Image.Height / 2); } moveable = true; } - else if (zoom == "auto") + else if (zoom == "Vollbild") { - zoomType = "auto"; - buttonZoom100.Font = new Font(buttonZoom100.Font, FontStyle.Regular); - buttonZoomAuto.Font = new Font(buttonZoomAuto.Font, FontStyle.Bold); pictureBox.SizeMode = PictureBoxSizeMode.Zoom; pictureBox.Size = new Size(panel1.Width, panel1.Height); pictureBox.Top = 0; pictureBox.Left = 0; moveable = false; } + else if (zoom == "Auto") + { + pictureBox.SizeMode = PictureBoxSizeMode.Zoom; + if(pictureBox.Image.Width>panel1.Width || pictureBox.Image.Height>panel1.Height) + { + pictureBox.Size = new Size(panel1.Width, panel1.Height); + pictureBox.Top = 0; + pictureBox.Left = 0; + moveable = false; + } + else + { + pictureBox.Size = new Size(pictureBox.Image.Width, pictureBox.Image.Height); + if (pictureBox.Image.Width > panel1.Width) { pictureBox.Left = (panel1.Width / 2) - (pictureBox.Width / 2); } else { pictureBox.Left = (panel1.Width / 2) - (pictureBox.Image.Width / 2); } + if (pictureBox.Image.Height > panel1.Height) { pictureBox.Top = (panel1.Height / 2) - (pictureBox.Height / 2); } else { pictureBox.Top = (panel1.Height / 2) - (pictureBox.Image.Height / 2); } + moveable = true; + } + } else { return; @@ -894,11 +919,7 @@ namespace Mk0.Software.ImageSorter /// private void PictureBox_LoadCompleted(object sender, AsyncCompletedEventArgs e) { - Button b = new Button - { - Tag = zoomType - }; - Zoom(b, null); + Zoom(); } /// @@ -1086,11 +1107,7 @@ namespace Mk0.Software.ImageSorter { try { - Button b = new Button - { - Tag = zoomType - }; - Zoom(b, null); + Zoom(); } catch (Exception) { @@ -1179,5 +1196,21 @@ namespace Mk0.Software.ImageSorter LoadPicture(0); ResetUndo(); } + + /// + /// Zoom-Combobox geändert + /// + /// + /// + private void ComboBoxZoom_SelectedIndexChanged(object sender, EventArgs e) + { + Properties.Settings.Default.zoom = comboBoxZoom.SelectedIndex; + Properties.Settings.Default.Save(); + + if(pictureBox.Image != null) + { + Zoom(); + } + } } } \ No newline at end of file diff --git a/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj b/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj index 962b988..164f760 100644 --- a/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj +++ b/Mk0.Software.ImageSorter/Mk0.Software.ImageSorter.csproj @@ -95,10 +95,6 @@ ..\Mk0.Tools.Randomization.dll False - - ..\Mk0.Tools.SingleInstance.dll - False - @@ -176,7 +172,6 @@ - diff --git a/Mk0.Software.ImageSorter/Program.cs b/Mk0.Software.ImageSorter/Program.cs index 52d4a44..b47ab2b 100644 --- a/Mk0.Software.ImageSorter/Program.cs +++ b/Mk0.Software.ImageSorter/Program.cs @@ -1,6 +1,5 @@ using System; -using System.Windows.Forms; -using Mk0.Tools.SingleInstance; +using Microsoft.VisualBasic.ApplicationServices; namespace Mk0.Software.ImageSorter { @@ -12,9 +11,39 @@ namespace Mk0.Software.ImageSorter [STAThread] static void Main(string[] args) { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - SingleApplication.Run(args.Length == 0 ? new Main(string.Empty) : new Main(args[0]), Mk0.Software.ImageSorter.Properties.Settings.Default.singleInstance); + App myApp = new App(); + myApp.Run(args); + } + + class App : WindowsFormsApplicationBase + { + public App() + { + IsSingleInstance = Properties.Settings.Default.singleInstance; + EnableVisualStyles = true; + + ShutdownStyle = ShutdownMode.AfterMainFormCloses; + StartupNextInstance += new StartupNextInstanceEventHandler(SIApp_StartupNextInstance); + } + + protected override void OnCreateMainForm() + { + MainForm = new Main(); + ((Main)MainForm).Args = new string[CommandLineArgs.Count]; + CommandLineArgs.CopyTo(((Main)MainForm).Args, 0); + } + + protected void SIApp_StartupNextInstance(object sender, StartupNextInstanceEventArgs eventArgs) + { + string[] args = new string[eventArgs.CommandLine.Count]; + eventArgs.CommandLine.CopyTo(args, 0); + + object[] parameters = new object[2]; + parameters[0] = MainForm; + parameters[1] = args; + + MainForm.Invoke(new Main.ProcessParametersDelegate(((Main)MainForm).ProcessParameters), parameters); + } } } } diff --git a/Mk0.Software.ImageSorter/Properties/AssemblyInfo.cs b/Mk0.Software.ImageSorter/Properties/AssemblyInfo.cs index c25d0c0..0802e78 100644 --- a/Mk0.Software.ImageSorter/Properties/AssemblyInfo.cs +++ b/Mk0.Software.ImageSorter/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern // übernehmen, indem Sie "*" eingeben: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.27.*")] +[assembly: AssemblyVersion("1.29.*")] //[assembly: AssemblyFileVersion("1.6.0.0")] diff --git a/Mk0.Software.ImageSorter/Properties/Settings.Designer.cs b/Mk0.Software.ImageSorter/Properties/Settings.Designer.cs index a70960b..4ed8230 100644 --- a/Mk0.Software.ImageSorter/Properties/Settings.Designer.cs +++ b/Mk0.Software.ImageSorter/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace Mk0.Software.ImageSorter.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.8.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -118,5 +118,17 @@ namespace Mk0.Software.ImageSorter.Properties { this["fileAssociation"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public int zoom { + get { + return ((int)(this["zoom"])); + } + set { + this["zoom"] = value; + } + } } } diff --git a/Mk0.Software.ImageSorter/Properties/Settings.settings b/Mk0.Software.ImageSorter/Properties/Settings.settings index ddd057c..941d310 100644 --- a/Mk0.Software.ImageSorter/Properties/Settings.settings +++ b/Mk0.Software.ImageSorter/Properties/Settings.settings @@ -1,5 +1,5 @@  - + @@ -26,5 +26,8 @@ False + + 0 + \ No newline at end of file diff --git a/Mk0.Software.ImageSorter/dll/Mk0.Tools.SingleInstance.dll b/Mk0.Software.ImageSorter/dll/Mk0.Tools.SingleInstance.dll deleted file mode 100644 index 490cde1..0000000 Binary files a/Mk0.Software.ImageSorter/dll/Mk0.Tools.SingleInstance.dll and /dev/null differ