Compare commits

...

17 Commits

Author SHA1 Message Date
Aaron 5a5c304b93 Removed redundant 'are you sure' from File => Quit
3 years ago
Aaron cfc5d43fe6 Bug fix for populating dir lists when no dest selected; updated version info
3 years ago
Aaron Johnson d720254e5e Merge pull request 'sort-delete' (#1) from sort-delete into master
3 years ago
Aaron 696f0a37b8 Updated <delete> hotkey to <shift + delete>
3 years ago
Aaron 221f1ff937 Made secondary dir list more intuitive when primary sort field empty
3 years ago
Aaron 9170a6ed09 Updated hotkeys
3 years ago
Aaron 894b22cff5 Added list pruning and fine tuning
3 years ago
Aaron 68861b3247 Added sort autocomplete and dir lists
3 years ago
Aaron ba8d8f0cd0 Delete functionality added
3 years ago
Aaron 802d2ea2e3 Rewrote hotkeys handling
3 years ago
Aaron a684a680c6 Added new UI elements
3 years ago
Aaron 2dae682914 Revised tab indices
3 years ago
Aaron c06d42feb1 Feature Update v1.0.1
3 years ago
Aaron 88065c5f3e Adjusted loading message
3 years ago
Aaron 870abe7f58 Added informative loading text to status bar, replaced default image
3 years ago
Aaron 62c79ddbb6 Release v1.0
3 years ago
Aaron f0f353eba7 Fixed destination-first bug; preview now written to memory
3 years ago

3
.gitignore vendored

@ -0,0 +1,3 @@
photo_sorter/bin/Debug/*
photo_sorter/bin/Release/*
photo_sorter/bin/*

@ -1,6 +1,30 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="photo_sorter.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<userSettings>
<photo_sorter.Properties.Settings>
<setting name="global_hotkeys" serializeAs="String">
<value>True</value>
</setting>
<setting name="src_dir" serializeAs="String">
<value />
</setting>
<setting name="dest_dir" serializeAs="String">
<value />
</setting>
<setting name="copy_on_sort" serializeAs="String">
<value>False</value>
</setting>
<setting name="img_format" serializeAs="String">
<value>nef</value>
</setting>
</photo_sorter.Properties.Settings>
</userSettings>
</configuration>

475
Form1.Designer.cs generated

@ -32,12 +32,17 @@ namespace photo_sorter
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(form_main));
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.openDirectoryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.selectDestinationDirectoryToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.quitApplicationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tsi_openDirectory = new System.Windows.Forms.ToolStripMenuItem();
this.tsi_selectDestinationDirectory = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.tsi_quitApplication = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tsi_globalHotkeysList = new System.Windows.Forms.ToolStripMenuItem();
this.tsi_enableGlobalHotkeys = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.tsi_about = new System.Windows.Forms.ToolStripMenuItem();
this.gbox_preview = new System.Windows.Forms.GroupBox();
this.btn_delete = new System.Windows.Forms.Button();
this.lbl_counter = new System.Windows.Forms.Label();
this.lbl_current_fname = new System.Windows.Forms.Label();
this.btn_next = new System.Windows.Forms.Button();
@ -45,6 +50,20 @@ namespace photo_sorter
this.btn_sort = new System.Windows.Forms.Button();
this.img_preview = new System.Windows.Forms.PictureBox();
this.gbox_info = new System.Windows.Forms.GroupBox();
this.cbox_sort_primary = new System.Windows.Forms.ComboBox();
this.tabctrl_sort_dir = new System.Windows.Forms.TabControl();
this.tab_primesort = new System.Windows.Forms.TabPage();
this.lbox_primary_sortlist = new System.Windows.Forms.ListBox();
this.tab_secondsort = new System.Windows.Forms.TabPage();
this.lbox_secondary_sortlist = new System.Windows.Forms.ListBox();
this.cbox_sort_secondary = new System.Windows.Forms.ComboBox();
this.btn_prerender = new System.Windows.Forms.Button();
this.gbox_photo_type = new System.Windows.Forms.GroupBox();
this.rad_dng = new System.Windows.Forms.RadioButton();
this.rad_png = new System.Windows.Forms.RadioButton();
this.rad_jpeg = new System.Windows.Forms.RadioButton();
this.rad_nef = new System.Windows.Forms.RadioButton();
this.rad_cr2 = new System.Windows.Forms.RadioButton();
this.btn_reload_src = new System.Windows.Forms.Button();
this.btn_open_src_dir = new System.Windows.Forms.Button();
this.btn_open_dest_dir = new System.Windows.Forms.Button();
@ -55,20 +74,25 @@ namespace photo_sorter
this.gbox_copybool = new System.Windows.Forms.GroupBox();
this.rad_sort_move = new System.Windows.Forms.RadioButton();
this.rad_sort_copy = new System.Windows.Forms.RadioButton();
this.tbox_sort_secondary = new System.Windows.Forms.TextBox();
this.lbl_sort_secondary = new System.Windows.Forms.Label();
this.tbox_sort_primary = new System.Windows.Forms.TextBox();
this.lbl_sort_primary = new System.Windows.Forms.Label();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.status_bar = new System.Windows.Forms.StatusStrip();
this.stat_last_action = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripSpacer = new System.Windows.Forms.ToolStripStatusLabel();
this.stat_bar_label = new System.Windows.Forms.ToolStripStatusLabel();
this.pbar = new System.Windows.Forms.ToolStripProgressBar();
this.split_container_main = new System.Windows.Forms.SplitContainer();
this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog();
this.menuStrip1.SuspendLayout();
this.gbox_preview.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.img_preview)).BeginInit();
this.gbox_info.SuspendLayout();
this.tabctrl_sort_dir.SuspendLayout();
this.tab_primesort.SuspendLayout();
this.tab_secondsort.SuspendLayout();
this.gbox_photo_type.SuspendLayout();
this.gbox_copybool.SuspendLayout();
this.statusStrip1.SuspendLayout();
this.status_bar.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.split_container_main)).BeginInit();
this.split_container_main.Panel1.SuspendLayout();
this.split_container_main.Panel2.SuspendLayout();
@ -82,61 +106,93 @@ namespace photo_sorter
this.helpToolStripMenuItem});
this.menuStrip1.Location = new System.Drawing.Point(0, 0);
this.menuStrip1.Name = "menuStrip1";
this.menuStrip1.Size = new System.Drawing.Size(1101, 24);
this.menuStrip1.Size = new System.Drawing.Size(1104, 24);
this.menuStrip1.TabIndex = 0;
this.menuStrip1.Text = "menuStrip1";
//
// fileToolStripMenuItem
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.openDirectoryToolStripMenuItem,
this.selectDestinationDirectoryToolStripMenuItem,
this.quitApplicationToolStripMenuItem});
this.tsi_openDirectory,
this.tsi_selectDestinationDirectory,
this.toolStripSeparator2,
this.tsi_quitApplication});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Text = "&File";
//
// openDirectoryToolStripMenuItem
// tsi_openDirectory
//
this.openDirectoryToolStripMenuItem.Name = "openDirectoryToolStripMenuItem";
this.openDirectoryToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
this.openDirectoryToolStripMenuItem.Text = "&Open Source Directory";
this.openDirectoryToolStripMenuItem.Click += new System.EventHandler(this.openDirectoryToolStripMenuItem_Click);
this.tsi_openDirectory.Name = "tsi_openDirectory";
this.tsi_openDirectory.Size = new System.Drawing.Size(219, 22);
this.tsi_openDirectory.Text = "&Open Source Directory";
this.tsi_openDirectory.Click += new System.EventHandler(this.openDirectoryToolStripMenuItem_Click);
//
// selectDestinationDirectoryToolStripMenuItem
// tsi_selectDestinationDirectory
//
this.selectDestinationDirectoryToolStripMenuItem.Name = "selectDestinationDirectoryToolStripMenuItem";
this.selectDestinationDirectoryToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
this.selectDestinationDirectoryToolStripMenuItem.Text = "Select &Destination Directory";
this.selectDestinationDirectoryToolStripMenuItem.Click += new System.EventHandler(this.selectDestinationDirectoryToolStripMenuItem_Click);
this.tsi_selectDestinationDirectory.Name = "tsi_selectDestinationDirectory";
this.tsi_selectDestinationDirectory.Size = new System.Drawing.Size(219, 22);
this.tsi_selectDestinationDirectory.Text = "Select &Destination Directory";
this.tsi_selectDestinationDirectory.Click += new System.EventHandler(this.selectDestinationDirectoryToolStripMenuItem_Click);
//
// quitApplicationToolStripMenuItem
// toolStripSeparator2
//
this.quitApplicationToolStripMenuItem.Name = "quitApplicationToolStripMenuItem";
this.quitApplicationToolStripMenuItem.Size = new System.Drawing.Size(219, 22);
this.quitApplicationToolStripMenuItem.Text = "&Quit Application";
this.quitApplicationToolStripMenuItem.Click += new System.EventHandler(this.quitApplicationToolStripMenuItem_Click);
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(216, 6);
//
// tsi_quitApplication
//
this.tsi_quitApplication.Name = "tsi_quitApplication";
this.tsi_quitApplication.Size = new System.Drawing.Size(219, 22);
this.tsi_quitApplication.Text = "&Quit Application";
this.tsi_quitApplication.Click += new System.EventHandler(this.quitApplicationToolStripMenuItem_Click);
//
// helpToolStripMenuItem
//
this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.aboutToolStripMenuItem});
this.tsi_globalHotkeysList,
this.tsi_enableGlobalHotkeys,
this.toolStripSeparator1,
this.tsi_about});
this.helpToolStripMenuItem.Name = "helpToolStripMenuItem";
this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
this.helpToolStripMenuItem.Text = "&Help";
//
// aboutToolStripMenuItem
// tsi_globalHotkeysList
//
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(107, 22);
this.aboutToolStripMenuItem.Text = "&About";
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
this.tsi_globalHotkeysList.Name = "tsi_globalHotkeysList";
this.tsi_globalHotkeysList.Size = new System.Drawing.Size(192, 22);
this.tsi_globalHotkeysList.Text = "&Global Hotkeys List";
this.tsi_globalHotkeysList.Click += new System.EventHandler(this.globalHotkeysListToolStripMenuItem_Click);
//
// tsi_enableGlobalHotkeys
//
this.tsi_enableGlobalHotkeys.Checked = true;
this.tsi_enableGlobalHotkeys.CheckOnClick = true;
this.tsi_enableGlobalHotkeys.CheckState = System.Windows.Forms.CheckState.Checked;
this.tsi_enableGlobalHotkeys.Name = "tsi_enableGlobalHotkeys";
this.tsi_enableGlobalHotkeys.Size = new System.Drawing.Size(192, 22);
this.tsi_enableGlobalHotkeys.Text = "&Enable Global Hotkeys";
this.tsi_enableGlobalHotkeys.Click += new System.EventHandler(this.tsi_enableGlobalHotkeys_Click);
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(189, 6);
//
// tsi_about
//
this.tsi_about.Name = "tsi_about";
this.tsi_about.Size = new System.Drawing.Size(192, 22);
this.tsi_about.Text = "&About";
this.tsi_about.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
//
// gbox_preview
//
this.gbox_preview.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.gbox_preview.Controls.Add(this.btn_delete);
this.gbox_preview.Controls.Add(this.lbl_counter);
this.gbox_preview.Controls.Add(this.lbl_current_fname);
this.gbox_preview.Controls.Add(this.btn_next);
@ -145,16 +201,28 @@ namespace photo_sorter
this.gbox_preview.Controls.Add(this.img_preview);
this.gbox_preview.Enabled = false;
this.gbox_preview.Location = new System.Drawing.Point(3, 3);
this.gbox_preview.MinimumSize = new System.Drawing.Size(640, 0);
this.gbox_preview.Name = "gbox_preview";
this.gbox_preview.Size = new System.Drawing.Size(708, 533);
this.gbox_preview.Size = new System.Drawing.Size(710, 540);
this.gbox_preview.TabIndex = 1;
this.gbox_preview.TabStop = false;
this.gbox_preview.Text = "Preview";
//
// btn_delete
//
this.btn_delete.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.btn_delete.Location = new System.Drawing.Point(528, 13);
this.btn_delete.Name = "btn_delete";
this.btn_delete.Size = new System.Drawing.Size(75, 23);
this.btn_delete.TabIndex = 33;
this.btn_delete.Text = "&Delete (!)";
this.btn_delete.UseVisualStyleBackColor = true;
this.btn_delete.Click += new System.EventHandler(this.btn_delete_Click);
//
// lbl_counter
//
this.lbl_counter.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.lbl_counter.Location = new System.Drawing.Point(607, 18);
this.lbl_counter.Location = new System.Drawing.Point(609, 18);
this.lbl_counter.Name = "lbl_counter";
this.lbl_counter.RightToLeft = System.Windows.Forms.RightToLeft.No;
this.lbl_counter.Size = new System.Drawing.Size(95, 23);
@ -167,17 +235,17 @@ namespace photo_sorter
this.lbl_current_fname.AutoSize = true;
this.lbl_current_fname.Location = new System.Drawing.Point(9, 18);
this.lbl_current_fname.Name = "lbl_current_fname";
this.lbl_current_fname.Size = new System.Drawing.Size(214, 13);
this.lbl_current_fname.Size = new System.Drawing.Size(160, 13);
this.lbl_current_fname.TabIndex = 7;
this.lbl_current_fname.Text = "hank_ketchum.file - Select Source to begin!";
this.lbl_current_fname.Text = "test.file - Select Source to begin!";
//
// btn_next
//
this.btn_next.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.btn_next.Location = new System.Drawing.Point(397, 13);
this.btn_next.Location = new System.Drawing.Point(398, 13);
this.btn_next.Name = "btn_next";
this.btn_next.Size = new System.Drawing.Size(75, 23);
this.btn_next.TabIndex = 8;
this.btn_next.TabIndex = 32;
this.btn_next.Text = "&Next >>";
this.btn_next.UseVisualStyleBackColor = true;
this.btn_next.Click += new System.EventHandler(this.btn_next_Click);
@ -185,10 +253,10 @@ namespace photo_sorter
// btn_prev
//
this.btn_prev.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.btn_prev.Location = new System.Drawing.Point(235, 13);
this.btn_prev.Location = new System.Drawing.Point(236, 13);
this.btn_prev.Name = "btn_prev";
this.btn_prev.Size = new System.Drawing.Size(75, 23);
this.btn_prev.TabIndex = 6;
this.btn_prev.TabIndex = 30;
this.btn_prev.Text = "<< &Previous";
this.btn_prev.UseVisualStyleBackColor = true;
this.btn_prev.Click += new System.EventHandler(this.btn_prev_Click);
@ -196,10 +264,10 @@ namespace photo_sorter
// btn_sort
//
this.btn_sort.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.btn_sort.Location = new System.Drawing.Point(316, 13);
this.btn_sort.Location = new System.Drawing.Point(317, 13);
this.btn_sort.Name = "btn_sort";
this.btn_sort.Size = new System.Drawing.Size(75, 23);
this.btn_sort.TabIndex = 7;
this.btn_sort.TabIndex = 31;
this.btn_sort.Text = "&Sort";
this.btn_sort.UseVisualStyleBackColor = true;
this.btn_sort.Click += new System.EventHandler(this.btn_sort_Click);
@ -213,7 +281,7 @@ namespace photo_sorter
this.img_preview.InitialImage = null;
this.img_preview.Location = new System.Drawing.Point(6, 42);
this.img_preview.Name = "img_preview";
this.img_preview.Size = new System.Drawing.Size(696, 485);
this.img_preview.Size = new System.Drawing.Size(698, 492);
this.img_preview.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.img_preview.TabIndex = 0;
this.img_preview.TabStop = false;
@ -223,6 +291,11 @@ namespace photo_sorter
this.gbox_info.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.gbox_info.Controls.Add(this.cbox_sort_primary);
this.gbox_info.Controls.Add(this.tabctrl_sort_dir);
this.gbox_info.Controls.Add(this.cbox_sort_secondary);
this.gbox_info.Controls.Add(this.btn_prerender);
this.gbox_info.Controls.Add(this.gbox_photo_type);
this.gbox_info.Controls.Add(this.btn_reload_src);
this.gbox_info.Controls.Add(this.btn_open_src_dir);
this.gbox_info.Controls.Add(this.btn_open_dest_dir);
@ -231,25 +304,188 @@ namespace photo_sorter
this.gbox_info.Controls.Add(this.tbox_dest_dir);
this.gbox_info.Controls.Add(this.lbl_dest_dir);
this.gbox_info.Controls.Add(this.gbox_copybool);
this.gbox_info.Controls.Add(this.tbox_sort_secondary);
this.gbox_info.Controls.Add(this.lbl_sort_secondary);
this.gbox_info.Controls.Add(this.tbox_sort_primary);
this.gbox_info.Controls.Add(this.lbl_sort_primary);
this.gbox_info.Location = new System.Drawing.Point(3, 3);
this.gbox_info.MinimumSize = new System.Drawing.Size(346, 540);
this.gbox_info.Name = "gbox_info";
this.gbox_info.Size = new System.Drawing.Size(353, 533);
this.gbox_info.Size = new System.Drawing.Size(354, 540);
this.gbox_info.TabIndex = 2;
this.gbox_info.TabStop = false;
this.gbox_info.Text = "Sorting Info";
//
// cbox_sort_primary
//
this.cbox_sort_primary.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.cbox_sort_primary.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Append;
this.cbox_sort_primary.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
this.cbox_sort_primary.FormattingEnabled = true;
this.cbox_sort_primary.Location = new System.Drawing.Point(5, 81);
this.cbox_sort_primary.Name = "cbox_sort_primary";
this.cbox_sort_primary.Size = new System.Drawing.Size(343, 21);
this.cbox_sort_primary.TabIndex = 2;
this.cbox_sort_primary.Enter += new System.EventHandler(this.cbox_sort_primary_Enter);
this.cbox_sort_primary.Leave += new System.EventHandler(this.cbox_sortfields_Leave);
//
// tabctrl_sort_dir
//
this.tabctrl_sort_dir.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tabctrl_sort_dir.Controls.Add(this.tab_primesort);
this.tabctrl_sort_dir.Controls.Add(this.tab_secondsort);
this.tabctrl_sort_dir.Location = new System.Drawing.Point(6, 246);
this.tabctrl_sort_dir.Name = "tabctrl_sort_dir";
this.tabctrl_sort_dir.SelectedIndex = 0;
this.tabctrl_sort_dir.Size = new System.Drawing.Size(340, 236);
this.tabctrl_sort_dir.TabIndex = 13;
//
// tab_primesort
//
this.tab_primesort.Controls.Add(this.lbox_primary_sortlist);
this.tab_primesort.Location = new System.Drawing.Point(4, 22);
this.tab_primesort.Name = "tab_primesort";
this.tab_primesort.Padding = new System.Windows.Forms.Padding(3);
this.tab_primesort.Size = new System.Drawing.Size(332, 210);
this.tab_primesort.TabIndex = 0;
this.tab_primesort.Text = "Primary Sort Directories";
//
// lbox_primary_sortlist
//
this.lbox_primary_sortlist.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lbox_primary_sortlist.FormattingEnabled = true;
this.lbox_primary_sortlist.Location = new System.Drawing.Point(5, 6);
this.lbox_primary_sortlist.Name = "lbox_primary_sortlist";
this.lbox_primary_sortlist.Size = new System.Drawing.Size(323, 199);
this.lbox_primary_sortlist.TabIndex = 14;
this.lbox_primary_sortlist.DoubleClick += new System.EventHandler(this.lbox_primary_sortlist_SelectItem);
//
// tab_secondsort
//
this.tab_secondsort.Controls.Add(this.lbox_secondary_sortlist);
this.tab_secondsort.Location = new System.Drawing.Point(4, 22);
this.tab_secondsort.Name = "tab_secondsort";
this.tab_secondsort.Padding = new System.Windows.Forms.Padding(3);
this.tab_secondsort.Size = new System.Drawing.Size(332, 210);
this.tab_secondsort.TabIndex = 1;
this.tab_secondsort.Text = "Secondary Sort Directories";
//
// lbox_secondary_sortlist
//
this.lbox_secondary_sortlist.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lbox_secondary_sortlist.FormattingEnabled = true;
this.lbox_secondary_sortlist.Location = new System.Drawing.Point(5, 6);
this.lbox_secondary_sortlist.Name = "lbox_secondary_sortlist";
this.lbox_secondary_sortlist.Size = new System.Drawing.Size(323, 199);
this.lbox_secondary_sortlist.TabIndex = 15;
this.lbox_secondary_sortlist.DoubleClick += new System.EventHandler(this.lbox_secondary_sortlist_SelectItem);
//
// cbox_sort_secondary
//
this.cbox_sort_secondary.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.cbox_sort_secondary.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Append;
this.cbox_sort_secondary.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems;
this.cbox_sort_secondary.FormattingEnabled = true;
this.cbox_sort_secondary.Location = new System.Drawing.Point(5, 125);
this.cbox_sort_secondary.Name = "cbox_sort_secondary";
this.cbox_sort_secondary.Size = new System.Drawing.Size(343, 21);
this.cbox_sort_secondary.TabIndex = 3;
this.cbox_sort_secondary.Enter += new System.EventHandler(this.cbox_sort_secondary_Enter);
this.cbox_sort_secondary.Leave += new System.EventHandler(this.cbox_sortfields_Leave);
//
// btn_prerender
//
this.btn_prerender.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btn_prerender.Enabled = false;
this.btn_prerender.Location = new System.Drawing.Point(183, 488);
this.btn_prerender.Name = "btn_prerender";
this.btn_prerender.Size = new System.Drawing.Size(75, 23);
this.btn_prerender.TabIndex = 16;
this.btn_prerender.Text = "Pre-R&ender";
this.btn_prerender.UseVisualStyleBackColor = true;
this.btn_prerender.Visible = false;
this.btn_prerender.Click += new System.EventHandler(this.btn_prerender_Click);
//
// gbox_photo_type
//
this.gbox_photo_type.Controls.Add(this.rad_dng);
this.gbox_photo_type.Controls.Add(this.rad_png);
this.gbox_photo_type.Controls.Add(this.rad_jpeg);
this.gbox_photo_type.Controls.Add(this.rad_nef);
this.gbox_photo_type.Controls.Add(this.rad_cr2);
this.gbox_photo_type.Location = new System.Drawing.Point(7, 151);
this.gbox_photo_type.Name = "gbox_photo_type";
this.gbox_photo_type.Size = new System.Drawing.Size(211, 89);
this.gbox_photo_type.TabIndex = 4;
this.gbox_photo_type.TabStop = false;
this.gbox_photo_type.Text = "File Type";
//
// rad_dng
//
this.rad_dng.AutoSize = true;
this.rad_dng.Location = new System.Drawing.Point(6, 65);
this.rad_dng.Name = "rad_dng";
this.rad_dng.Size = new System.Drawing.Size(133, 17);
this.rad_dng.TabIndex = 6;
this.rad_dng.Text = "DNG (Digital Negative)";
this.rad_dng.UseVisualStyleBackColor = true;
//
// rad_png
//
this.rad_png.AutoSize = true;
this.rad_png.Location = new System.Drawing.Point(156, 42);
this.rad_png.Name = "rad_png";
this.rad_png.Size = new System.Drawing.Size(48, 17);
this.rad_png.TabIndex = 8;
this.rad_png.Text = "PNG";
this.rad_png.UseVisualStyleBackColor = true;
//
// rad_jpeg
//
this.rad_jpeg.AutoSize = true;
this.rad_jpeg.Location = new System.Drawing.Point(156, 19);
this.rad_jpeg.Name = "rad_jpeg";
this.rad_jpeg.Size = new System.Drawing.Size(45, 17);
this.rad_jpeg.TabIndex = 7;
this.rad_jpeg.Text = "JPG";
this.rad_jpeg.UseVisualStyleBackColor = true;
//
// rad_nef
//
this.rad_nef.AutoSize = true;
this.rad_nef.Checked = true;
this.rad_nef.Location = new System.Drawing.Point(6, 19);
this.rad_nef.Name = "rad_nef";
this.rad_nef.Size = new System.Drawing.Size(108, 17);
this.rad_nef.TabIndex = 4;
this.rad_nef.TabStop = true;
this.rad_nef.Text = "NEF (Nikon Raw)";
this.rad_nef.UseVisualStyleBackColor = true;
//
// rad_cr2
//
this.rad_cr2.AutoSize = true;
this.rad_cr2.Location = new System.Drawing.Point(6, 42);
this.rad_cr2.Name = "rad_cr2";
this.rad_cr2.Size = new System.Drawing.Size(111, 17);
this.rad_cr2.TabIndex = 5;
this.rad_cr2.Text = "CR2 (Canon Raw)";
this.rad_cr2.UseVisualStyleBackColor = true;
//
// btn_reload_src
//
this.btn_reload_src.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btn_reload_src.Enabled = false;
this.btn_reload_src.Location = new System.Drawing.Point(273, 481);
this.btn_reload_src.Location = new System.Drawing.Point(274, 488);
this.btn_reload_src.Name = "btn_reload_src";
this.btn_reload_src.Size = new System.Drawing.Size(75, 23);
this.btn_reload_src.TabIndex = 902;
this.btn_reload_src.TabIndex = 17;
this.btn_reload_src.Text = "&Reload";
this.btn_reload_src.UseVisualStyleBackColor = true;
this.btn_reload_src.Click += new System.EventHandler(this.btn_reload_src_Click);
@ -257,10 +493,10 @@ namespace photo_sorter
// btn_open_src_dir
//
this.btn_open_src_dir.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btn_open_src_dir.Location = new System.Drawing.Point(322, 505);
this.btn_open_src_dir.Location = new System.Drawing.Point(323, 512);
this.btn_open_src_dir.Name = "btn_open_src_dir";
this.btn_open_src_dir.Size = new System.Drawing.Size(26, 23);
this.btn_open_src_dir.TabIndex = 901;
this.btn_open_src_dir.TabIndex = 18;
this.btn_open_src_dir.Text = "...";
this.btn_open_src_dir.UseVisualStyleBackColor = true;
this.btn_open_src_dir.Click += new System.EventHandler(this.btn_open_src_dir_Click);
@ -268,7 +504,7 @@ namespace photo_sorter
// btn_open_dest_dir
//
this.btn_open_dest_dir.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btn_open_dest_dir.Location = new System.Drawing.Point(322, 34);
this.btn_open_dest_dir.Location = new System.Drawing.Point(323, 34);
this.btn_open_dest_dir.Name = "btn_open_dest_dir";
this.btn_open_dest_dir.Size = new System.Drawing.Size(26, 23);
this.btn_open_dest_dir.TabIndex = 1;
@ -280,10 +516,10 @@ namespace photo_sorter
//
this.tbox_source_dir.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tbox_source_dir.Location = new System.Drawing.Point(5, 506);
this.tbox_source_dir.Location = new System.Drawing.Point(5, 513);
this.tbox_source_dir.Name = "tbox_source_dir";
this.tbox_source_dir.ReadOnly = true;
this.tbox_source_dir.Size = new System.Drawing.Size(315, 20);
this.tbox_source_dir.Size = new System.Drawing.Size(316, 20);
this.tbox_source_dir.TabIndex = 900;
this.tbox_source_dir.TabStop = false;
//
@ -291,7 +527,7 @@ namespace photo_sorter
//
this.lbl_source_dir.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.lbl_source_dir.AutoSize = true;
this.lbl_source_dir.Location = new System.Drawing.Point(6, 491);
this.lbl_source_dir.Location = new System.Drawing.Point(6, 498);
this.lbl_source_dir.Name = "lbl_source_dir";
this.lbl_source_dir.Size = new System.Drawing.Size(89, 13);
this.lbl_source_dir.TabIndex = 7;
@ -304,7 +540,7 @@ namespace photo_sorter
this.tbox_dest_dir.Location = new System.Drawing.Point(6, 35);
this.tbox_dest_dir.Name = "tbox_dest_dir";
this.tbox_dest_dir.ReadOnly = true;
this.tbox_dest_dir.Size = new System.Drawing.Size(314, 20);
this.tbox_dest_dir.Size = new System.Drawing.Size(315, 20);
this.tbox_dest_dir.TabIndex = 0;
//
// lbl_dest_dir
@ -318,12 +554,13 @@ namespace photo_sorter
//
// gbox_copybool
//
this.gbox_copybool.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.gbox_copybool.Controls.Add(this.rad_sort_move);
this.gbox_copybool.Controls.Add(this.rad_sort_copy);
this.gbox_copybool.Location = new System.Drawing.Point(6, 151);
this.gbox_copybool.Location = new System.Drawing.Point(235, 151);
this.gbox_copybool.Name = "gbox_copybool";
this.gbox_copybool.Size = new System.Drawing.Size(111, 71);
this.gbox_copybool.TabIndex = 4;
this.gbox_copybool.TabIndex = 6;
this.gbox_copybool.TabStop = false;
this.gbox_copybool.Text = "Sort Method";
//
@ -334,7 +571,7 @@ namespace photo_sorter
this.rad_sort_move.Location = new System.Drawing.Point(6, 19);
this.rad_sort_move.Name = "rad_sort_move";
this.rad_sort_move.Size = new System.Drawing.Size(52, 17);
this.rad_sort_move.TabIndex = 4;
this.rad_sort_move.TabIndex = 11;
this.rad_sort_move.TabStop = true;
this.rad_sort_move.Text = "Move";
this.rad_sort_move.UseVisualStyleBackColor = true;
@ -345,19 +582,10 @@ namespace photo_sorter
this.rad_sort_copy.Location = new System.Drawing.Point(6, 42);
this.rad_sort_copy.Name = "rad_sort_copy";
this.rad_sort_copy.Size = new System.Drawing.Size(49, 17);
this.rad_sort_copy.TabIndex = 5;
this.rad_sort_copy.TabIndex = 12;
this.rad_sort_copy.Text = "Copy";
this.rad_sort_copy.UseVisualStyleBackColor = true;
//
// tbox_sort_secondary
//
this.tbox_sort_secondary.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tbox_sort_secondary.Location = new System.Drawing.Point(6, 123);
this.tbox_sort_secondary.Name = "tbox_sort_secondary";
this.tbox_sort_secondary.Size = new System.Drawing.Size(341, 20);
this.tbox_sort_secondary.TabIndex = 3;
//
// lbl_sort_secondary
//
this.lbl_sort_secondary.AutoSize = true;
@ -367,15 +595,6 @@ namespace photo_sorter
this.lbl_sort_secondary.TabIndex = 2;
this.lbl_sort_secondary.Text = "Secondary Sort (e.g. Subject Name):";
//
// tbox_sort_primary
//
this.tbox_sort_primary.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.tbox_sort_primary.Location = new System.Drawing.Point(6, 79);
this.tbox_sort_primary.Name = "tbox_sort_primary";
this.tbox_sort_primary.Size = new System.Drawing.Size(341, 20);
this.tbox_sort_primary.TabIndex = 2;
//
// lbl_sort_primary
//
this.lbl_sort_primary.AutoSize = true;
@ -385,15 +604,18 @@ namespace photo_sorter
this.lbl_sort_primary.TabIndex = 0;
this.lbl_sort_primary.Text = "Primary Sort (e.g. Event Name):";
//
// statusStrip1
// status_bar
//
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.stat_last_action});
this.statusStrip1.Location = new System.Drawing.Point(0, 572);
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.Size = new System.Drawing.Size(1101, 22);
this.statusStrip1.TabIndex = 3;
this.statusStrip1.Text = "statusStrip1";
this.status_bar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.stat_last_action,
this.toolStripSpacer,
this.stat_bar_label,
this.pbar});
this.status_bar.Location = new System.Drawing.Point(0, 579);
this.status_bar.Name = "status_bar";
this.status_bar.Size = new System.Drawing.Size(1104, 22);
this.status_bar.TabIndex = 3;
this.status_bar.Text = "statusStrip1";
//
// stat_last_action
//
@ -402,6 +624,26 @@ namespace photo_sorter
this.stat_last_action.Text = "Program started";
this.stat_last_action.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
//
// toolStripSpacer
//
this.toolStripSpacer.Name = "toolStripSpacer";
this.toolStripSpacer.Size = new System.Drawing.Size(787, 17);
this.toolStripSpacer.Spring = true;
//
// stat_bar_label
//
this.stat_bar_label.Name = "stat_bar_label";
this.stat_bar_label.Size = new System.Drawing.Size(59, 17);
this.stat_bar_label.Text = "Loading...";
this.stat_bar_label.Visible = false;
//
// pbar
//
this.pbar.Name = "pbar";
this.pbar.Overflow = System.Windows.Forms.ToolStripItemOverflow.Always;
this.pbar.Padding = new System.Windows.Forms.Padding(0, 0, 8, 0);
this.pbar.Size = new System.Drawing.Size(208, 16);
//
// split_container_main
//
this.split_container_main.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@ -413,29 +655,31 @@ namespace photo_sorter
// split_container_main.Panel1
//
this.split_container_main.Panel1.Controls.Add(this.gbox_info);
this.split_container_main.Panel1MinSize = 128;
this.split_container_main.Panel1MinSize = 350;
//
// split_container_main.Panel2
//
this.split_container_main.Panel2.Controls.Add(this.gbox_preview);
this.split_container_main.Panel2MinSize = 256;
this.split_container_main.Size = new System.Drawing.Size(1077, 539);
this.split_container_main.SplitterDistance = 359;
this.split_container_main.Panel2MinSize = 640;
this.split_container_main.Size = new System.Drawing.Size(1080, 546);
this.split_container_main.SplitterDistance = 360;
this.split_container_main.TabIndex = 4;
//
// form_main
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(1101, 594);
this.Controls.Add(this.statusStrip1);
this.ClientSize = new System.Drawing.Size(1104, 601);
this.Controls.Add(this.status_bar);
this.Controls.Add(this.menuStrip1);
this.Controls.Add(this.split_container_main);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.MainMenuStrip = this.menuStrip1;
this.MinimumSize = new System.Drawing.Size(768, 480);
this.MinimumSize = new System.Drawing.Size(1040, 640);
this.Name = "form_main";
this.Text = "Skyfall Photo Sorter v0.1";
this.Text = "Skyfall Photo Sorter";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing);
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.gbox_preview.ResumeLayout(false);
@ -443,10 +687,15 @@ namespace photo_sorter
((System.ComponentModel.ISupportInitialize)(this.img_preview)).EndInit();
this.gbox_info.ResumeLayout(false);
this.gbox_info.PerformLayout();
this.tabctrl_sort_dir.ResumeLayout(false);
this.tab_primesort.ResumeLayout(false);
this.tab_secondsort.ResumeLayout(false);
this.gbox_photo_type.ResumeLayout(false);
this.gbox_photo_type.PerformLayout();
this.gbox_copybool.ResumeLayout(false);
this.gbox_copybool.PerformLayout();
this.statusStrip1.ResumeLayout(false);
this.statusStrip1.PerformLayout();
this.status_bar.ResumeLayout(false);
this.status_bar.PerformLayout();
this.split_container_main.Panel1.ResumeLayout(false);
this.split_container_main.Panel2.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.split_container_main)).EndInit();
@ -460,10 +709,10 @@ namespace photo_sorter
private System.Windows.Forms.MenuStrip menuStrip1;
private System.Windows.Forms.ToolStripMenuItem fileToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem openDirectoryToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem quitApplicationToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem tsi_openDirectory;
private System.Windows.Forms.ToolStripMenuItem tsi_quitApplication;
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem tsi_about;
private System.Windows.Forms.GroupBox gbox_preview;
private System.Windows.Forms.PictureBox img_preview;
private System.Windows.Forms.Button btn_next;
@ -475,11 +724,9 @@ namespace photo_sorter
private System.Windows.Forms.GroupBox gbox_copybool;
private System.Windows.Forms.RadioButton rad_sort_move;
private System.Windows.Forms.RadioButton rad_sort_copy;
private System.Windows.Forms.TextBox tbox_sort_secondary;
private System.Windows.Forms.Label lbl_sort_secondary;
private System.Windows.Forms.TextBox tbox_sort_primary;
private System.Windows.Forms.Label lbl_sort_primary;
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.StatusStrip status_bar;
private System.Windows.Forms.ToolStripStatusLabel stat_last_action;
private System.Windows.Forms.SplitContainer split_container_main;
private System.Windows.Forms.TextBox tbox_source_dir;
@ -488,9 +735,31 @@ namespace photo_sorter
private System.Windows.Forms.Button btn_open_dest_dir;
private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1;
private System.Windows.Forms.Button btn_open_src_dir;
private System.Windows.Forms.ToolStripMenuItem selectDestinationDirectoryToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem tsi_selectDestinationDirectory;
private System.Windows.Forms.Button btn_reload_src;
private System.Windows.Forms.Label lbl_counter;
private System.Windows.Forms.ToolStripStatusLabel toolStripSpacer;
private System.Windows.Forms.ToolStripProgressBar pbar;
private System.Windows.Forms.ToolStripStatusLabel stat_bar_label;
private System.Windows.Forms.GroupBox gbox_photo_type;
private System.Windows.Forms.RadioButton rad_nef;
private System.Windows.Forms.RadioButton rad_cr2;
private System.Windows.Forms.RadioButton rad_png;
private System.Windows.Forms.RadioButton rad_jpeg;
private System.Windows.Forms.RadioButton rad_dng;
private System.Windows.Forms.ToolStripMenuItem tsi_globalHotkeysList;
private System.Windows.Forms.ToolStripMenuItem tsi_enableGlobalHotkeys;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
private System.Windows.Forms.Button btn_delete;
private System.Windows.Forms.Button btn_prerender;
private System.Windows.Forms.ComboBox cbox_sort_secondary;
private System.Windows.Forms.ListBox lbox_secondary_sortlist;
private System.Windows.Forms.TabControl tabctrl_sort_dir;
private System.Windows.Forms.TabPage tab_primesort;
private System.Windows.Forms.ListBox lbox_primary_sortlist;
private System.Windows.Forms.TabPage tab_secondsort;
private System.Windows.Forms.ComboBox cbox_sort_primary;
}
}

@ -1,12 +1,15 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
//using System.Configuration;
//using System.Collections.Generic;
//using System.ComponentModel;
//using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//using System.Drawing.Drawing2D;
//using System.Linq;
//using System.Text;
//using System.Threading.Tasks;
using System.Windows.Forms;
using System.Collections;//.ArrayList;
using System.IO;
using ImageMagick;
@ -17,15 +20,67 @@ namespace photo_sorter
public form_main()
{
InitializeComponent();
switch (Properties.Settings.Default.img_format)
{
case "nef":
rad_nef.Checked = true;
break;
case "cr2":
rad_cr2.Checked = true;
break;
case "dng":
rad_dng.Checked = true;
break;
case "jpg":
rad_jpeg.Checked = true;
break;
case "png":
rad_png.Checked = true;
break;
default:
rad_nef.Checked = true;
break;
}
if (Properties.Settings.Default.global_hotkeys)
tsi_enableGlobalHotkeys.Checked = true;
else
tsi_enableGlobalHotkeys.Checked = false;
if (Properties.Settings.Default.copy_on_sort)
{
rad_sort_copy.Checked = true;
}
else
{
rad_sort_move.Checked = true;
}
tbox_dest_dir.Text = Properties.Settings.Default.dest_dir;
tbox_source_dir.Text = Properties.Settings.Default.src_dir;
if (Directory.Exists(tbox_source_dir.Text))
{
btn_reload_src.Enabled = true;
reload_source();
}
if (Properties.Settings.Default.cbi_primary != null)
{
cbox_sort_primary.Items.AddRange(Properties.Settings.Default.cbi_primary.ToArray());
}
if (Properties.Settings.Default.cbi_secondary != null)
{
cbox_sort_secondary.Items.AddRange(Properties.Settings.Default.cbi_secondary.ToArray());
}
}
static class global
{
public static string dest = "";
public static string src;
public static string dest = Properties.Settings.Default.dest_dir;
public static string src = Properties.Settings.Default.src_dir;
public static string[] filenames;
public static int filecount;
public static int position = 0;
public static int position = 0; //File position index
public const int cbox_size = 8; //Number of entries allowed in cbox lists
}
public void status_msg(string msg, int lvl = 1)
@ -54,6 +109,7 @@ namespace photo_sorter
break;
}
stat_last_action.Text = mtype + ": " + msg;
status_bar.Update();
}
private void update_counter()
@ -66,12 +122,12 @@ namespace photo_sorter
global.filenames = populate_file_names();
global.filecount = global.filenames.Length;
global.position = 0;
status_msg("Source directory updated, found " + global.filecount.ToString() + " images");
if (global.filecount > 0)
{
gbox_preview.Enabled = true;
lbl_counter.Text = (global.position + 1).ToString() + " of " + global.filecount.ToString();
update_image();
status_msg("Source directory updated, found " + global.filecount.ToString() + " images");
}
else
{
@ -80,13 +136,54 @@ namespace photo_sorter
}
}
private void populate_directory_lists()
{
//Exit if no destination directory selected
if (global.dest.Length < 1)
{
return;
}
lbox_primary_sortlist.Items.Clear();
foreach (var d in Directory.GetDirectories(global.dest))
{
var dir = new DirectoryInfo(d).Name;
lbox_primary_sortlist.Items.Add(dir);
}
if (cbox_sort_primary.Text.Length > 0)
{
if (Directory.Exists(global.dest + "\\" + cbox_sort_primary.Text))
{
lbox_secondary_sortlist.Items.Clear();
foreach (var d in Directory.GetDirectories(global.dest + "\\" + cbox_sort_primary.Text))
{
var dir = new DirectoryInfo(d).Name;
lbox_secondary_sortlist.Items.Add(dir);
}
}
lbox_secondary_sortlist.Enabled = true;
}
else
{
lbox_secondary_sortlist.Items.Clear();
lbox_secondary_sortlist.Items.Add("-- Select Primary Sort --");
lbox_secondary_sortlist.Enabled = false;
}
}
private void select_source_dir()
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
global.src = folderBrowserDialog1.SelectedPath;
tbox_source_dir.Text = global.src;
status_msg("Opening source directory: " + global.src);
btn_reload_src.Enabled = true;
if (Properties.Settings.Default.src_dir != global.src)
{
Properties.Settings.Default.src_dir = global.src;
//Properties.Settings.Default.Save();
}
reload_source();
}
}
@ -97,6 +194,11 @@ namespace photo_sorter
{
global.dest = folderBrowserDialog1.SelectedPath;
tbox_dest_dir.Text = global.dest;
if (Properties.Settings.Default.dest_dir != global.dest)
{
Properties.Settings.Default.dest_dir = global.dest;
//Properties.Settings.Default.Save();
}
status_msg("Destination directory updated");
}
}
@ -112,38 +214,93 @@ namespace photo_sorter
}
else
{
pbar.Value = 6;
pbar.Value -= 1; // This 'hack' forces an instant progress bar update
stat_bar_label.Text = "Getting file info...";
stat_bar_label.Visible = true;
if (global.filecount <= 1)
{
btn_next.Enabled = false;
btn_prev.Enabled = false;
}
else
{
btn_next.Enabled = true;
btn_prev.Enabled = true;
}
status_bar.Refresh();
fname = global.filenames[global.position];
/*Image img;
using (var bmp = new Bitmap(fname))
{
img = new Bitmap(bmp);
}*/
//var profile = fname.GetProfile("dng:thumbnail");
using (var jpegThumbnail = new MagickImage(fname))
{
// Correct the image orientation
jpegThumbnail.AutoOrient();
//Image img = jpegThumbnail.Write();
jpegThumbnail.Write(global.dest + "\\.tmp.jpg");
}
pbar.Value += 5;
stat_bar_label.Text = "Allocating memory...";
status_bar.Refresh();
Image img;
using (var bmp = new Bitmap(global.dest + "\\.tmp.jpg"))
using (MemoryStream img_stream = new MemoryStream())
{
img = new Bitmap(bmp);
pbar.Value += 10;
lbl_current_fname.Text = "Loading: " + Path.GetFileName(fname);
//img_preview.Image = ToolStripRenderer.CreateDisabledImage(img_preview.Image); //Grey out image (affects performance negatively)
img_preview.Visible = false;
gbox_preview.Enabled = false;
pbar.Value += 10;
stat_bar_label.Text = "Analyzing image...";
status_bar.Refresh();
// Convert RAW file to JPEG in memory
using (var raw_img = new MagickImage(fname))
{
if (raw_img != null)
{
pbar.Value += 50;
raw_img.AutoOrient();
img_stream.Position = 0;
raw_img.Write(img_stream, ImageMagick.MagickFormat.Jpeg);
//raw_img.Write(img_stream, ImageMagick.MagickFormat.Png);
pbar.Value += 15;
stat_bar_label.Text = "Generating preview...";
status_bar.Refresh();
}
}
img_stream.Position = 0;
using (var bmp = new Bitmap(img_stream))
{
img = new Bitmap(bmp);
}
pbar.Value -= 1;
pbar.Value += 6;
//pbar.Value -= 1;
}
img_preview.Image = img;
//img_preview.Image = jpegThumbnail;
stat_bar_label.Text = "Done!";
img_preview.Visible = true;
gbox_preview.Enabled = true;
stat_bar_label.Visible = false;
GC.Collect();
GC.WaitForPendingFinalizers();
}
lbl_current_fname.Text = Path.GetFileName(fname);
if (global.filecount > 0)
status_msg("Loaded image: " + lbl_current_fname.Text);
update_counter();
pbar.Value = 0;
populate_directory_lists();
}
public string[] populate_file_names()
{
string[] files = Directory.GetFiles(global.src, "*.nef");
string ext = "";
if (rad_nef.Checked)
ext = "nef";
if (rad_cr2.Checked)
ext = "cr2";
if (rad_dng.Checked)
ext = "dng";
if (rad_jpeg.Checked)
ext = "jpg";
if (rad_png.Checked)
ext = "png";
string[] files = Directory.GetFiles(global.src, "*." + ext);
return files;
}
@ -161,58 +318,53 @@ namespace photo_sorter
}
}
//
// UI Interactions
//
///////////////////////////////////////////////////////
private void btn_open_dir_Click(object sender, EventArgs e)
protected override bool ProcessCmdKey(ref Message msg, Keys key_data)
{
select_dest_dir();
}
private void openDirectoryToolStripMenuItem_Click(object sender, EventArgs e)
{
select_source_dir();
}
private void selectDestinationDirectoryToolStripMenuItem_Click(object sender, EventArgs e)
{
select_dest_dir();
}
private void quitApplicationToolStripMenuItem_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Are you sure you want to quit the Photo Sorter application?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
if (tsi_enableGlobalHotkeys.Checked)
{
this.Close();
switch (key_data)
{
case Keys.PageUp:
if (global.filecount > 1)
prev_image();
return true;
case Keys.PageDown:
if (global.filecount > 1)
next_image();
return true;
case Keys.Control | Keys.Home:
if (global.filecount > 1)
{
status_msg("Loading first image...");
global.position = 0;
update_image();
}
return true;
case Keys.Control | Keys.End:
if (global.filecount > 1)
{
status_msg("Loading final image...");
global.position = global.filecount - 1;
update_image();
}
return true;
case Keys.Enter:
sort_image();
return true;
case Keys.Shift | Keys.Delete:
delete_image();
return true;
case Keys.Shift | Keys.Enter:
delete_image();
return true;
}
}
return base.ProcessCmdKey(ref msg, key_data);
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("This application is Copyright Skyfall Tech, 2022.\n\nPlease visit https://www.skyfall.tech/ for more information.");
}
private void btn_open_src_dir_Click(object sender, EventArgs e)
{
select_source_dir();
}
private void btn_prev_Click(object sender, EventArgs e)
{
if (global.position > 0)
{
global.position -= 1;
}
else
{
global.position = global.filecount - 1;
}
update_image();
}
private void btn_next_Click(object sender, EventArgs e)
public void next_image()
{
status_msg("Loading next image...");
if (global.position < global.filecount - 1)
{
global.position += 1;
@ -224,10 +376,24 @@ namespace photo_sorter
update_image();
}
private void btn_sort_Click(object sender, EventArgs e)
public void prev_image()
{
string prim_dir = global.dest + '\\' + tbox_sort_primary.Text;
string sec_dir = prim_dir + '\\' + tbox_sort_secondary.Text;
status_msg("Loading previous image...");
if (global.position > 0)
{
global.position -= 1;
}
else
{
global.position = global.filecount - 1;
}
update_image();
}
public void sort_image()
{
string prim_dir = global.dest + '\\' + cbox_sort_primary.Text;
string sec_dir = prim_dir + '\\' + cbox_sort_secondary.Text;
string dpath;
if (global.dest == "")
@ -238,14 +404,14 @@ namespace photo_sorter
return;
}
if (tbox_sort_primary.Text == "")
if (cbox_sort_primary.Text == "")
{
status_msg("Primary sort field required to sort!",3);
status_msg("Primary sort field required to sort!", 3);
//System.Media.SystemSounds.Exclamation.Play();
//MessageBox.Show("Primary sort directory name is required!", "Error: Primary Sort", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
if (tbox_sort_secondary.Text == "")
if (cbox_sort_secondary.Text == "")
{
dpath = prim_dir;
}
@ -282,7 +448,6 @@ namespace photo_sorter
}
}
File.Move(@src_fname, @dst_fname);
//status_msg("Moved " + lbl_current_fname.Text + " to " + dpath);
status_msg("Moved " + global.filenames[global.position] + " to " + dpath);
remove_index(global.position);
update_image();
@ -321,25 +486,221 @@ namespace photo_sorter
status_msg("Unable to copy " + global.filenames[global.position] + " to " + dpath + "!", 4);
MessageBox.Show(ex.ToString(), "Critical: IO Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
// Begin Update comboboxes
if (cbox_sort_primary.Items.Contains(cbox_sort_primary.Text))
{
//Remove and re-add, to put it at the new end of the list
string t = cbox_sort_primary.Text;
cbox_sort_primary.Items.Remove(t);
cbox_sort_primary.Items.Add(t);
cbox_sort_primary.Text = t;
}
else
{
cbox_sort_primary.Items.Add(cbox_sort_primary.Text);
}
if (cbox_sort_secondary.Text.Length > 0)
{
if (cbox_sort_secondary.Items.Contains(cbox_sort_secondary.Text))
{
//Remove and re-add, to put it at the new end of the list
string t = cbox_sort_secondary.Text;
cbox_sort_secondary.Items.Remove(t);
cbox_sort_secondary.Items.Add(t);
cbox_sort_secondary.Text = t;
}
else
{
cbox_sort_secondary.Items.Add(cbox_sort_secondary.Text);
}
}
//Prune the lists
while (cbox_sort_primary.Items.Count > global.cbox_size)
{
cbox_sort_primary.Items.RemoveAt(0);
}
while (cbox_sort_secondary.Items.Count > global.cbox_size)
{
cbox_sort_secondary.Items.RemoveAt(0);
}
// End combobox updating
}
}
public void delete_image()
{
if (MessageBox.Show("Are you sure you want to delete this photo?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
string src_fname = global.filenames[global.position];
try
{
File.Delete(src_fname);
status_msg("Deleted file: " + src_fname, 2);
remove_index(global.position);
update_image();
}
catch (IOException ex)
{
status_msg("Unable to delete " + src_fname + "!", 4);
MessageBox.Show(ex.ToString(), "Critical: IO Exception", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
public void prerender_init()
{
if (MessageBox.Show("WARNING: Pre-rendering your photos may take a long time, and the preview image quality will be lower than normal.\n\nWould you like to proceed?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
MessageBox.Show("Pre-rendering would normally have started, but instead, nothing interesting happens.");
}
else
{
MessageBox.Show("You've chickened out and abandoned the pre-render process. Nothing interesting happens.");
}
}
//
// UI Interactions
//
///////////////////////////////////////////////////////
private void btn_open_dir_Click(object sender, EventArgs e)
{
select_dest_dir();
}
private void openDirectoryToolStripMenuItem_Click(object sender, EventArgs e)
{
select_source_dir();
}
private void selectDestinationDirectoryToolStripMenuItem_Click(object sender, EventArgs e)
{
select_dest_dir();
}
private void quitApplicationToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox.Show("Photo Sorter v1.0.2\n\nThis application is Copyright \u00A9 Aaron Johnson, 2023.\n\nPlease visit https://www.skyfall.tech/ for more information.");
}
private void btn_open_src_dir_Click(object sender, EventArgs e)
{
select_source_dir();
}
private void btn_prev_Click(object sender, EventArgs e)
{
prev_image();
}
private void btn_next_Click(object sender, EventArgs e)
{
next_image();
}
private void btn_sort_Click(object sender, EventArgs e)
{
sort_image();
}
private void btn_reload_src_Click(object sender, EventArgs e)
{
reload_source();
}
private void globalHotkeysListToolStripMenuItem_Click(object sender, EventArgs e)
{
MessageBox .Show("Global Hotkeys\n\nPgUp == Previous image\nPgDn == Next image\nCtrl + Home == Go to first unsorted image\nCtrl + End == Go to final unsorted image\n\nEnter == Sort photo to current options\n\nShift + Delete OR Shift + Enter == Delete image\n");
}
/*private void Form1_FormClosing(Object sender, FormClosingEventArgs e)
private void tsi_enableGlobalHotkeys_Click(object sender, EventArgs e)
{
if (tsi_enableGlobalHotkeys.Checked)
Properties.Settings.Default.global_hotkeys = true;
else
Properties.Settings.Default.global_hotkeys = false;
Properties.Settings.Default.Save();
}
private void btn_delete_Click(object sender, EventArgs e)
{
delete_image();
}
private void btn_prerender_Click(object sender, EventArgs e)
{
prerender_init();
}
private void cbox_sortfields_Leave(object sender, EventArgs e)
{
populate_directory_lists();
}
private void cbox_sort_primary_Enter(object sender, EventArgs e)
{
populate_directory_lists();
tabctrl_sort_dir.SelectedTab = tabctrl_sort_dir.TabPages["tab_primesort"];
cbox_sort_primary.Focus();
}
private void cbox_sort_secondary_Enter(object sender, EventArgs e)
{
//if (cbox_sort_primary.Text.Length > 0)
//{
populate_directory_lists();
tabctrl_sort_dir.SelectedTab = tabctrl_sort_dir.TabPages["tab_secondsort"];
cbox_sort_secondary.Focus();
//}
}
private void lbox_primary_sortlist_SelectItem(object sender, EventArgs e)
{
cbox_sort_primary.Text = lbox_primary_sortlist.SelectedItem.ToString();
populate_directory_lists();
}
private void lbox_secondary_sortlist_SelectItem(object sender, EventArgs e)
{
cbox_sort_secondary.Text = lbox_secondary_sortlist.SelectedItem.ToString();
}
private void Form1_FormClosing(Object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("Are you sure you want to quit the Photo Sorter application?", "Question", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
this.Close();
ArrayList cbi_primary = new ArrayList(this.cbox_sort_primary.Items);
ArrayList cbi_secondary = new ArrayList(this.cbox_sort_secondary.Items);
Properties.Settings.Default.cbi_primary = cbi_primary;
Properties.Settings.Default.cbi_secondary = cbi_secondary;
if (rad_sort_copy.Checked)
{
Properties.Settings.Default.copy_on_sort = true;
}
else
{
Properties.Settings.Default.copy_on_sort = false;
}
string ext = "";
if (rad_nef.Checked)
ext = "nef";
if (rad_cr2.Checked)
ext = "cr2";
if (rad_dng.Checked)
ext = "dng";
if (rad_jpeg.Checked)
ext = "jpg";
if (rad_png.Checked)
ext = "png";
Properties.Settings.Default.img_format = ext;
Properties.Settings.Default.Save();
}
else
{
e.Cancel = true;
}
}*/
}
}
}

File diff suppressed because it is too large Load Diff

@ -1,16 +1,17 @@
using System.Reflection;
using System.Resources;
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("photo_sorter")]
[assembly: AssemblyTitle("Photo Sorter")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("photo_sorter")]
[assembly: AssemblyCopyright("Copyright © 2022")]
[assembly: AssemblyCompany("Skyfall Tech")]
[assembly: AssemblyProduct("Photo Sorter")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -32,5 +33,6 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyVersion("1.0.2.1")]
[assembly: AssemblyFileVersion("1.0.2.1")]
[assembly: NeutralResourcesLanguage("en")]

@ -8,22 +8,101 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace photo_sorter.Properties
{
namespace photo_sorter.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
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.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
{
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("True")]
public bool global_hotkeys {
get {
return ((bool)(this["global_hotkeys"]));
}
set {
this["global_hotkeys"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string src_dir {
get {
return ((string)(this["src_dir"]));
}
set {
this["src_dir"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string dest_dir {
get {
return ((string)(this["dest_dir"]));
}
set {
this["dest_dir"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool copy_on_sort {
get {
return ((bool)(this["copy_on_sort"]));
}
set {
this["copy_on_sort"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("nef")]
public string img_format {
get {
return ((string)(this["img_format"]));
}
set {
this["img_format"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public global::System.Collections.ArrayList cbi_primary {
get {
return ((global::System.Collections.ArrayList)(this["cbi_primary"]));
}
set {
this["cbi_primary"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public global::System.Collections.ArrayList cbi_secondary {
get {
return ((global::System.Collections.ArrayList)(this["cbi_secondary"]));
}
set {
this["cbi_secondary"] = value;
}
}
}
}

@ -1,7 +1,27 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="photo_sorter.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="global_hotkeys" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">True</Value>
</Setting>
<Setting Name="src_dir" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="dest_dir" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="copy_on_sort" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="img_format" Type="System.String" Scope="User">
<Value Profile="(Default)">nef</Value>
</Setting>
<Setting Name="cbi_primary" Type="System.Collections.ArrayList" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="cbi_secondary" Type="System.Collections.ArrayList" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Magick.NET.Core" version="12.2.1" targetFramework="net472" />
<package id="Magick.NET-Q16-AnyCPU" version="12.2.1" targetFramework="net472" />
<package id="Magick.NET.Core" version="12.2.2" targetFramework="net472" />
<package id="Magick.NET-Q16-x64" version="12.2.2" targetFramework="net472" />
</packages>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1,40 +0,0 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' OR '$(MagickCopyNativeWindows)' == 'true'">
<NativeWindowsDLL Include="$(MSBuildThisFileDirectory)\..\..\runtimes\win*\native\*.dll" />
<Content Include="@(NativeWindowsDLL)">
<Link>%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="'$(MagickCopyNativeLinux)' == 'true'">
<NativeLinuxDLL Include="$(MSBuildThisFileDirectory)\..\..\runtimes\linux-x64\native\*.so" />
<Content Include="@(NativeLinuxDLL)">
<Link>%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<NativeLinuxArm64DLL Include="$(MSBuildThisFileDirectory)\..\..\runtimes\linux-arm64\native\*.so" />
<Content Include="@(NativeLinuxArm64DLL)">
<Link>%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="'$(MagickCopyNativeLinuxMusl)' == 'true'">
<NativeLinuxMuslDLL Include="$(MSBuildThisFileDirectory)\..\..\runtimes\linux-musl-x64\native\*.so" />
<Content Include="@(NativeLinuxMuslDLL)">
<Link>%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup Condition="'$(MagickCopyNativeMacOS)' == 'true'">
<NativeMacOSDLL Include="$(MSBuildThisFileDirectory)\..\..\runtimes\osx-x64\native\*.dylib" />
<Content Include="@(NativeMacOSDLL)">
<Link>%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<NativeMacOSArm64DLL Include="$(MSBuildThisFileDirectory)\..\..\runtimes\osx-arm64\native\*.dylib" />
<Content Include="@(NativeMacOSArm64DLL)">
<Link>%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>

Binary file not shown.

@ -1,2 +0,0 @@
Copyright Dirk Lemstra https://github.com/dlemstra/Magick.NET.
Licensed under the Apache License, Version 2.0.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -14,6 +14,7 @@
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
@ -24,9 +25,8 @@
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>0.1.1.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<ApplicationRevision>1</ApplicationRevision>
<ApplicationVersion>1.0.2.1</ApplicationVersion>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
@ -42,7 +42,7 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<PlatformTarget>x64</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
@ -53,15 +53,35 @@
<PropertyGroup>
<ApplicationIcon>skyfall_logo_roulette_white001.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="Magick.NET-Q16-AnyCPU, Version=12.2.0.0, Culture=neutral, PublicKeyToken=2004825badfa91ec, processorArchitecture=MSIL">
<HintPath>packages\Magick.NET-Q16-AnyCPU.12.2.1\lib\netstandard20\Magick.NET-Q16-AnyCPU.dll</HintPath>
<Reference Include="Magick.NET-Q16-x64, Version=12.2.0.0, Culture=neutral, PublicKeyToken=2004825badfa91ec, processorArchitecture=AMD64">
<HintPath>packages\Magick.NET-Q16-x64.12.2.2\lib\netstandard20\Magick.NET-Q16-x64.dll</HintPath>
</Reference>
<Reference Include="Magick.NET.Core, Version=12.2.0.0, Culture=neutral, PublicKeyToken=2004825badfa91ec, processorArchitecture=MSIL">
<HintPath>packages\Magick.NET.Core.12.2.1\lib\netstandard20\Magick.NET.Core.dll</HintPath>
<HintPath>packages\Magick.NET.Core.12.2.2\lib\netstandard20\Magick.NET.Core.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.DirectoryServices" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
@ -123,11 +143,11 @@
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="packages\Magick.NET-Q16-AnyCPU.12.2.1\build\netstandard20\Magick.NET-Q16-AnyCPU.targets" Condition="Exists('packages\Magick.NET-Q16-AnyCPU.12.2.1\build\netstandard20\Magick.NET-Q16-AnyCPU.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('packages\Magick.NET-Q16-AnyCPU.12.2.1\build\netstandard20\Magick.NET-Q16-AnyCPU.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Magick.NET-Q16-AnyCPU.12.2.1\build\netstandard20\Magick.NET-Q16-AnyCPU.targets'))" />
<Error Condition="!Exists('packages\Magick.NET-Q16-x64.12.2.2\build\netstandard20\Magick.NET-Q16-x64.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Magick.NET-Q16-x64.12.2.2\build\netstandard20\Magick.NET-Q16-x64.targets'))" />
</Target>
<Import Project="packages\Magick.NET-Q16-x64.12.2.2\build\netstandard20\Magick.NET-Q16-x64.targets" Condition="Exists('packages\Magick.NET-Q16-x64.12.2.2\build\netstandard20\Magick.NET-Q16-x64.targets')" />
</Project>

@ -8,13 +8,19 @@ EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{68A4768D-35D5-4F22-98C8-0B7CD754E0CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{68A4768D-35D5-4F22-98C8-0B7CD754E0CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{68A4768D-35D5-4F22-98C8-0B7CD754E0CE}.Debug|Any CPU.ActiveCfg = Release|Any CPU
{68A4768D-35D5-4F22-98C8-0B7CD754E0CE}.Debug|Any CPU.Build.0 = Release|Any CPU
{68A4768D-35D5-4F22-98C8-0B7CD754E0CE}.Debug|x64.ActiveCfg = Debug|x64
{68A4768D-35D5-4F22-98C8-0B7CD754E0CE}.Debug|x64.Build.0 = Debug|x64
{68A4768D-35D5-4F22-98C8-0B7CD754E0CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{68A4768D-35D5-4F22-98C8-0B7CD754E0CE}.Release|Any CPU.Build.0 = Release|Any CPU
{68A4768D-35D5-4F22-98C8-0B7CD754E0CE}.Release|x64.ActiveCfg = Release|x64
{68A4768D-35D5-4F22-98C8-0B7CD754E0CE}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE

Loading…
Cancel
Save