autoload project file if it exists
This commit is contained in:
		@@ -301,6 +301,7 @@ namespace PDFWorkflowManager
 | 
				
			|||||||
                { }
 | 
					                { }
 | 
				
			||||||
                txtProjectDir.ReadOnly = true;
 | 
					                txtProjectDir.ReadOnly = true;
 | 
				
			||||||
                checkSimplex.Enabled = true;
 | 
					                checkSimplex.Enabled = true;
 | 
				
			||||||
 | 
					                AutoLoadProjectIfExists();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            check_input_dir();
 | 
					            check_input_dir();
 | 
				
			||||||
@@ -732,10 +733,10 @@ namespace PDFWorkflowManager
 | 
				
			|||||||
                TiffToPdfConverter tiffConverter = new TiffToPdfConverter
 | 
					                TiffToPdfConverter tiffConverter = new TiffToPdfConverter
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    // MaxDegreeOfParallelism = trackBarCores.Value // slider to select cores
 | 
					                    // MaxDegreeOfParallelism = trackBarCores.Value // slider to select cores
 | 
				
			||||||
                    MaxDegreeOfParallelism = 8 // slider to select cores
 | 
					                    MaxDegreeOfParallelism = 20 // slider to select cores
 | 
				
			||||||
                };
 | 
					                };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                string outputPdfFileName = "output.pdf"; // saved in project folder
 | 
					                string outputPdfFileName = Path.Combine(txtProjectDir.Text + txtFileName.Text); // saved in project folder
 | 
				
			||||||
                await tiffConverter.ConvertTiffToPdfWithOcrAsync(
 | 
					                await tiffConverter.ConvertTiffToPdfWithOcrAsync(
 | 
				
			||||||
                    workOutDir,
 | 
					                    workOutDir,
 | 
				
			||||||
                    outputPdfFileName,
 | 
					                    outputPdfFileName,
 | 
				
			||||||
@@ -1272,47 +1273,84 @@ namespace PDFWorkflowManager
 | 
				
			|||||||
                if (openFileDialog.ShowDialog() == DialogResult.OK)
 | 
					                if (openFileDialog.ShowDialog() == DialogResult.OK)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    string selectedFile = openFileDialog.FileName;
 | 
					                    string selectedFile = openFileDialog.FileName;
 | 
				
			||||||
                    var lines = File.ReadAllLines(selectedFile);
 | 
					                    LoadProjectFromFile(selectedFile);
 | 
				
			||||||
                    var dict = new Dictionary<string, string>();
 | 
					 | 
				
			||||||
                    foreach (var line in lines)
 | 
					 | 
				
			||||||
                    {
 | 
					 | 
				
			||||||
                        var parts = line.Split(new[] { '=' }, 2);
 | 
					 | 
				
			||||||
                        if (parts.Length == 2)
 | 
					 | 
				
			||||||
                            dict[parts[0]] = parts[1];
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    txtFileName.Text = dict.ContainsKey("FileName") ? dict["FileName"] : "";
 | 
					 | 
				
			||||||
                    txtTitle.Text = dict.ContainsKey("Title") ? dict["Title"] : "";
 | 
					 | 
				
			||||||
                    cmbLanguage.SelectedIndex = cmbLanguage.FindStringExact(dict.ContainsKey("Language") ? dict["Language"] : "");
 | 
					 | 
				
			||||||
                    txtLanguages.Text = dict.ContainsKey("Languages") ? dict["Languages"] : "";
 | 
					 | 
				
			||||||
                    txtType.Text = dict.ContainsKey("Type") ? dict["Type"] : "";
 | 
					 | 
				
			||||||
                    txtPublisher.Text = dict.ContainsKey("Publisher") ? dict["Publisher"] : "";
 | 
					 | 
				
			||||||
                    txtAuthor.Text = dict.ContainsKey("Author") ? dict["Author"] : "";
 | 
					 | 
				
			||||||
                    txtISBN.Text = dict.ContainsKey("ISBN") ? dict["ISBN"] : "";
 | 
					 | 
				
			||||||
                    txtDate.Text = dict.ContainsKey("Date") ? dict["Date"] : "";
 | 
					 | 
				
			||||||
                    txtPageCount.Text = dict.ContainsKey("PageCount") ? dict["PageCount"] : "";
 | 
					 | 
				
			||||||
                    cmbResolution.SelectedIndex = cmbResolution.FindStringExact(dict.ContainsKey("Resolution") ? dict["Resolution"] : "");
 | 
					 | 
				
			||||||
                    checkPhotocopy.Checked = dict.ContainsKey("Photocopy") ? dict["Photocopy"] == "True" : false;
 | 
					 | 
				
			||||||
                    checkReplace.Checked = dict.ContainsKey("Replace") ? dict["Replace"] == "True" : false;
 | 
					 | 
				
			||||||
                    txtPartnumber.Text = dict.ContainsKey("Partnumber") ? dict["Partnumber"] : "";
 | 
					 | 
				
			||||||
                    if (int.TryParse(dict.ContainsKey("Quality") ? dict["Quality"] : "4", out int quality))
 | 
					 | 
				
			||||||
                        trackBar1.Value = Math.Max(trackBar1.Minimum, Math.Min(trackBar1.Maximum, quality));
 | 
					 | 
				
			||||||
                    txtContributor.Text = dict.ContainsKey("Contributor") ? dict["Contributor"] : "";
 | 
					 | 
				
			||||||
                    txtContributorURL.Text = dict.ContainsKey("ContributorURL") ? dict["ContributorURL"] : "";
 | 
					 | 
				
			||||||
                    txtPostProcessor.Text = dict.ContainsKey("PostProcessor") ? dict["PostProcessor"] : "";
 | 
					 | 
				
			||||||
                    txtTimeSpent.Text = dict.ContainsKey("TimeSpent") ? dict["TimeSpent"] : "";
 | 
					 | 
				
			||||||
                    txtPDFAuthor.Text = dict.ContainsKey("PDFMetaAuthor") ? dict["PDFMetaAuthor"] : "";
 | 
					 | 
				
			||||||
                    txtPDFKeywords.Text = dict.ContainsKey("PDFKeywords") ? dict["PDFKeywords"] : "";
 | 
					 | 
				
			||||||
                    cmbBanner.SelectedIndex = cmbBanner.FindStringExact(dict.ContainsKey("Banner") ? dict["Banner"] : "");
 | 
					 | 
				
			||||||
                    chkMagazines.Checked = dict.ContainsKey("Magazine") ? dict["Magazine"] == "True" : false;
 | 
					 | 
				
			||||||
                    checkSimplex.Checked = dict.ContainsKey("Simplex") ? dict["Simplex"] == "True" : false;
 | 
					 | 
				
			||||||
                    txtProjectDir.Text = dict.ContainsKey("ProjectDir") ? dict["ProjectDir"] : "";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    MessageBox.Show("Loaded file: " + selectedFile, "File Loaded", MessageBoxButtons.OK, MessageBoxIcon.Information);
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void LoadProjectFromFile(string filePath)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            var lines = File.ReadAllLines(filePath);
 | 
				
			||||||
 | 
					            var dict = new Dictionary<string, string>();
 | 
				
			||||||
 | 
					            foreach (var line in lines)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                var parts = line.Split(new[] { '=' }, 2);
 | 
				
			||||||
 | 
					                if (parts.Length == 2)
 | 
				
			||||||
 | 
					                    dict[parts[0]] = parts[1];
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            txtFileName.Text = dict.ContainsKey("FileName") ? dict["FileName"] : "";
 | 
				
			||||||
 | 
					            txtTitle.Text = dict.ContainsKey("Title") ? dict["Title"] : "";
 | 
				
			||||||
 | 
					            cmbLanguage.SelectedIndex = cmbLanguage.FindStringExact(dict.ContainsKey("Language") ? dict["Language"] : "");
 | 
				
			||||||
 | 
					            txtLanguages.Text = dict.ContainsKey("Languages") ? dict["Languages"] : "";
 | 
				
			||||||
 | 
					            txtType.Text = dict.ContainsKey("Type") ? dict["Type"] : "";
 | 
				
			||||||
 | 
					            txtPublisher.Text = dict.ContainsKey("Publisher") ? dict["Publisher"] : "";
 | 
				
			||||||
 | 
					            txtAuthor.Text = dict.ContainsKey("Author") ? dict["Author"] : "";
 | 
				
			||||||
 | 
					            txtISBN.Text = dict.ContainsKey("ISBN") ? dict["ISBN"] : "";
 | 
				
			||||||
 | 
					            txtDate.Text = dict.ContainsKey("Date") ? dict["Date"] : "";
 | 
				
			||||||
 | 
					            txtPageCount.Text = dict.ContainsKey("PageCount") ? dict["PageCount"] : "";
 | 
				
			||||||
 | 
					            cmbResolution.SelectedIndex = cmbResolution.FindStringExact(dict.ContainsKey("Resolution") ? dict["Resolution"] : "");
 | 
				
			||||||
 | 
					            checkPhotocopy.Checked = dict.ContainsKey("Photocopy") ? dict["Photocopy"] == "True" : false;
 | 
				
			||||||
 | 
					            checkReplace.Checked = dict.ContainsKey("Replace") ? dict["Replace"] == "True" : false;
 | 
				
			||||||
 | 
					            txtPartnumber.Text = dict.ContainsKey("Partnumber") ? dict["Partnumber"] : "";
 | 
				
			||||||
 | 
					            if (int.TryParse(dict.ContainsKey("Quality") ? dict["Quality"] : "4", out int quality))
 | 
				
			||||||
 | 
					                trackBar1.Value = Math.Max(trackBar1.Minimum, Math.Min(trackBar1.Maximum, quality));
 | 
				
			||||||
 | 
					            txtContributor.Text = dict.ContainsKey("Contributor") ? dict["Contributor"] : "";
 | 
				
			||||||
 | 
					            txtContributorURL.Text = dict.ContainsKey("ContributorURL") ? dict["ContributorURL"] : "";
 | 
				
			||||||
 | 
					            txtPostProcessor.Text = dict.ContainsKey("PostProcessor") ? dict["PostProcessor"] : "";
 | 
				
			||||||
 | 
					            txtTimeSpent.Text = dict.ContainsKey("TimeSpent") ? dict["TimeSpent"] : "";
 | 
				
			||||||
 | 
					            txtPDFAuthor.Text = dict.ContainsKey("PDFMetaAuthor") ? dict["PDFMetaAuthor"] : "";
 | 
				
			||||||
 | 
					            txtPDFKeywords.Text = dict.ContainsKey("PDFKeywords") ? dict["PDFKeywords"] : "";
 | 
				
			||||||
 | 
					            cmbBanner.SelectedIndex = cmbBanner.FindStringExact(dict.ContainsKey("Banner") ? dict["Banner"] : "");
 | 
				
			||||||
 | 
					            chkMagazines.Checked = dict.ContainsKey("Magazine") ? dict["Magazine"] == "True" : false;
 | 
				
			||||||
 | 
					            checkSimplex.Checked = dict.ContainsKey("Simplex") ? dict["Simplex"] == "True" : false;
 | 
				
			||||||
 | 
					            txtProjectDir.Text = dict.ContainsKey("ProjectDir") ? dict["ProjectDir"] : "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            MessageBox.Show("Loaded file: " + filePath, "File Loaded", MessageBoxButtons.OK, MessageBoxIcon.Information);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        private void AutoLoadProjectIfExists()
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            try
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                string projectDir = txtProjectDir.Text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (string.IsNullOrWhiteSpace(projectDir) || !Directory.Exists(projectDir))
 | 
				
			||||||
 | 
					                    return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var projFiles = Directory.GetFiles(projectDir, "*.pdfproj", SearchOption.TopDirectoryOnly);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (projFiles.Length == 0)
 | 
				
			||||||
 | 
					                    return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                var latestProjFile = projFiles
 | 
				
			||||||
 | 
					                    .Select(f => new FileInfo(f))
 | 
				
			||||||
 | 
					                    .OrderByDescending(fi => fi.LastWriteTime)
 | 
				
			||||||
 | 
					                    .First()
 | 
				
			||||||
 | 
					                    .FullName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                LoadProjectFromFile(latestProjFile);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            catch (Exception ex)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                MessageBox.Show($"Error while auto-loading project: {ex.Message}",
 | 
				
			||||||
 | 
					                    "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private void saveToolStripMenuItem_Click(object sender, EventArgs e)
 | 
					        private void saveToolStripMenuItem_Click(object sender, EventArgs e)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            using (SaveFileDialog saveFileDialog = new SaveFileDialog())
 | 
					            using (SaveFileDialog saveFileDialog = new SaveFileDialog())
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user