Catalog/imagecatalog/MainForm.cs

819 lines
32 KiB
C#
Raw Normal View History

2021-03-04 10:44:09 +01:00
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
2025-07-08 14:35:27 +02:00
using System.ComponentModel;
2021-03-04 10:44:09 +01:00
using System.Drawing;
using System.Drawing.Text;
using System.IO;
using System.Linq;
2024-10-14 19:57:24 +02:00
using System.Reflection;
2021-03-04 10:44:09 +01:00
using System.Runtime.InteropServices;
using System.Text;
2021-03-04 10:44:09 +01:00
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
2024-10-14 22:55:52 +02:00
using ImageCatalog_2;
2024-10-14 22:18:03 +02:00
using ImageCatalog_2.Services;
2021-03-04 10:44:09 +01:00
using MaddoShared;
using Microsoft.Extensions.Logging;
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
namespace ImageCatalog;
public partial class MainForm
2021-03-04 10:44:09 +01:00
{
private readonly DataModel Model;
2025-07-29 10:34:23 +02:00
2025-07-28 09:00:07 +02:00
private readonly ILogger<MainForm> _logger;
private readonly ImageCreationStuff _imageCreationService;
2021-03-04 10:44:09 +01:00
2025-07-28 09:15:45 +02:00
private readonly ParametriSetup _parametriSetup;
2025-07-28 10:22:08 +02:00
private readonly PicSettings _picSettings;
2025-07-29 10:34:23 +02:00
public MainForm(DataModel model, ImageCreationStuff imageCreationStuff, PicSettings picSettings,
ParametriSetup parametriSetup, ILogger<MainForm> logger)
2021-03-04 10:44:09 +01:00
{
Model = model;
2025-07-28 09:00:07 +02:00
_imageCreationService = imageCreationStuff;
2025-07-28 09:15:45 +02:00
_parametriSetup = parametriSetup;
2025-07-28 10:22:08 +02:00
_picSettings = picSettings;
2025-07-29 10:34:23 +02:00
2025-07-28 09:00:07 +02:00
_logger = logger;
_logger.LogDebug("Start");
InitializeComponent();
BindControls();
_Button3.Name = "Button3";
_Button2.Name = "Button2";
_Button8.Name = "Button8";
_CheckBox18.Name = "CheckBox18";
_CheckBox4.Name = "CheckBox4";
_CheckBox12.Name = "CheckBox12";
_PictureBox1.Name = "PictureBox1";
_Button4.Name = "Button4";
_Label27.Name = "Label27";
_Button7.Name = "Button7";
_Button5.Name = "Button5";
//_btnCreaCatalogo.Name = "btnCreaCatalogo";
_Button6.Name = "Button6";
_btnCreaCatalogoAsync.Name = "btnCreaCatalogoAsync";
var version = Assembly.GetExecutingAssembly().GetName().Version;
_Label27.Text = $"Version: {version.Major}.{version.Minor}.{version.Build}.{version.Revision}";
2025-09-19 09:53:31 +02:00
_results = [];
2025-07-28 09:00:07 +02:00
UiUpdateEvent += OnUiUpdateEvent;
}
2024-10-14 22:55:52 +02:00
2025-07-28 09:00:07 +02:00
protected void BindControls()
{
//txtSorgente.DataBindings.Add(new Binding("Text", SourcePath, ""));
}
2024-10-14 22:18:03 +02:00
2025-07-28 09:00:07 +02:00
private event EventHandler<Tuple<string, int>> UiUpdateEvent;
2025-07-23 17:16:06 +02:00
2025-07-28 09:00:07 +02:00
delegate void SetTextCallback(Label target, string text);
2024-10-14 22:55:52 +02:00
2025-07-28 09:00:07 +02:00
private void SetText(Label target, string text)
{
if (InvokeRequired)
2024-10-14 22:55:52 +02:00
{
2025-07-29 11:07:49 +02:00
var d = new SetTextCallback(SetText);
2025-07-28 09:00:07 +02:00
this.Invoke(d, new object[] { target, text });
2024-10-14 22:55:52 +02:00
}
2025-07-28 09:00:07 +02:00
else
2021-03-04 10:44:09 +01:00
{
2025-07-28 09:00:07 +02:00
target.Text = text;
2021-03-04 10:44:09 +01:00
}
2025-07-28 09:00:07 +02:00
}
2025-09-19 09:53:31 +02:00
private delegate void SetProgressCallback(ProgressBar target, int amount, int maximum);
2025-07-28 09:00:07 +02:00
private void SetProgress(ProgressBar target, int amount, int maximum)
{
if (InvokeRequired)
2021-03-04 10:44:09 +01:00
{
2025-07-29 10:34:23 +02:00
var d = new SetProgressCallback(SetProgress);
2025-07-28 09:00:07 +02:00
this.Invoke(d, new object[] { target, amount, maximum });
2021-03-04 10:44:09 +01:00
}
2025-07-28 09:00:07 +02:00
else
2021-03-04 10:44:09 +01:00
{
2025-07-28 09:00:07 +02:00
target.Maximum = maximum;
target.Value = amount;
2021-03-04 10:44:09 +01:00
}
2025-07-28 09:00:07 +02:00
}
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
private void OnUiUpdateEvent(object sender, Tuple<string, int> args)
{
SetProgress(ProgressBar1, _results.Count, args.Item2);
SetText(Label18, _results.Count.ToString());
SetText(Label10, args.Item1);
SetText(lblFotoTotaliNum, args.Item2.ToString());
}
2025-07-29 11:10:54 +02:00
2025-09-19 09:53:31 +02:00
private bool _waterSelectColor = false;
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
private ConcurrentBag<string> _results;
2021-03-04 10:44:09 +01:00
2025-07-28 14:45:03 +02:00
private void SetDefaults()
2025-07-28 09:00:07 +02:00
{
//txtSorgente.Text = "";
Model.SourcePath = string.Empty;
Model.DestinationPath = string.Empty;
TextBox3.Text = "tn_";
Model.HorizontalText = "";
2025-07-28 09:00:07 +02:00
TextBox5.Text = "350";
TextBox6.Text = "350";
TextBox27.Text = "2240";
TextBox28.Text = "2240";
TextBox9.Text = "0";
TextBox11.Text = "20";
TextBox12.Text = "8";
// TextBox13.Text = ""
TextBox10.Text = "";
TextBox14.Text = "430";
TextBox15.Text = "430";
TextBox16.Text = "290";
txtFilePerCartella.Text = "99";
TextBox19.Text = "100";
txtSuffissoCartelle.Text = "";
txtCifreContatore.Text = "2";
TextBox25.Text = "50";
TextBox26.Text = "";
2025-09-19 09:53:31 +02:00
Model.ThreadsCount = 10;
Model.ChunkSize = 100;
2025-07-28 09:00:07 +02:00
TextBox34.Text = "Yellow";
TextBox30.Text = "20";
TextBox31.Text = "6";
TextBox32.Text = "85";
TextBox33.Text = "30";
ComboBox1.Items.Add("Alto");
ComboBox1.Items.Add("Basso");
ComboBox1.SelectedIndex = 1;
ComboBox2.Items.Add("Sinistra");
ComboBox2.Items.Add("Centro");
ComboBox2.Items.Add("Destra");
ComboBox2.SelectedIndex = 1;
// Create a obejct of InstalledFontCollection
var InstalledFonts = new InstalledFontCollection();
// Gets the array of FontFamily objects associated with this FontCollection.
var fontfamilies = InstalledFonts.Families;
// Populates font combobox with the font name
foreach (FontFamily fontFamily in fontfamilies)
ComboBox3.Items.Add(fontFamily.Name);
ComboBox3.Text = ComboBox3.Items[0].ToString();
// ComboBox3.Items.Add("Arial")
// ComboBox3.Items.Add("Arial Black")
// ComboBox3.Items.Add("Arial Narrow")
// ComboBox3.Items.Add("Comic Sans MS")
// ComboBox3.Items.Add("Courier New")
// ComboBox3.Items.Add("System")
// ComboBox3.Items.Add("Times New Roman")
// ComboBox3.Items.Add("Verdana")
// ComboBox3.Items.Add("Wingdings")
// ComboBox3.SelectedIndex = 7
ComboBox4.Items.Add("Sinistra");
ComboBox4.Items.Add("Centro");
ComboBox4.Items.Add("Destra");
ComboBox4.SelectedIndex = 2;
ComboBox5.Items.Add("Alto");
ComboBox5.Items.Add("Centro");
ComboBox5.Items.Add("Basso");
ComboBox5.SelectedIndex = 2;
}
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
private void Form1_Load(object sender, EventArgs e)
{
bindingSource1.DataSource = Model;
Application.EnableVisualStyles();
2025-07-28 14:45:03 +02:00
SetDefaults();
2025-07-29 10:34:23 +02:00
2025-07-28 09:00:07 +02:00
_logger.LogInformation("Programma Avviato");
}
private void FixPaths()
{
Model.SourcePath = FixPath(Model.SourcePath);
Model.DestinationPath = FixPath(Model.DestinationPath);
}
private string FixPath(string path)
{
if (string.IsNullOrWhiteSpace(path))
2021-03-04 10:44:09 +01:00
{
2025-07-28 09:00:07 +02:00
return string.Empty;
}
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
// Trim leading/trailing quotes
path = path.Trim().Trim('"');
2025-07-28 09:00:07 +02:00
// Normalize directory separators
path = path.Replace('/', Path.DirectorySeparatorChar)
.Replace('\\', Path.DirectorySeparatorChar);
2025-07-28 09:00:07 +02:00
// Remove trailing separators then add one back
path = path.TrimEnd(Path.DirectorySeparatorChar) + Path.DirectorySeparatorChar;
2025-07-28 09:00:07 +02:00
return path;
}
2025-07-28 09:00:07 +02:00
private void lockUI()
{
Model.UiEnabled = false;
//TabControl1.Enabled = false;
//Button5.Enabled = false;
//Button6.Enabled = false;
//btnCreaCatalogoAsync.Enabled = false;
}
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
private void unlockUI()
{
Model.UiEnabled = true;
//TabControl1.Enabled = true;
//Button5.Enabled = true;
//Button6.Enabled = true;
//btnCreaCatalogoAsync.Enabled = true;
}
private string CalcTime(DateTime timeStart, DateTime timeStop, int numFoto)
{
long timediffH, timediffS;
long timediffM;
2025-07-29 10:34:23 +02:00
2025-07-28 09:00:07 +02:00
TimeSpan timeDiff = timeStop - timeStart;
timediffM = (int)timeDiff.TotalMinutes;
timediffS = (int)timeDiff.TotalSeconds;
timediffH = (int)timeDiff.TotalHours;
2025-07-29 10:34:23 +02:00
2025-07-28 09:00:07 +02:00
// timediffM = DateAndTime.DateDiff(DateInterval.Minute, timeStart, timeStop);
// timediffS = DateAndTime.DateDiff(DateInterval.Second, timeStart, timeStop);
// timediffH = DateAndTime.DateDiff(DateInterval.Hour, timeStart, timeStop);
2025-07-29 10:34:23 +02:00
2025-07-28 09:00:07 +02:00
double fotoSec = numFoto / (double)timediffS;
double fotoMin = numFoto / (double)timediffM;
double fotoOra = numFoto / (double)timediffH;
string s = "S: " + timediffS.ToString() + "; F/s: " +
fotoSec.ToString(
"0.000"); // + " F/m: " + fotoMin.ToString("0.00") + " F/h: " + fotoOra.ToString("0.00")
return s;
}
private string SelectFolder(string startingFolder)
{
var dialog = new FolderBrowserDialog();
dialog.InitialDirectory = startingFolder;
if (dialog.ShowDialog() != DialogResult.OK) return string.Empty;
2025-07-29 10:34:23 +02:00
2025-07-28 09:00:07 +02:00
var directoryScelta = FixPath(dialog.SelectedPath); // dialog.FileName;
return directoryScelta;
}
private void Button2_Click(object sender, EventArgs e)
{
var dialogResult = SelectFolder(Model.SourcePath);
if (!string.IsNullOrWhiteSpace(dialogResult))
2021-03-04 10:44:09 +01:00
{
2025-07-28 09:00:07 +02:00
Model.SourcePath = dialogResult;
2021-03-04 10:44:09 +01:00
}
2025-07-28 09:00:07 +02:00
}
private void Button3_Click(object sender, EventArgs e)
{
var dialogResult = SelectFolder(Model.DestinationPath);
if (!string.IsNullOrWhiteSpace(dialogResult))
2021-03-04 10:44:09 +01:00
{
2025-07-28 09:00:07 +02:00
Model.DestinationPath = dialogResult;
2021-03-04 10:44:09 +01:00
}
2025-07-28 09:00:07 +02:00
}
private void Button5_Click(object sender, EventArgs e)
{
var SaveFileDlg = new SaveFileDialog();
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
// SaveFileDlg.InitialDirectory = "c:\"
SaveFileDlg.Filter = "Setup (*.xml)|*.xml|All valid files (*.*)|*.*";
SaveFileDlg.FilterIndex = 0;
SaveFileDlg.RestoreDirectory = true;
2025-07-28 14:45:03 +02:00
if (DialogResult.OK != SaveFileDlg.ShowDialog()) return;
2025-07-29 10:34:23 +02:00
2025-07-28 14:45:03 +02:00
var ilNome = SaveFileDlg.FileName;
_parametriSetup.NomeFileSetup = ilNome;
_parametriSetup.AggiornaParametro("DirSorgente", Model.SourcePath);
_parametriSetup.AggiornaParametro("DirDestinazione", Model.DestinationPath);
_parametriSetup.AggiornaParametro("DirSottoDirectory", chkAggiornaSottodirectory.Checked);
_parametriSetup.AggiornaParametro("DirDividiDestinazione", chkCreaSottocartelle.Checked);
_parametriSetup.AggiornaParametro("DirDividiNumFile", txtFilePerCartella.Text);
_parametriSetup.AggiornaParametro("DirDividiSuffisso", txtSuffissoCartelle.Text);
_parametriSetup.AggiornaParametro("DirDividiNumCifre", txtCifreContatore.Text);
if (rdbNumProgressiva.Checked == true)
2021-03-04 10:44:09 +01:00
{
2025-07-28 14:45:03 +02:00
_parametriSetup.AggiornaParametro("DirDividiTipoNumerazione", "Progressiva");
2021-03-04 10:44:09 +01:00
}
2025-07-28 14:45:03 +02:00
else
{
_parametriSetup.AggiornaParametro("DirDividiTipoNumerazione", "Files");
}
_parametriSetup.AggiornaParametro("MiniatureCrea", CheckBox1.Checked);
_parametriSetup.AggiornaParametro("MiniatureSuffisso", TextBox3.Text);
_parametriSetup.AggiornaParametro("MiniatureAltezza", TextBox5.Text);
_parametriSetup.AggiornaParametro("MiniatureLarghezza", TextBox6.Text);
_parametriSetup.AggiornaParametro("MiniatureAddScritta", RadioButton3.Checked);
_parametriSetup.AggiornaParametro("MiniatureAddOrario", RadioButton4.Checked);
_parametriSetup.AggiornaParametro("FotoAltezza", TextBox27.Text);
_parametriSetup.AggiornaParametro("FotoLarghezza", TextBox28.Text);
// SetupIni.AggiornaParametro("FotoCodice", TextBox13.Text)
// SetupIni.AggiornaParametro("FotoDimOriginali", CheckBox2.Checked)
_parametriSetup.AggiornaParametro("FontDimensione", TextBox11.Text);
_parametriSetup.AggiornaParametro("FontDimensioneMiniatura", TextBox25.Text);
_parametriSetup.AggiornaParametro("FontBold", CheckBox3.Checked);
_parametriSetup.AggiornaParametro("FontNome", ComboBox3.Text);
_parametriSetup.AggiornaParametro("TestoTesto", Model.HorizontalText);
_parametriSetup.AggiornaParametro("TestoTrasparente", TextBox9.Text);
_parametriSetup.AggiornaParametro("TestoMargine", TextBox12.Text);
_parametriSetup.AggiornaParametro("TestoPosizione", ComboBox1.Text);
_parametriSetup.AggiornaParametro("TestoAllineamento", ComboBox2.Text);
_parametriSetup.AggiornaParametro("MarchioFile", TextBox10.Text);
_parametriSetup.AggiornaParametro("MarchioAltezza", TextBox14.Text);
_parametriSetup.AggiornaParametro("MarchioLarghezza", TextBox15.Text);
_parametriSetup.AggiornaParametro("MarchioMargine", TextBox16.Text);
_parametriSetup.AggiornaParametro("MarchioAllOrizzontale", ComboBox4.Text);
_parametriSetup.AggiornaParametro("MarchioAllVerticale", ComboBox5.Text);
_parametriSetup.AggiornaParametro("MarchioTrasparenza", TextBox19.Text);
_parametriSetup.AggiornaParametro("MarchioAggiungi", CheckBox5.Checked);
_parametriSetup.AggiornaParametro("TempoGara", CheckBox7.Checked);
_parametriSetup.AggiornaParametro("Orario", CheckBox8.Checked);
_parametriSetup.AggiornaParametro("EtichettaOrario", TextBox18.Text);
_parametriSetup.AggiornaParametro("GeneraleForzaJpg", chkForzaJpg.Checked);
_parametriSetup.AggiornaParametro("GeneraleRotazioneAutomatica", chkRotazioneAutomatica.Checked);
_parametriSetup.AggiornaParametro("GrandezzaVerticale", TextBox30.Text);
_parametriSetup.AggiornaParametro("MargineVerticale", TextBox31.Text);
_parametriSetup.AggiornaParametro("DimensioniOriginali", CheckBox15.Checked);
_parametriSetup.AggiornaParametro("TestoVerticale", Model.VerticalText);
_parametriSetup.AggiornaParametro("NomeMiniatura", RadioButton6.Checked);
_parametriSetup.AggiornaParametro("DataFoto", CheckBox16.Checked);
_parametriSetup.AggiornaParametro("NumeroFoto", CheckBox17.Checked);
_parametriSetup.AggiornaParametro("ColoreTestoRGB", TextBox34.Text);
_parametriSetup.AggiornaParametro("TempoSmall", RadioButton5.Checked);
_parametriSetup.AggiornaParametro("NumTempoSmall", RadioButton7.Checked);
_parametriSetup.AggiornaParametro("CompressioneJpeg", TextBox32.Text);
_parametriSetup.AggiornaParametro("CompressioneJpegMiniatura", TextBox33.Text);
// 2021
2025-09-19 09:53:31 +02:00
_parametriSetup.AggiornaParametro("ChunkSize", Model.ChunkSize.ToString());
_parametriSetup.AggiornaParametro("ThreadsCount", Model.ThreadsCount.ToString());
2025-07-28 14:45:03 +02:00
_parametriSetup.AggiornaParametro("OverwriteImages", Model.OverwriteImages);
_parametriSetup.SalvaParametriSetup();
Text = "Image Catalog - " + LeggiSoloNomeFile(ilNome);
2025-07-28 09:00:07 +02:00
}
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
private void Button6_Click(object sender, EventArgs e)
{
var openFileDialog = new OpenFileDialog();
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
// openFileDialog.InitialDirectory = TextBox1.Text
openFileDialog.Filter = "Setup (*.xml)|*.xml|All valid files (*.*)|*.*";
openFileDialog.FilterIndex = 0;
openFileDialog.RestoreDirectory = true;
2025-09-19 10:01:24 +02:00
2025-09-19 09:53:31 +02:00
if (DialogResult.OK != openFileDialog.ShowDialog()) return;
2025-09-19 10:01:24 +02:00
2025-09-19 09:53:31 +02:00
var ilNome = openFileDialog.FileName;
_parametriSetup.NomeFileSetup = ilNome;
_parametriSetup.CaricaParametriSetup();
Model.SourcePath = _parametriSetup.LeggiParametroString("DirSorgente");
Model.DestinationPath = _parametriSetup.LeggiParametroString("DirDestinazione");
chkAggiornaSottodirectory.Checked = _parametriSetup.LeggiParametroBoolean("DirSottoDirectory");
chkCreaSottocartelle.Checked = _parametriSetup.LeggiParametroBoolean("DirDividiDestinazione");
txtFilePerCartella.Text = _parametriSetup.LeggiParametroString("DirDividiNumFile");
txtSuffissoCartelle.Text = _parametriSetup.LeggiParametroString("DirDividiSuffisso");
txtCifreContatore.Text = _parametriSetup.LeggiParametroString("DirDividiNumCifre");
string TestoTemp = _parametriSetup.LeggiParametroString("DirDividiTipoNumerazione");
if (TestoTemp.ToUpper() == "PROGRESSIVA")
{
rdbNumProgressiva.Checked = true;
}
else
2021-03-04 10:44:09 +01:00
{
2025-09-19 09:53:31 +02:00
rdbNumFiles.Checked = true;
}
CheckBox1.Checked = _parametriSetup.LeggiParametroBoolean("MiniatureCrea");
TextBox3.Text = _parametriSetup.LeggiParametroString("MiniatureSuffisso");
TextBox5.Text = _parametriSetup.LeggiParametroString("MiniatureAltezza");
TextBox6.Text = _parametriSetup.LeggiParametroString("MiniatureLarghezza");
RadioButton3.Checked = _parametriSetup.LeggiParametroBoolean("MiniatureAddScritta");
RadioButton4.Checked = _parametriSetup.LeggiParametroBoolean("MiniatureAddOrario");
TextBox27.Text = _parametriSetup.LeggiParametroString("FotoAltezza");
TextBox28.Text = _parametriSetup.LeggiParametroString("FotoLarghezza");
// TextBox13.Text = SetupIni.LeggiParametroString("FotoCodice")
// CheckBox2.Checked = SetupIni.LeggiParametroBoolean("FotoDimOriginali")
TextBox11.Text = _parametriSetup.LeggiParametroString("FontDimensione");
TextBox25.Text = _parametriSetup.LeggiParametroString("FontDimensioneMiniatura");
CheckBox3.Checked = _parametriSetup.LeggiParametroBoolean("FontBold");
ComboBox3.Text = _parametriSetup.LeggiParametroString("FontNome");
if (string.IsNullOrEmpty(TextBox25.Text))
{
TextBox25.Text = "0";
}
Model.HorizontalText = _parametriSetup.LeggiParametroString("TestoTesto");
TextBox9.Text = _parametriSetup.LeggiParametroString("TestoTrasparente");
TextBox12.Text = _parametriSetup.LeggiParametroString("TestoMargine");
ComboBox1.Text = _parametriSetup.LeggiParametroString("TestoPosizione");
ComboBox2.Text = _parametriSetup.LeggiParametroString("TestoAllineamento");
TextBox10.Text = _parametriSetup.LeggiParametroString("MarchioFile");
TextBox14.Text = _parametriSetup.LeggiParametroString("MarchioAltezza");
TextBox15.Text = _parametriSetup.LeggiParametroString("MarchioLarghezza");
TextBox16.Text = _parametriSetup.LeggiParametroString("MarchioMargine");
ComboBox4.Text = _parametriSetup.LeggiParametroString("MarchioAllOrizzontale");
ComboBox5.Text = _parametriSetup.LeggiParametroString("MarchioAllVerticale");
TextBox19.Text = _parametriSetup.LeggiParametroString("MarchioTrasparenza");
CheckBox5.Checked = _parametriSetup.LeggiParametroBoolean("MarchioAggiungi");
CheckBox7.Checked = _parametriSetup.LeggiParametroBoolean("TempoGara");
CheckBox8.Checked = _parametriSetup.LeggiParametroBoolean("Orario");
TextBox18.Text = _parametriSetup.LeggiParametroString("EtichettaOrario");
chkForzaJpg.Checked = _parametriSetup.LeggiParametroBoolean("GeneraleForzaJpg");
chkRotazioneAutomatica.Checked = _parametriSetup.LeggiParametroBoolean("GeneraleRotazioneAutomatica");
TextBox30.Text = _parametriSetup.LeggiParametroString("GrandezzaVerticale");
TextBox31.Text = _parametriSetup.LeggiParametroString("MargineVerticale");
CheckBox15.Checked = _parametriSetup.LeggiParametroBoolean("DimensioniOriginali");
Model.VerticalText = _parametriSetup.LeggiParametroString("TestoVerticale");
RadioButton6.Checked = _parametriSetup.LeggiParametroBoolean("NomeMiniatura");
CheckBox16.Checked = _parametriSetup.LeggiParametroBoolean("DataFoto");
CheckBox17.Checked = _parametriSetup.LeggiParametroBoolean("NumeroFoto");
RadioButton5.Checked = _parametriSetup.LeggiParametroBoolean("TempoSmall");
RadioButton7.Checked = _parametriSetup.LeggiParametroBoolean("NumTempoSmall");
TextBox32.Text = _parametriSetup.LeggiParametroString("CompressioneJpeg");
TextBox33.Text = _parametriSetup.LeggiParametroString("CompressioneJpegMiniatura");
TextBox34.Text = _parametriSetup.LeggiParametroString("ColoreTestoRGB");
Model.OverwriteImages = _parametriSetup.LeggiParametroBoolean("OverwriteImages");
if (File.Exists(TextBox10.Text))
{
PictureBox1.Image = Image.FromFile(TextBox10.Text);
if (PictureBox1.Image.Height >= PictureBox1.Image.Width)
2021-03-04 10:44:09 +01:00
{
2025-09-19 09:53:31 +02:00
PictureBox1.Height = 160;
PictureBox1.Width =
(int)(160 * PictureBox1.Image.Width / (double)PictureBox1.Image.Height);
2021-03-04 10:44:09 +01:00
}
2025-07-28 09:00:07 +02:00
else
2021-03-04 10:44:09 +01:00
{
2025-09-19 09:53:31 +02:00
PictureBox1.Width = 224;
PictureBox1.Height =
(int)(224 * PictureBox1.Image.Height / (double)PictureBox1.Image.Width);
2021-03-04 10:44:09 +01:00
}
2025-09-19 09:53:31 +02:00
}
2021-03-04 10:44:09 +01:00
2025-09-19 09:53:31 +02:00
Text = "Image Catalog - " + LeggiSoloNomeFile(ilNome);
2021-03-04 10:44:09 +01:00
2025-09-19 09:53:31 +02:00
// 2021
2025-09-19 10:56:39 +02:00
Model.ChunkSize = _parametriSetup.LeggiParametro("ChunkSize", Model.ChunkSize);
Model.ThreadsCount = _parametriSetup.LeggiParametro("ThreadsCount", Model.ThreadsCount);
// if (int.TryParse(_parametriSetup.LeggiParametroString("ChunkSize"), out var chunkSize))
// {
// Model.ChunkSize = chunkSize;
// }
// if (int.TryParse(_parametriSetup.LeggiParametroString("ThreadsCount"), out var threadsCount))
// {
// Model.ThreadsCount = threadsCount;
// }
2025-09-19 10:01:24 +02:00
// Model.ChunkSize = int.Parse(_parametriSetup.LeggiParametroString("ChunkSize"));
// Model.ThreadsCount = int.Parse(_parametriSetup.LeggiParametroString("ThreadsCount"));
2025-07-28 09:00:07 +02:00
}
2021-03-04 10:44:09 +01:00
2025-07-28 10:22:08 +02:00
private void SetPicSettings(string SourcePath, string DestPath)
2025-07-28 09:00:07 +02:00
{
var SourceDir = new DirectoryInfo(SourcePath);
var DestDirStart = new DirectoryInfo(DestPath);
DirectoryInfo DestDir = null;
2025-07-28 10:22:08 +02:00
_picSettings.DirectorySorgente = SourcePath;
_picSettings.DirectoryDestinazione = Model.DestinationPath;
// _picSettings.DestDir = DestDir
// _picSettings.SourceDir = SourceDir
// _picSettings.DestDirStart = DestDirStart
_picSettings.DimStandard = int.Parse(TextBox11.Text);
_picSettings.DimStandardMiniatura = int.Parse(TextBox25.Text);
_picSettings.UsaOrarioMiniatura = CheckBox12.Checked;
_picSettings.UsaOrarioTestoApplicare = CheckBox8.Checked;
_picSettings.UsaTempoGaraTestoApplicare = CheckBox7.Checked;
_picSettings.UsaRotazioneAutomatica = chkRotazioneAutomatica.Checked;
_picSettings.UsaForzaJpg = chkForzaJpg.Checked;
2025-07-28 09:00:07 +02:00
if (CheckBox17.Checked)
{
2025-07-28 10:22:08 +02:00
_picSettings.TestoNome = true;
2025-07-28 09:00:07 +02:00
}
else
{
2025-07-28 10:22:08 +02:00
_picSettings.TestoNome = false;
2025-07-28 09:00:07 +02:00
}
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
if (CheckBox16.Checked)
{
2025-07-28 10:22:08 +02:00
_picSettings.NomeData = true;
2025-07-28 09:00:07 +02:00
}
else
{
2025-07-28 10:22:08 +02:00
_picSettings.NomeData = false;
}
_picSettings.TestoFirmaStart = Model.HorizontalText;
2025-07-28 10:34:03 +02:00
_picSettings.TestoFirmaStartV = Model.VerticalText;
2025-07-28 10:22:08 +02:00
_picSettings.DataPartenza = DateTimePicker1.Value;
_picSettings.TestoOrario = TextBox18.Text;
_picSettings.AltezzaSmall = int.Parse(TextBox6.Text);
_picSettings.LarghezzaSmall = int.Parse(TextBox5.Text);
_picSettings.CreaMiniature = CheckBox1.Checked;
_picSettings.AggiungiScritteMiniature = RadioButton3.Checked;
_picSettings.AggTempoGaraMin = RadioButton5.Checked;
_picSettings.AggNumTempMin = RadioButton7.Checked;
_picSettings.DimVert = int.Parse(TextBox30.Text);
_picSettings.MargVert = int.Parse(TextBox31.Text);
// _picSettings.NomeFileChild = childFile.Name
_picSettings.Suffisso = TextBox3.Text;
// _picSettings.Codice = TextBox13.Text
_picSettings.Trasparenza = int.Parse(TextBox9.Text);
_picSettings.IlFont = ComboBox3.SelectedItem.ToString();
_picSettings.Grassetto = CheckBox3.Checked;
_picSettings.Posizione = ComboBox1.SelectedItem.ToString();
_picSettings.Allineamento = ComboBox2.SelectedItem.ToString();
_picSettings.Margine = int.Parse(TextBox12.Text);
_picSettings.LogoAltezza = int.Parse(TextBox14.Text);
_picSettings.LogoLarghezza = int.Parse(TextBox15.Text);
_picSettings.FontColoreRGB = ColorTranslator.FromHtml(TextBox34.Text);
_picSettings.LogoAggiungi = CheckBox5.Checked;
_picSettings.LogoNomeFile = TextBox10.Text;
_picSettings.LogoTrasparenza = TextBox19.Text;
_picSettings.LogoMargine = TextBox16.Text;
_picSettings.LogoPosizioneH = ComboBox4.Text;
_picSettings.LogoPosizioneV = ComboBox5.Text;
_picSettings.FotoGrandeDimOrigina = CheckBox15.Checked;
_picSettings.AltezzaBig = int.Parse(TextBox27.Text);
_picSettings.LarghezzaBig = int.Parse(TextBox28.Text);
_picSettings.DimMin = int.Parse(TextBox25.Text);
_picSettings.TestoMin = RadioButton6.Checked;
_picSettings.JpegQuality = int.Parse(TextBox32.Text);
_picSettings.JpegQualityMin = int.Parse(TextBox33.Text);
2025-07-28 14:45:03 +02:00
_picSettings.OverwriteFiles = Model.OverwriteImages;
2025-07-28 09:00:07 +02:00
}
private void setLabel18Text(string text)
{
if (Label18.InvokeRequired)
2021-03-04 10:44:09 +01:00
{
2025-07-28 09:00:07 +02:00
Label18.Invoke(new Action<string>(setLabel18Text), text);
}
else
{
Label18.Text = text;
2021-03-04 10:44:09 +01:00
}
2025-07-28 09:00:07 +02:00
}
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
private NumerazioneType GetNumerazioneEnum()
{
NumerazioneType numerazioneType;
if (rdbNumProgressiva.Checked)
{
numerazioneType = NumerazioneType.Progressiva; // FileHelper.numerazione.Progressiva
2021-03-04 10:44:09 +01:00
}
2025-07-28 09:00:07 +02:00
else
{
numerazioneType = NumerazioneType.Files;
} // FileHelper.numerazione.Files
return numerazioneType;
}
2025-07-29 10:34:23 +02:00
2025-07-28 09:00:07 +02:00
private void Button4_Click(object sender, EventArgs e)
{
var openFileDialog = new OpenFileDialog();
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
// openFileDialog.InitialDirectory = TextBox1.Text
openFileDialog.Filter = "Immagini jpg (*.jpg)|*.jpg|Immagini gif (*.gif)|*.gif|Tutti i file (*.*)|*.*";
if (TextBox10.Text.Length > 0)
2021-03-04 10:44:09 +01:00
{
2025-07-28 09:00:07 +02:00
openFileDialog.FileName = TextBox10.Text;
2021-03-04 10:44:09 +01:00
}
2025-07-28 09:00:07 +02:00
openFileDialog.FilterIndex = 0;
openFileDialog.RestoreDirectory = true;
if (DialogResult.OK == openFileDialog.ShowDialog())
2021-03-04 10:44:09 +01:00
{
2025-07-28 09:00:07 +02:00
TextBox10.Text = openFileDialog.FileName;
PictureBox1.Image = Image.FromFile(TextBox10.Text);
if (PictureBox1.Image.Height >= PictureBox1.Image.Width)
{
PictureBox1.Height = 160;
PictureBox1.Width =
(int)(160 * PictureBox1.Image.Width / (double)PictureBox1.Image.Height);
}
else
2021-03-04 10:44:09 +01:00
{
2025-07-28 09:00:07 +02:00
PictureBox1.Width = 224;
PictureBox1.Height =
(int)(224 * PictureBox1.Image.Height / (double)PictureBox1.Image.Width);
2021-03-04 10:44:09 +01:00
}
}
2025-07-28 09:00:07 +02:00
}
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
private string LeggiSoloNomeFile(string FileName)
{
string Testo = FileName;
string Risposta = "";
var Nomi = Testo.Split(new char[] { '\\' });
if (Nomi.Length > 1)
2021-03-04 10:44:09 +01:00
{
2025-07-28 09:00:07 +02:00
Risposta = Nomi[Nomi.Length - 1];
2021-03-04 10:44:09 +01:00
}
2025-07-28 09:00:07 +02:00
return Risposta;
}
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
private void PictureBox1_MouseMove(object sender, MouseEventArgs e)
{
// GetColor()
// GetPixelColor(PictureBox1.PointToScreen(e.Location)).ToArgb.ToString("X8")
}
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
private void PictureBox1_MouseUp(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
2021-03-04 10:44:09 +01:00
{
2025-09-19 09:53:31 +02:00
_waterSelectColor = true;
2021-03-04 10:44:09 +01:00
}
2025-07-28 09:00:07 +02:00
else
2021-03-04 10:44:09 +01:00
{
2025-09-19 09:53:31 +02:00
_waterSelectColor = false;
2021-03-04 10:44:09 +01:00
}
2025-07-28 09:00:07 +02:00
}
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
private Color[] GetPixelColor(Point screenLocation)
{
// Dim bm As New Bitmap(1, 1, Imaging.PixelFormat.Format24bppRgb)
// Dim g As Graphics = Graphics.FromImage(bm)
// g.CopyFromScreen(screenLocation, New Point(0, 0), New Size(1, 1))
// Dim result As Color = bm.GetPixel(0, 0)
// g.Dispose()
// bm.Dispose()
// Return result
return null;
}
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
private void Button8_Click(object sender, EventArgs e)
{
var MyDialog = new ColorDialog();
MyDialog.AllowFullOpen = true;
// If TextBox22.Text.Length > 0 And TextBox23.Text.Length > 0 And TextBox24.Text.Length > 0 Then
// If CType(TextBox22.Text, Integer) >= 0 And CType(TextBox23.Text, Integer) >= 0 And CType(TextBox24.Text, Integer) >= 0 Then
// MyDialog.Color = Color.FromArgb(0, CType(TextBox22.Text, Integer), CType(TextBox23.Text, Integer), CType(TextBox24.Text, Integer))
// End If
// End If
2025-07-28 09:00:07 +02:00
if (MyDialog.ShowDialog() == DialogResult.OK)
2021-03-04 11:25:40 +01:00
{
2025-07-28 09:00:07 +02:00
// TextBox22.Text = MyDialog.Color.R.ToString
// TextBox23.Text = MyDialog.Color.G.ToString
// TextBox24.Text = MyDialog.Color.B.ToString
TextBox34.Text = ColorTranslator.ToHtml(MyDialog.Color);
TextBox34.BackColor = MyDialog.Color;
2021-03-04 11:25:40 +01:00
}
2025-07-28 09:00:07 +02:00
}
private void CheckBox18_CheckedChanged(object sender, EventArgs e)
{
CheckBox4.Checked = false;
CheckBox12.Checked = false;
}
private void CheckBox4_CheckedChanged(object sender, EventArgs e)
{
CheckBox18.Checked = false;
}
private void CheckBox12_CheckedChanged(object sender, EventArgs e)
{
CheckBox18.Checked = false;
}
private void Label27_Click(object sender, EventArgs e)
{
}
2021-03-04 11:25:40 +01:00
2025-07-29 11:07:49 +02:00
//private CancellationTokenSource? _mainToken;
2025-07-28 09:00:07 +02:00
private async void Button1_Click(object sender, EventArgs e)
{
_logger.LogInformation("Avvio elaborazione...");
lockUI();
2025-07-29 11:10:54 +02:00
2025-07-29 11:07:49 +02:00
Model.MainToken?.Dispose();
Model.MainToken = new CancellationTokenSource();
var token = Model.MainToken.Token;
2025-07-29 10:34:23 +02:00
2025-07-28 09:00:07 +02:00
// timeStart = TimeOfDay
FixPaths();
Label10.Text = "Elaborazione in corso...";
lblFotoTotaliNum.Text = "0";
Label18.Text = "0";
2025-07-29 11:07:49 +02:00
Model.SpeedCounter = "-f/m";
2025-07-28 10:22:08 +02:00
SetPicSettings(Model.SourcePath, Model.DestinationPath);
2025-07-28 09:00:07 +02:00
ProgressBar1.Minimum = 0;
ProgressBar1.Step = 1;
ProgressBar1.Value = 0;
var imageCreationOptions = new ImageCreationStuff.Options
2021-03-04 10:44:09 +01:00
{
2025-07-28 09:00:07 +02:00
AggiornaSottodirectory = chkAggiornaSottodirectory.Checked,
CreaSottocartelle = chkCreaSottocartelle.Checked,
FilePerCartella = int.Parse(txtFilePerCartella.Text),
SuffissoCartelle = txtSuffissoCartelle.Text,
CifreContatore = int.Parse(txtCifreContatore.Text),
NumerazioneType = GetNumerazioneEnum(),
SourcePath = Model.SourcePath,
DestinationPath = Model.DestinationPath,
2025-09-19 09:53:31 +02:00
MaxThreads = Model.ThreadsCount,
ChunksSize = Model.ChunkSize,
2025-07-28 09:00:07 +02:00
LinearExecution = rdbVecchioMetodo.Checked
};
try
{
_results = [];
_currentAmount = 0;
_previousAmount = 0;
timer1.Tick += Timer1OnTick;
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
timer1.Interval = 1000 * 60;
timer1.Enabled = true;
2021-03-04 10:44:09 +01:00
2025-09-19 09:53:31 +02:00
var time =
2025-07-29 10:34:23 +02:00
await _imageCreationService.CreaCatalogoParallel(imageCreationOptions, _results, UiUpdateEvent, token);
Model.SpeedCounter = time;
2025-07-28 09:00:07 +02:00
timer1.Enabled = false;
}
catch (OperationCanceledException operationCanceledException)
2021-03-04 10:44:09 +01:00
{
2025-07-28 09:00:07 +02:00
_logger.LogInformation("Operazione Cancellata");
2021-03-04 10:44:09 +01:00
}
2025-07-28 09:00:07 +02:00
finally
{
2025-07-29 11:07:49 +02:00
Model.MainToken?.Dispose();
Model.MainToken = null;
2025-07-28 09:00:07 +02:00
timer1.Tick -= Timer1OnTick;
}
Label10.Text = "Finito";
unlockUI();
}
private int _currentAmount = 0;
private int _previousAmount = 0;
private void Timer1OnTick(object sender, EventArgs e)
{
_previousAmount = _currentAmount;
_currentAmount = _results.Count;
int diff = _currentAmount - _previousAmount;
2025-07-29 10:34:23 +02:00
Model.SpeedCounter = $"{diff} f/m";
2025-07-28 09:00:07 +02:00
}
2021-03-04 10:44:09 +01:00
2025-07-28 09:00:07 +02:00
private void UpdateCounter(string text)
{
Label10.Invoke(new Action(() => Label10.Text = text));
}
}
public class PicInfo
{
public DirectoryInfo DirSource, DirDest, DirDestStart;
public string NomeImmagine;
public PicInfo(DirectoryInfo Dir_Source, DirectoryInfo Dir_Dest, DirectoryInfo Dir_DestStart,
string Nome_Immagine)
{
DirSource = Dir_Source;
DirDest = Dir_Dest;
DirDestStart = Dir_DestStart;
NomeImmagine = Nome_Immagine;
2021-03-04 10:44:09 +01:00
}
}