Catalog/imagecatalog/MainForm.vb

1502 lines
No EOL
61 KiB
VB.net

Imports System.Collections.Concurrent
Imports System.IO
Imports System.Drawing.Drawing2D
Imports System.Drawing.Imaging
Imports System.Threading
Imports System.Collections.Generic
Imports System.Drawing.Text
Imports System.Runtime.InteropServices
Imports System.Threading.Tasks
Imports CatalogVbLib
Imports MaddoShared
Public Delegate Sub XyThreadAdd(ByVal Info As String)
Public Class MainForm
#Const MULTI_THREADED_UI = True
Private StopAttivo As Boolean
Private WaterSelectColor As Boolean = False
'Private ContaFotoCuori As Integer
'Private TaskCuori() As PicInfo
Private MyPool As XYThreadPool = New XYThreadPool
Private ContaImmaginiThread As Integer
Private maxThreads As Integer = 15
Private minThreads As Integer = 5
Private Sub setDefaults()
txtSorgente.Text = ""
txtDestinazione.Text = ""
TextBox3.Text = "tn_"
TextBox4.Text = ""
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 = ""
TextBox7.Text = CStr(4)
TextBox8.Text = CStr(4)
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
Dim InstalledFonts As New InstalledFontCollection
' Gets the array of FontFamily objects associated with this FontCollection.
Dim fontfamilies() As FontFamily = InstalledFonts.Families()
' Populates font combobox with the font name
For Each fontFamily As FontFamily In fontfamilies
ComboBox3.Items.Add(fontFamily.Name)
Next
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
End Sub
<DllImport("kernel32.dll", SetLastError:=True)>
Private Shared Function AllocConsole() As Boolean
End Function
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Application.EnableVisualStyles()
setDefaults()
#If Not DEBUG Then
AllocConsole()
#End If
Console.WriteLine("Programma avviato")
End Sub
Private Sub FixPaths()
If txtSorgente.Text.EndsWith("\") = False Then
txtSorgente.Text &= "\"
End If
If txtDestinazione.Text.EndsWith("\") = False Then
txtDestinazione.Text &= "\"
End If
End Sub
Private Sub lockUI()
TabControl1.Enabled = False
Button5.Enabled = False
Button6.Enabled = False
btnCreaCatalogo.Enabled = False
End Sub
Private Sub unlockUI()
TabControl1.Enabled = True
Button5.Enabled = True
Button6.Enabled = True
btnCreaCatalogo.Enabled = True
End Sub
Private Sub btnCreaCatalogo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCreaCatalogo.Click
lockUI()
Dim timeStart As Date
Dim timeStop As Date
timeStart = TimeOfDay
FixPaths()
Label10.Text = ""
lblFotoTotaliNum.Text = "0"
Label18.Text = "0"
Label43.Text = "-s"
maxThreads = CInt(TextBox7.Text)
minThreads = CInt(TextBox8.Text)
If rdbNuovoMetodo.Checked Then
setPicSettings(txtSorgente.Text, txtDestinazione.Text)
ProgressBar1.Minimum = 0
ProgressBar1.Step = 1
ProgressBar1.Value = 0
Dim t1 As New Threading.Thread(AddressOf creaCatalogoThread)
t1.IsBackground = False
t1.Start()
ElseIf rdbVecchioMetodo.Checked Then
creaCatalogo(timeStart, timeStop)
unlockUI()
End If
End Sub
Private Sub creaCatalogoThread()
Dim timeStart As Date = TimeOfDay
MyPool.StopThreadPool()
MyPool.StartThreadPool(minThreads, maxThreads)
ContaImmaginiThread = 0
'creaImmaginiWithThreadMod(txtSorgente.Text, txtDestinazione.Text)
creaimmaginiWithThreadDict(txtSorgente.Text, txtDestinazione.Text)
Dim ThAttivo As ThreadPoolWorkItem = Nothing
Dim i As Integer = 0
#Const asfd = 1
#If asfd = 1 Then
Do Until i = ContaImmaginiThread
Thread.Sleep(100)
ThAttivo = MyPool.ExtractWorkItem()
If ThAttivo IsNot Nothing Then
i += 1
'stepProgressBar()
Dim threads As Integer = MyPool.GetThreadCount()
setLabel10Text("File: " & ThAttivo.m_sName & " Threads: " & CStr(threads))
'setLabel18Text(ContaImmaginiThread.ToString)
'setLabel18Text(i.ToString)
'Label10.Text = "File: " & ThAttivo.m_sName
'Label18.Text = ContaImmaginiThread.ToString
End If
Loop
MyPool.StopThreadPool()
Dim timeStop As Date = TimeOfDay
setLabel10Text("Finito")
setLabel43Text(CalcTime(timeStart, timeStop, ContaImmaginiThread))
#End If
End Sub
Private Sub creaCatalogo(timeStart As Date, timeStop As Date)
'asdfg
MyPool.StopThreadPool()
MyPool.StartThreadPool(minThreads, maxThreads)
ContaImmaginiThread = 0
CreaImmaginiWithThread(txtSorgente.Text, txtDestinazione.Text)
Dim ThAttivo As ThreadPoolWorkItem = Nothing
Dim i As Integer = 0
Do Until i = ContaImmaginiThread
Thread.Sleep(100)
ThAttivo = MyPool.ExtractWorkItem()
If ThAttivo IsNot Nothing Then
i += 1
Label10.Text = "File: " & ThAttivo.m_sName
Label18.Text = ContaImmaginiThread.ToString
End If
Loop
MyPool.StopThreadPool()
timeStop = TimeOfDay
CalcTime(timeStart, timeStop, ContaImmaginiThread)
Label10.Text = "Finito"
If CheckBox22.Checked = True Then
Shell("%windir%\System32\shutdown.exe")
End If
End Sub
Private Function CalcTime(ByVal timeStart As Date, ByVal timeStop As Date, ByVal numFoto As Integer) As String
Dim timediffH, timediffS As Long
Dim timediffM As Long
timediffM = DateAndTime.DateDiff(DateInterval.Minute, timeStart, timeStop)
timediffS = DateAndTime.DateDiff(DateInterval.Second, timeStart, timeStop)
timediffH = DateAndTime.DateDiff(DateInterval.Hour, timeStart, timeStop)
'dim s As String = "H:" + timediffH.ToString + " M:" + timediffM.ToString + " S:" + timediffS.ToString
'Label43.Text = "H:" + timediffH.ToString + " M:" + timediffM.ToString + " S:" + timediffS.ToString
Dim fotoSec As Double = numFoto / CDbl(timediffS)
Dim fotoMin As Double = numFoto / CDbl(timediffM)
Dim fotoOra As Double = numFoto / CDbl(timediffH)
Dim s As String = "S: " + timediffS.ToString + "; F/s: " + fotoSec.ToString("0.000") '+ " F/m: " + fotoMin.ToString("0.00") + " F/h: " + fotoOra.ToString("0.00")
Return s
End Function
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim DirSearch As FolderBrowserDialog = New FolderBrowserDialog
DirSearch.SelectedPath = txtSorgente.Text
If DialogResult.OK = DirSearch.ShowDialog() Then
Dim DirectoryScelta As String = DirSearch.SelectedPath
If DirectoryScelta.EndsWith("\") = False Then
DirectoryScelta &= "\"
End If
txtSorgente.Text = DirectoryScelta
End If
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim DirSearch As FolderBrowserDialog = New FolderBrowserDialog
DirSearch.SelectedPath = txtDestinazione.Text
If DialogResult.OK = DirSearch.ShowDialog() Then
Dim DirectoryScelta As String = DirSearch.SelectedPath
If DirectoryScelta.EndsWith("\") = False Then
DirectoryScelta &= "\"
End If
txtDestinazione.Text = DirectoryScelta
End If
'Dim openFileDialog As OpenFileDialog = New OpenFileDialog
'Dim openFileDialog As OpenFileDialog = New OpenFileDialog
'openFileDialog.InitialDirectory = TextBox1.Text
'openFileDialog.Filter = "Bitmap files (*.bmp)|*.bmp|Jpeg files (*.jpg)|*.jpg|All valid files (*.*)|*.*"
'openFileDialog.FilterIndex = 2
'openFileDialog.RestoreDirectory = True
'If DialogResult.OK = openFileDialog.ShowDialog() Then
' Dim IlNome As String = openFileDialog.FileName
' Dim NomeFine As String = ""
' Dim i As Integer
' Dim Elenco As String()
' Elenco = IlNome.Split(New Char() {"\"c})
' For i = 0 To Elenco.Length - 1
' NomeFine &= Elenco(i) & "\"
' Next
' TextBox1.Text = NomeFine
'End If
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim SaveFileDlg As SaveFileDialog = New SaveFileDialog
'SaveFileDlg.InitialDirectory = "c:\"
SaveFileDlg.Filter = "Setup (*.xml)|*.xml|All valid files (*.*)|*.*"
SaveFileDlg.FilterIndex = 0
SaveFileDlg.RestoreDirectory = True
If DialogResult.OK = SaveFileDlg.ShowDialog Then
Dim IlNome As String = SaveFileDlg.FileName
SetupIni.NomeFileSetup = IlNome
SetupIni.AggiornaParametro("DirSorgente", txtSorgente.Text)
SetupIni.AggiornaParametro("DirDestinazione", txtDestinazione.Text)
SetupIni.AggiornaParametro("DirSottoDirectory", chkAggiornaSottodirectory.Checked)
SetupIni.AggiornaParametro("DirDividiDestinazione", chkCreaSottocartelle.Checked)
SetupIni.AggiornaParametro("DirDividiNumFile", txtFilePerCartella.Text)
SetupIni.AggiornaParametro("DirDividiSuffisso", txtSuffissoCartelle.Text)
SetupIni.AggiornaParametro("DirDividiNumCifre", txtCifreContatore.Text)
If rdbNumProgressiva.Checked = True Then
SetupIni.AggiornaParametro("DirDividiTipoNumerazione", "Progressiva")
Else
SetupIni.AggiornaParametro("DirDividiTipoNumerazione", "Files")
End If
SetupIni.AggiornaParametro("MiniatureCrea", CheckBox1.Checked)
SetupIni.AggiornaParametro("MiniatureSuffisso", TextBox3.Text)
SetupIni.AggiornaParametro("MiniatureAltezza", TextBox5.Text)
SetupIni.AggiornaParametro("MiniatureLarghezza", TextBox6.Text)
SetupIni.AggiornaParametro("MiniatureAddScritta", RadioButton3.Checked)
SetupIni.AggiornaParametro("MiniatureAddOrario", RadioButton4.Checked)
SetupIni.AggiornaParametro("FotoAltezza", TextBox27.Text)
SetupIni.AggiornaParametro("FotoLarghezza", TextBox28.Text)
'SetupIni.AggiornaParametro("FotoCodice", TextBox13.Text)
'SetupIni.AggiornaParametro("FotoDimOriginali", CheckBox2.Checked)
SetupIni.AggiornaParametro("FontDimensione", TextBox11.Text)
SetupIni.AggiornaParametro("FontDimensioneMiniatura", TextBox25.Text)
SetupIni.AggiornaParametro("FontBold", CheckBox3.Checked)
SetupIni.AggiornaParametro("FontNome", ComboBox3.Text)
SetupIni.AggiornaParametro("TestoTesto", TextBox4.Text)
SetupIni.AggiornaParametro("TestoTrasparente", TextBox9.Text)
SetupIni.AggiornaParametro("TestoMargine", TextBox12.Text)
SetupIni.AggiornaParametro("TestoPosizione", ComboBox1.Text)
SetupIni.AggiornaParametro("TestoAllineamento", ComboBox2.Text)
SetupIni.AggiornaParametro("MarchioFile", TextBox10.Text)
SetupIni.AggiornaParametro("MarchioAltezza", TextBox14.Text)
SetupIni.AggiornaParametro("MarchioLarghezza", TextBox15.Text)
SetupIni.AggiornaParametro("MarchioMargine", TextBox16.Text)
SetupIni.AggiornaParametro("MarchioAllOrizzontale", ComboBox4.Text)
SetupIni.AggiornaParametro("MarchioAllVerticale", ComboBox5.Text)
SetupIni.AggiornaParametro("MarchioTrasparenza", TextBox19.Text)
SetupIni.AggiornaParametro("MarchioAggiungi", CheckBox5.Checked)
SetupIni.AggiornaParametro("TempoGara", CheckBox7.Checked)
SetupIni.AggiornaParametro("Orario", CheckBox8.Checked)
SetupIni.AggiornaParametro("EtichettaOrario", TextBox18.Text)
SetupIni.AggiornaParametro("GeneraleForzaJpg", chkForzaJpg.Checked)
SetupIni.AggiornaParametro("GeneraleRotazioneAutomatica", chkRotazioneAutomatica.Checked)
SetupIni.AggiornaParametro("GrandezzaVerticale", TextBox30.Text)
SetupIni.AggiornaParametro("MargineVerticale", TextBox31.Text)
SetupIni.AggiornaParametro("DimensioniOriginali", CheckBox15.Checked)
SetupIni.AggiornaParametro("TestoVerticale", TextBox29.Text)
SetupIni.AggiornaParametro("NomeMiniatura", RadioButton6.Checked)
SetupIni.AggiornaParametro("DataFoto", CheckBox16.Checked)
SetupIni.AggiornaParametro("NumeroFoto", CheckBox17.Checked)
SetupIni.AggiornaParametro("ColoreTestoRGB", TextBox34.Text)
SetupIni.AggiornaParametro("TempoSmall", RadioButton5.Checked)
SetupIni.AggiornaParametro("NumTempoSmall", RadioButton7.Checked)
SetupIni.AggiornaParametro("CompressioneJpeg", TextBox32.Text)
SetupIni.AggiornaParametro("CompressioneJpegMiniatura", TextBox33.Text)
SetupIni.SalvaParametriSetup()
Me.Text = "Image Catalog - " & LeggiSoloNomeFile(IlNome)
End If
End Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim openFileDialog As OpenFileDialog = New OpenFileDialog
'openFileDialog.InitialDirectory = TextBox1.Text
openFileDialog.Filter = "Setup (*.xml)|*.xml|All valid files (*.*)|*.*"
openFileDialog.FilterIndex = 0
openFileDialog.RestoreDirectory = True
If DialogResult.OK = openFileDialog.ShowDialog() Then
Dim IlNome As String = openFileDialog.FileName
SetupIni.NomeFileSetup = IlNome
SetupIni.CaricaParametriSetup()
txtSorgente.Text = SetupIni.LeggiParametroString("DirSorgente")
txtDestinazione.Text = SetupIni.LeggiParametroString("DirDestinazione")
chkAggiornaSottodirectory.Checked = SetupIni.LeggiParametroBoolean("DirSottoDirectory")
chkCreaSottocartelle.Checked = SetupIni.LeggiParametroBoolean("DirDividiDestinazione")
txtFilePerCartella.Text = SetupIni.LeggiParametroString("DirDividiNumFile")
txtSuffissoCartelle.Text = SetupIni.LeggiParametroString("DirDividiSuffisso")
txtCifreContatore.Text = SetupIni.LeggiParametroString("DirDividiNumCifre")
Dim TestoTemp As String = SetupIni.LeggiParametroString("DirDividiTipoNumerazione")
If TestoTemp.ToUpper = "PROGRESSIVA" Then
rdbNumProgressiva.Checked = True
Else
rdbNumFiles.Checked = True
End If
CheckBox1.Checked = SetupIni.LeggiParametroBoolean("MiniatureCrea")
TextBox3.Text = SetupIni.LeggiParametroString("MiniatureSuffisso")
TextBox5.Text = SetupIni.LeggiParametroString("MiniatureAltezza")
TextBox6.Text = SetupIni.LeggiParametroString("MiniatureLarghezza")
RadioButton3.Checked = SetupIni.LeggiParametroBoolean("MiniatureAddScritta")
RadioButton4.Checked = SetupIni.LeggiParametroBoolean("MiniatureAddOrario")
TextBox27.Text = SetupIni.LeggiParametroString("FotoAltezza")
TextBox28.Text = SetupIni.LeggiParametroString("FotoLarghezza")
'TextBox13.Text = SetupIni.LeggiParametroString("FotoCodice")
'CheckBox2.Checked = SetupIni.LeggiParametroBoolean("FotoDimOriginali")
TextBox11.Text = SetupIni.LeggiParametroString("FontDimensione")
TextBox25.Text = SetupIni.LeggiParametroString("FontDimensioneMiniatura")
CheckBox3.Checked = SetupIni.LeggiParametroBoolean("FontBold")
ComboBox3.Text = SetupIni.LeggiParametroString("FontNome")
If TextBox25.Text = "" Then
TextBox25.Text = "0"
End If
TextBox4.Text = SetupIni.LeggiParametroString("TestoTesto")
TextBox9.Text = SetupIni.LeggiParametroString("TestoTrasparente")
TextBox12.Text = SetupIni.LeggiParametroString("TestoMargine")
ComboBox1.Text = SetupIni.LeggiParametroString("TestoPosizione")
ComboBox2.Text = SetupIni.LeggiParametroString("TestoAllineamento")
TextBox10.Text = SetupIni.LeggiParametroString("MarchioFile")
TextBox14.Text = SetupIni.LeggiParametroString("MarchioAltezza")
TextBox15.Text = SetupIni.LeggiParametroString("MarchioLarghezza")
TextBox16.Text = SetupIni.LeggiParametroString("MarchioMargine")
ComboBox4.Text = SetupIni.LeggiParametroString("MarchioAllOrizzontale")
ComboBox5.Text = SetupIni.LeggiParametroString("MarchioAllVerticale")
TextBox19.Text = SetupIni.LeggiParametroString("MarchioTrasparenza")
CheckBox5.Checked = SetupIni.LeggiParametroBoolean("MarchioAggiungi")
CheckBox7.Checked = SetupIni.LeggiParametroBoolean("TempoGara")
CheckBox8.Checked = SetupIni.LeggiParametroBoolean("Orario")
TextBox18.Text = SetupIni.LeggiParametroString("EtichettaOrario")
chkForzaJpg.Checked = SetupIni.LeggiParametroBoolean("GeneraleForzaJpg")
chkRotazioneAutomatica.Checked = SetupIni.LeggiParametroBoolean("GeneraleRotazioneAutomatica")
TextBox30.Text = SetupIni.LeggiParametroString("GrandezzaVerticale")
TextBox31.Text = SetupIni.LeggiParametroString("MargineVerticale")
CheckBox15.Checked = SetupIni.LeggiParametroBoolean("DimensioniOriginali")
TextBox29.Text = SetupIni.LeggiParametroString("TestoVerticale")
RadioButton6.Checked = SetupIni.LeggiParametroBoolean("NomeMiniatura")
CheckBox16.Checked = SetupIni.LeggiParametroBoolean("DataFoto")
CheckBox17.Checked = SetupIni.LeggiParametroBoolean("NumeroFoto")
RadioButton5.Checked = SetupIni.LeggiParametroBoolean("TempoSmall")
RadioButton7.Checked = SetupIni.LeggiParametroBoolean("NumTempoSmall")
TextBox32.Text = SetupIni.LeggiParametroString("CompressioneJpeg")
TextBox33.Text = SetupIni.LeggiParametroString("CompressioneJpegMiniatura")
TextBox34.Text = SetupIni.LeggiParametroString("ColoreTestoRGB")
If File.Exists(TextBox10.Text) Then
PictureBox1.Image = Image.FromFile(TextBox10.Text)
If PictureBox1.Image.Height >= PictureBox1.Image.Width Then
PictureBox1.Height = 160
PictureBox1.Width = CType(160 * PictureBox1.Image.Width / PictureBox1.Image.Height, Integer)
Else
PictureBox1.Width = 224
PictureBox1.Height = CType(224 * PictureBox1.Image.Height / PictureBox1.Image.Width, Integer)
End If
End If
Me.Text = "Image Catalog - " & LeggiSoloNomeFile(IlNome)
End If
End Sub
Private Sub setPicSettings(ByVal SourcePath As String, ByVal DestPath As String)
Dim SourceDir As DirectoryInfo = New DirectoryInfo(SourcePath)
Dim DestDirStart As DirectoryInfo = New DirectoryInfo(DestPath)
Dim DestDir As DirectoryInfo = Nothing
PicSettings.DirectorySorgente = txtSorgente.Text
PicSettings.DirectoryDestinazione = txtDestinazione.Text
'PicSettings.DestDir = DestDir
'PicSettings.SourceDir = SourceDir
'PicSettings.DestDirStart = DestDirStart
PicSettings.DimStandard = CType(TextBox11.Text, Integer)
PicSettings.DimStandardMiniatura = CType(TextBox25.Text, Integer)
PicSettings.UsaOrarioMiniatura = CheckBox12.Checked
PicSettings.UsaOrarioTestoApplicare = CheckBox8.Checked
PicSettings.UsaTempoGaraTestoApplicare = CheckBox7.Checked
PicSettings.UsaRotazioneAutomatica = chkRotazioneAutomatica.Checked
PicSettings.UsaForzaJpg = chkForzaJpg.Checked
If CheckBox17.Checked Then
PicSettings.TestoNome = True
Else
PicSettings.TestoNome = False
End If
If CheckBox16.Checked Then
PicSettings.NomeData = True
Else
PicSettings.NomeData = False
End If
PicSettings.TestoFirmaStart = TextBox4.Text
PicSettings.TestoFirmaStartV = TextBox29.Text
PicSettings.DataPartenza = DateTimePicker1.Value
PicSettings.TestoOrario = TextBox18.Text
PicSettings.AltezzaSmall = CType(TextBox6.Text, Integer)
PicSettings.LarghezzaSmall = CType(TextBox5.Text, Integer)
PicSettings.CreaMiniature = CheckBox1.Checked
PicSettings.AggiungiScritteMiniature = RadioButton3.Checked
PicSettings.AggTempoGaraMin = RadioButton5.Checked
PicSettings.AggNumTempMin = RadioButton7.Checked
PicSettings.DimVert = CType(TextBox30.Text, Integer)
PicSettings.MargVert = CType(TextBox31.Text, Integer)
'PicSettings.NomeFileChild = childFile.Name
PicSettings.Suffisso = TextBox3.Text
'PicSettings.Codice = TextBox13.Text
PicSettings.Trasparenza = CType(TextBox9.Text, Integer)
PicSettings.IlFont = ComboBox3.SelectedItem.ToString
PicSettings.Grassetto = CheckBox3.Checked
PicSettings.Posizione = ComboBox1.SelectedItem.ToString
PicSettings.Allineamento = ComboBox2.SelectedItem.ToString
PicSettings.Margine = CType(TextBox12.Text, Integer)
PicSettings.LogoAltezza = CType(TextBox14.Text, Integer)
PicSettings.LogoLarghezza = CType(TextBox15.Text, Integer)
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 = CType(TextBox27.Text, Integer)
PicSettings.LarghezzaBig = CType(TextBox28.Text, Integer)
PicSettings.DimMin = CType(TextBox25.Text, Integer)
PicSettings.TestoMin = RadioButton6.Checked
PicSettings.jpegQuality = CLng(TextBox32.Text)
PicSettings.jpegQualityMin = CLng(TextBox33.Text)
PicSettings.mainForm = Me
End Sub
Private Function makeFilesList(ByVal SourcePath As String) As List(Of List(Of FileInfo))
Dim SourceDir As DirectoryInfo = New DirectoryInfo(SourcePath)
Dim DestDir As DirectoryInfo = Nothing
Dim NumFileXDir As Integer = CType(txtFilePerCartella.Text, Integer)
Dim SuffixDir As String = txtSuffissoCartelle.Text
Dim NumCifreDir As Integer = CType(txtCifreContatore.Text, Integer)
Dim DividiFile As Boolean = False
StopAttivo = False
Dim FileConta As Integer = 0
Dim ContaFileXDir As Integer = 0
Dim ContaDirXDir As Integer = 0
Dim TestoTemp As String = ""
Dim ContaTemp As Integer = 0
Dim picList As New List(Of FileInfo)
Dim dirList As New List(Of List(Of FileInfo))
'controlla directory principale
'Dim childFile As FileInfo
'For Each childFile In SourceDir.GetFiles("*.jpg")
' picList.Add(childFile)
'Next
'picList = getFiles(SourceDir, SearchOption.AllDirectories)
'dirList.Add(picList)
'controlla sottodirectory
If chkAggiornaSottodirectory.Checked = True Then
Dim subDir As DirectoryInfo
For Each subDir In SourceDir.GetDirectories()
Dim filesList As New List(Of FileInfo)
filesList = getFiles(subDir)
dirList.Add(filesList)
Next
End If
Return dirList
End Function
Private Function getFiles(sourceDir As DirectoryInfo) As List(Of FileInfo)
Dim picList As New List(Of FileInfo)
Dim childFile As FileInfo
For Each childFile In sourceDir.GetFiles("*.jpg")
picList.Add(childFile)
Next
Return picList
End Function
Private Function getDirsDict(SourcePath As String, DestPath As String) As Dictionary(Of FileInfo, DirectoryInfo)
Dim SourceDir As DirectoryInfo = New DirectoryInfo(SourcePath)
Dim DestDirStart As DirectoryInfo = New DirectoryInfo(DestPath)
Dim DestDir As DirectoryInfo = Nothing
Dim NumFileXDir As Integer = CType(txtFilePerCartella.Text, Integer)
Dim SuffixDir As String = txtSuffissoCartelle.Text
Dim NumCifreDir As Integer = CType(txtCifreContatore.Text, Integer)
Dim DividiFile As Boolean = False
StopAttivo = False
Dim FileConta As Integer = 0
Dim ContaFileXDir As Integer = 0
Dim ContaDirXDir As Integer = 0
'Dim TestoTemp As String = ""
'Dim ContaTemp As Integer = 0
Dim dirSourceDest As Dictionary(Of FileInfo, DirectoryInfo) = New Dictionary(Of FileInfo, DirectoryInfo)
If SourceDir.Exists Then
If chkAggiornaSottodirectory.Checked Then
FileConta = SourceDir.GetFiles("*.jpg", SearchOption.AllDirectories).GetLength(0)
Else
FileConta = SourceDir.GetFiles("*.jpg", SearchOption.TopDirectoryOnly).GetLength(0)
End If
Dim a As String = (CType(lblFotoTotaliNum.Text, Integer) + FileConta).ToString
setLabel17Text(a)
setProgressBarMaximum(CInt(a))
If chkAggiornaSottodirectory.Checked Then
For Each directory As DirectoryInfo In SourceDir.GetDirectories
For Each file As FileInfo In directory.GetFiles(".jpg")
Next
Next
End If
For Each file As FileInfo In SourceDir.GetFiles("*.jpg", SearchOption.AllDirectories)
Next
If NumFileXDir > 0 And chkCreaSottocartelle.Checked = True And FileConta > NumFileXDir Then
DividiFile = True
Else
DestDir = DestDirStart
If Not DestDir.Exists Then
DestDir.Create()
End If
DividiFile = False
End If
Dim filesList As New List(Of FileInfo)
If chkAggiornaSottodirectory.Checked Then
filesList.AddRange(SourceDir.GetFiles("*.jpg", SearchOption.AllDirectories))
filesList.AddRange(SourceDir.GetFiles("*.png", SearchOption.AllDirectories))
Else
filesList.AddRange(SourceDir.GetFiles("*.jpg", SearchOption.TopDirectoryOnly))
filesList.AddRange(SourceDir.GetFiles("*.png", SearchOption.TopDirectoryOnly))
End If
For Each file As FileInfo In filesList
ContaFileXDir += 1
If DividiFile = True Then
If ContaFileXDir = (ContaDirXDir * NumFileXDir) + 1 Then
ContaDirXDir += 1
Dim TestoTemp As String
If rdbNumProgressiva.Checked = True Then
TestoTemp = ContaDirXDir.ToString
Else
TestoTemp = (ContaDirXDir * NumFileXDir).ToString
End If
For ContaTemp As Integer = 1 To (NumCifreDir - TestoTemp.Length)
TestoTemp = "0" & TestoTemp
Next
DestDir = New DirectoryInfo(Path.Combine(DestDirStart.FullName, SuffixDir, TestoTemp))
'DestDir = New DirectoryInfo(DestDirStart.FullName & IIf(Not DestDirStart.FullName.EndsWith("\"), "\", String.Empty).ToString & SuffixDir & TestoTemp)
dirSourceDest.Add(file, DestDir)
If Not DestDir.Exists Then
DestDir.Create()
End If
End If
End If
Next
End If
Return dirSourceDest
End Function
Private Sub setLabel17Text(ByVal text As String)
If lblFotoTotaliNum.InvokeRequired Then
lblFotoTotaliNum.Invoke(New Action(Of String)(AddressOf setLabel17Text), text)
Else
lblFotoTotaliNum.Text = text
End If
End Sub
Private Sub setLabel10Text(ByVal text As String)
If Label10.InvokeRequired Then
Label10.Invoke(New Action(Of String)(AddressOf setLabel10Text), text)
Else
Label10.Text = text
End If
End Sub
Public Sub stepProgressBar()
If ProgressBar1.InvokeRequired Then
ProgressBar1.Invoke(New MethodInvoker(AddressOf ProgressBar1.PerformStep))
Else
ProgressBar1.PerformStep()
End If
setLabel18Text(ProgressBar1.Value.ToString)
End Sub
Private Sub setProgressBarMaximum(ByVal value As Integer)
If ProgressBar1.InvokeRequired Then
ProgressBar1.Invoke(New Action(Of Integer)(AddressOf setProgressBarMaximum), value)
Else
ProgressBar1.Maximum = value
End If
End Sub
Private Sub setProgressBarValue(ByVal value As Integer)
If ProgressBar1.InvokeRequired Then
ProgressBar1.Invoke(New Action(Of Integer)(AddressOf setProgressBarValue), value)
Else
ProgressBar1.Value = value
End If
End Sub
Private Sub setLabel18Text(ByVal text As String)
If Label18.InvokeRequired Then
Label18.Invoke(New Action(Of String)(AddressOf setLabel18Text), text)
Else
Label18.Text = text
End If
End Sub
Private Sub setLabel43Text(ByVal text As String)
If Label43.InvokeRequired Then
Label43.Invoke(New Action(Of String)(AddressOf setLabel43Text), text)
Else
Label43.Text = text
End If
End Sub
Private Sub creaImmaginiWithThreadMod(ByVal SourcePath As String, ByVal DestPath As String)
Dim SourceDir As DirectoryInfo = New DirectoryInfo(SourcePath)
Dim DestDirStart As DirectoryInfo = New DirectoryInfo(DestPath)
Dim DestDir As DirectoryInfo = Nothing
Dim NumFileXDir As Integer = CType(txtFilePerCartella.Text, Integer)
Dim SuffixDir As String = txtSuffissoCartelle.Text
Dim NumCifreDir As Integer = CType(txtCifreContatore.Text, Integer)
Dim DividiFile As Boolean = False
StopAttivo = False
Dim FileConta As Integer = 0
Dim ContaFileXDir As Integer = 0
Dim ContaDirXDir As Integer = 0
Dim TestoTemp As String = ""
Dim ContaTemp As Integer = 0
If SourceDir.Exists Then
FileConta = SourceDir.GetFiles("*.jpg").GetLength(0)
'Label17.Text = (CType(Label17.Text, Integer) + FileConta).ToString
Dim a As String = (CType(lblFotoTotaliNum.Text, Integer) + FileConta).ToString
setLabel17Text(a)
setProgressBarMaximum(CInt(a))
If NumFileXDir > 0 And chkCreaSottocartelle.Checked = True Then
If FileConta > NumFileXDir Then
DividiFile = True
Else
DestDir = DestDirStart
If Not DestDir.Exists Then
DestDir.Create()
End If
DividiFile = False
End If
Else
DestDir = DestDirStart
If Not DestDir.Exists Then
DestDir.Create()
End If
DividiFile = False
End If
Dim childFile As FileInfo
For Each childFile In SourceDir.GetFiles("*.jpg")
If StopAttivo = True Then
Exit For
End If
setLabel10Text("File: " & childFile.Name)
Dim b As String = (CType(Label18.Text, Integer) + 1).ToString
'setLabel18Text(b)
'setProgressBarValue(CInt(b))
'Label10.Text = "File: " & childFile.Name
'Label18.Text = (CType(Label18.Text, Integer) + 1).ToString
'Application.DoEvents()
ContaFileXDir += 1
If DividiFile = True Then
If ContaFileXDir = (ContaDirXDir * NumFileXDir) + 1 Then
ContaDirXDir += 1
If rdbNumProgressiva.Checked = True Then
TestoTemp = ContaDirXDir.ToString
Else
TestoTemp = (ContaDirXDir * NumFileXDir).ToString
End If
For ContaTemp = 1 To (NumCifreDir - TestoTemp.Length)
TestoTemp = "0" & TestoTemp
Next
If DestDirStart.FullName.EndsWith("\") Then
DestDir = New DirectoryInfo(DestDirStart.FullName & SuffixDir & TestoTemp)
Else
DestDir = New DirectoryInfo(DestDirStart.FullName & "\" & SuffixDir & TestoTemp)
End If
If Not DestDir.Exists Then
DestDir.Create()
End If
End If
End If
'Application.DoEvents()
Dim ClsCreaImmagine As New ImageCreatorSharp(childFile.Name, SourceDir, DestDir, DestDirStart)
' ClsCreaImmagine.NomeFileChild = childFile.Name
' ClsCreaImmagine.DestDir = DestDir
' ClsCreaImmagine.SourceDir = SourceDir
' ClsCreaImmagine.DestDirStart = DestDirStart
ContaImmaginiThread += 1
MyPool.InsertWorkItem(childFile.Name, New XyThreadAdd(AddressOf ClsCreaImmagine.CreaImmagineThread), New Object(0) {childFile.Name}, True)
Next
' copy all the sub-directories by recursively calling this same routine
If chkAggiornaSottodirectory.Checked = True Then
Dim subDir As DirectoryInfo
For Each subDir In SourceDir.GetDirectories()
creaImmaginiWithThreadMod(subDir.FullName, Path.Combine(DestDir.FullName, subDir.Name))
Next
End If
End If
End Sub
Private Function getNumerazione() As Integer
Dim numerazione As Integer
If rdbNumProgressiva.Checked Then
numerazione = FileHelper.numerazione.Progressiva
Else
numerazione = FileHelper.numerazione.Files
End If
Return numerazione
End Function
Private Function GetNumerazioneEnum() As NumerazioneType
Dim numerazioneType As NumerazioneType
If rdbNumProgressiva.Checked Then
numerazioneType = NumerazioneType.Progressiva ' FileHelper.numerazione.Progressiva
Else
numerazioneType = NumerazioneType.Files ' FileHelper.numerazione.Files
End If
Return numerazioneType
End Function
Private Sub creaimmaginiWithThreadDict(ByVal SourcePath As String, ByVal DestPath As String)
Dim dirSourceDest As Dictionary(Of FileInfo, DirectoryInfo) = New Dictionary(Of FileInfo, DirectoryInfo)
If chkAggiornaSottodirectory.Checked And chkCreaSottocartelle.Checked Then
Dim helper As New FileHelper(CInt(txtFilePerCartella.Text), txtSuffissoCartelle.Text, CInt(txtCifreContatore.Text), getNumerazione())
'getfilesrecursive
dirSourceDest = helper.GetFilesRecursive(New DirectoryInfo(SourcePath), New DirectoryInfo(DestPath), "*.jpg")
ElseIf chkAggiornaSottodirectory.Checked And Not chkCreaSottocartelle.Checked Then
End If
'= getDirsDict(SourcePath, DestPath)
Dim pair As KeyValuePair(Of FileInfo, DirectoryInfo)
For Each pair In dirSourceDest
setLabel10Text("File: " & pair.Key.Name)
Dim b As String = (CType(Label18.Text, Integer) + 1).ToString
Dim ClsCreaImmagine As New ImageCreatorSharp(pair.Key, pair.Value)
ContaImmaginiThread += 1
MyPool.InsertWorkItem(pair.Key.Name, New XyThreadAdd(AddressOf ClsCreaImmagine.CreaImmagineThread), New Object(0) {pair.Key.Name}, True)
Next
End Sub
'il posto giusto dove fare modifiche
Private Sub CreaImmaginiWithThread(ByVal SourcePath As String, ByVal DestPath As String)
Dim SourceDir As DirectoryInfo = New DirectoryInfo(SourcePath)
Dim DestDirStart As DirectoryInfo = New DirectoryInfo(DestPath)
Dim DestDir As DirectoryInfo = Nothing
Dim NumFileXDir As Integer = CType(txtFilePerCartella.Text, Integer)
Dim SuffixDir As String = txtSuffissoCartelle.Text
Dim NumCifreDir As Integer = CType(txtCifreContatore.Text, Integer)
Dim DividiFile As Boolean = False
StopAttivo = False
Dim FileConta As Integer = 0
Dim ContaFileXDir As Integer = 0
Dim ContaDirXDir As Integer = 0
Dim TestoTemp As String = ""
Dim ContaTemp As Integer = 0
If SourceDir.Exists Then
FileConta = SourceDir.GetFiles("*.jpg").GetLength(0)
lblFotoTotaliNum.Text = (CType(lblFotoTotaliNum.Text, Integer) + FileConta).ToString
If NumFileXDir > 0 And chkCreaSottocartelle.Checked = True Then
If FileConta > NumFileXDir Then
DividiFile = True
Else
DestDir = DestDirStart
If Not DestDir.Exists Then
DestDir.Create()
End If
DividiFile = False
End If
Else
DestDir = DestDirStart
If Not DestDir.Exists Then
DestDir.Create()
End If
DividiFile = False
End If
Dim childFile As FileInfo
For Each childFile In SourceDir.GetFiles("*.jpg")
If StopAttivo = True Then
Exit For
End If
'Label10.Text = "File: " & childFile.Name
'Label18.Text = (CType(Label18.Text, Integer) + 1).ToString
'Application.DoEvents()
ContaFileXDir += 1
If DividiFile = True Then
If ContaFileXDir = (ContaDirXDir * NumFileXDir) + 1 Then
ContaDirXDir += 1
If rdbNumProgressiva.Checked = True Then
TestoTemp = ContaDirXDir.ToString
Else
TestoTemp = (ContaDirXDir * NumFileXDir).ToString
End If
For ContaTemp = 1 To (NumCifreDir - TestoTemp.Length)
TestoTemp = "0" & TestoTemp
Next
If DestDirStart.FullName.EndsWith("\") Then
DestDir = New DirectoryInfo(DestDirStart.FullName & SuffixDir & TestoTemp)
Else
DestDir = New DirectoryInfo(DestDirStart.FullName & "\" & SuffixDir & TestoTemp)
End If
If Not DestDir.Exists Then
DestDir.Create()
End If
End If
End If
Application.DoEvents()
Dim ClsCreaImmagine As New CreaImmagineSeparateThread
ClsCreaImmagine.DirectorySorgente = txtSorgente.Text
ClsCreaImmagine.DirectoryDestinazione = txtDestinazione.Text
ClsCreaImmagine.DestDir = DestDir
ClsCreaImmagine.SourceDir = SourceDir
ClsCreaImmagine.DestDirStart = DestDirStart
ClsCreaImmagine.DimStandard = CType(TextBox11.Text, Integer)
ClsCreaImmagine.DimStandardMiniatura = CType(TextBox25.Text, Integer)
ClsCreaImmagine.UsaOrarioMiniatura = CheckBox12.Checked
ClsCreaImmagine.UsaOrarioTestoApplicare = CheckBox8.Checked
ClsCreaImmagine.UsaTempoGaraTestoApplicare = CheckBox7.Checked
ClsCreaImmagine.UsaRotazioneAutomatica = chkRotazioneAutomatica.Checked
ClsCreaImmagine.UsaForzaJpg = chkForzaJpg.Checked
If CheckBox17.Checked Then
ClsCreaImmagine.TestoNome = True
Else
ClsCreaImmagine.TestoNome = False
End If
If CheckBox16.Checked Then
ClsCreaImmagine.NomeData = True
Else
ClsCreaImmagine.NomeData = False
End If
ClsCreaImmagine.TestoFirmaStart = TextBox4.Text
ClsCreaImmagine.TestoFirmaStartV = TextBox29.Text
ClsCreaImmagine.DataPartenza = DateTimePicker1.Value
ClsCreaImmagine.TestoOrario = TextBox18.Text
ClsCreaImmagine.AltezzaSmall = CType(TextBox5.Text, Integer)
ClsCreaImmagine.LarghezzaSmall = CType(TextBox5.Text, Integer)
ClsCreaImmagine.CreaMiniature = CheckBox1.Checked
ClsCreaImmagine.AggiungiScritteMiniature = RadioButton3.Checked
ClsCreaImmagine.AggTempoGaraMin = RadioButton5.Checked
ClsCreaImmagine.AggNumTempMin = RadioButton7.Checked
ClsCreaImmagine.DimVert = CType(TextBox30.Text, Integer)
ClsCreaImmagine.MargVert = CType(TextBox31.Text, Integer)
ClsCreaImmagine.NomeFileChild = childFile.Name
ClsCreaImmagine.Suffisso = TextBox3.Text
'ClsCreaImmagine.Codice = TextBox13.Text
ClsCreaImmagine.Trasparenza = CType(TextBox9.Text, Integer)
ClsCreaImmagine.IlFont = ComboBox3.SelectedItem.ToString
ClsCreaImmagine.Grassetto = CheckBox3.Checked
ClsCreaImmagine.Posizione = ComboBox1.SelectedItem.ToString
ClsCreaImmagine.Allineamento = ComboBox2.SelectedItem.ToString
ClsCreaImmagine.Margine = CType(TextBox12.Text, Integer)
ClsCreaImmagine.LogoAltezza = CType(TextBox14.Text, Integer)
ClsCreaImmagine.LogoLarghezza = CType(TextBox15.Text, Integer)
'ClsCreaImmagine.FontColoreR = CType(TextBox22.Text, Integer)
'ClsCreaImmagine.FontColoreG = CType(TextBox23.Text, Integer)
'ClsCreaImmagine.FontColoreB = CType(TextBox24.Text, Integer)
ClsCreaImmagine.fontColoreRGB = ColorTranslator.FromHtml(TextBox34.Text)
ClsCreaImmagine.LogoAggiungi = CheckBox5.Checked
ClsCreaImmagine.LogoNomeFile = TextBox10.Text
ClsCreaImmagine.LogoTrasparenza = TextBox19.Text
ClsCreaImmagine.LogoMargine = TextBox16.Text
ClsCreaImmagine.LogoPosizioneH = ComboBox4.Text
ClsCreaImmagine.LogoPosizioneV = ComboBox5.Text
ClsCreaImmagine.FotoGrandeDimOrigina = CheckBox15.Checked
ClsCreaImmagine.AltezzaBig = CType(TextBox27.Text, Integer)
ClsCreaImmagine.LarghezzaBig = CType(TextBox28.Text, Integer)
ClsCreaImmagine.DimMin = CType(TextBox25.Text, Integer)
ClsCreaImmagine.TestoMin = RadioButton6.Checked
ClsCreaImmagine.jpegQuality = CLng(TextBox32.Text)
ClsCreaImmagine.jpegQualityMin = CLng(TextBox33.Text)
ContaImmaginiThread += 1
MyPool.InsertWorkItem(childFile.Name, New XyThreadAdd(AddressOf ClsCreaImmagine.CreaImmagineThread), New Object(0) {childFile.Name}, True)
Next
' copy all the sub-directories by recursively calling this same routine
If chkAggiornaSottodirectory.Checked = True Then
Dim subDir As DirectoryInfo
For Each subDir In SourceDir.GetDirectories()
CreaImmaginiWithThread(subDir.FullName, Path.Combine(DestDir.FullName, subDir.Name))
Next
End If
End If
End Sub
Private Sub CopyDirectoryFile(ByVal SourcePath As String, ByVal DestPath As String, Optional ByVal OverWrite As Boolean = False)
Dim SourceDir As DirectoryInfo = New DirectoryInfo(SourcePath)
Dim DestDir As DirectoryInfo = New DirectoryInfo(DestPath)
If SourceDir.Exists Then
If Not DestDir.Exists Then
DestDir.Create()
End If
' copy all the files of the current directory
Dim childFile As FileInfo
For Each childFile In SourceDir.GetFiles()
If OverWrite Then
childFile.CopyTo(Path.Combine(DestDir.FullName, childFile.Name), True)
Else
' if overwrite = false, copy the file only if it does not exist
' this is done to avoid an IOException if a file already exists
' this way the other files can be copied anyway...
If Not File.Exists(Path.Combine(DestDir.FullName, childFile.Name)) Then
childFile.CopyTo(Path.Combine(DestDir.FullName, childFile.Name), False)
End If
End If
Next
' copy all the sub-directories by recursively calling this same routine
Dim subDir As DirectoryInfo
For Each subDir In SourceDir.GetDirectories()
CopyDirectoryFile(subDir.FullName, Path.Combine(DestDir.FullName, subDir.Name), OverWrite)
Next
End If
End Sub
Function NewthumbSize(ByVal currentwidth As Integer, ByVal currentheight As Integer, ByVal MaxPixel As Integer, ByVal TipoSize As String) As Size
' Calculate the Size of the New image
'*** Larghezza, Altezza, Auto
Dim tempMultiplier As Double
If TipoSize.ToUpper = "Larghezza".ToUpper Then
tempMultiplier = MaxPixel / currentwidth
ElseIf TipoSize.ToUpper = "Altezza".ToUpper Then
tempMultiplier = MaxPixel / currentheight
Else
If currentheight > currentwidth Then ' portrait
tempMultiplier = MaxPixel / currentheight
Else
tempMultiplier = MaxPixel / currentwidth
End If
End If
Dim NewSize As New Size(CInt(currentwidth * tempMultiplier), CInt(currentheight * tempMultiplier))
Return NewSize
End Function
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
StopAttivo = True
MyPool.StopThreadPool()
unlockUI()
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim openFileDialog As OpenFileDialog = New OpenFileDialog
'openFileDialog.InitialDirectory = TextBox1.Text
openFileDialog.Filter = "Immagini jpg (*.jpg)|*.jpg|Immagini gif (*.gif)|*.gif|Tutti i file (*.*)|*.*"
If TextBox10.Text.Length > 0 Then
openFileDialog.FileName = TextBox10.Text
End If
openFileDialog.FilterIndex = 0
openFileDialog.RestoreDirectory = True
If DialogResult.OK = openFileDialog.ShowDialog() Then
TextBox10.Text = openFileDialog.FileName
PictureBox1.Image = Image.FromFile(TextBox10.Text)
If PictureBox1.Image.Height >= PictureBox1.Image.Width Then
PictureBox1.Height = 160
PictureBox1.Width = CType(160 * PictureBox1.Image.Width / PictureBox1.Image.Height, Integer)
Else
PictureBox1.Width = 224
PictureBox1.Height = CType(224 * PictureBox1.Image.Height / PictureBox1.Image.Width, Integer)
End If
End If
End Sub
Private Function LeggiSoloNomeFile(ByVal FileName As String) As String
Dim Testo As String = FileName
Dim Risposta As String = ""
Dim Nomi() As String = Testo.Split(New Char() {"\"c})
If Nomi.Length > 1 Then
Risposta = Nomi(Nomi.Length - 1)
End If
Return Risposta
End Function
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
'GetColor()
'GetPixelColor(PictureBox1.PointToScreen(e.Location)).ToArgb.ToString("X8")
End Sub
Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
If e.Button = MouseButtons.Left Then
WaterSelectColor = True
Else
WaterSelectColor = False
End If
End Sub
'Private Declare Function CreateDC Lib "gdi32.dll" (ByVal strDriver As String, ByVal strDevice As String, ByVal strOutput As String, ByVal pData As IntPtr) As IntPtr
'Private Declare Function DeleteDC Lib "gdi32.dll" (ByVal hdc As IntPtr) As Boolean
'Private Declare Function GetPixel Lib "gdi32.dll" (ByVal hdc As IntPtr, ByVal x As Integer, ByVal y As Integer) As Integer
'Private Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As Point) As Boolean
'''' <summary>
'''' Get the color relative to mouse position
'''' </summary>
'Private Sub GetColor()
' Dim hdcScreen As IntPtr = CreateDC("Display", Nothing, Nothing, IntPtr.Zero)
' Dim pt As Point = New Point
' GetCursorPos(pt)
' Dim cr As Integer = GetPixel(hdcScreen, pt.X, pt.Y)
' DeleteDC(hdcScreen)
' Dim clr As Color = Color.FromArgb((cr And &HFF), (cr And &HFF00) >> 8, (cr And &HFF0000) >> 16)
' PictureBox3.BackColor = clr
' If WaterSelectColor = True Then
' PictureBox2.BackColor = clr
' End If
' WaterSelectColor = False
'End Sub
Private Function GetPixelColor(ByVal screenLocation As Point) As Color()
'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 Nothing
End Function
Private Sub Button8_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button8.Click
Dim MyDialog As 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
If (MyDialog.ShowDialog() = Windows.Forms.DialogResult.OK) Then
'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
End If
End Sub
Private Sub TextBox27_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub CheckBox18_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox18.CheckedChanged
CheckBox4.Checked = False
CheckBox12.Checked = False
End Sub
Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged
CheckBox18.Checked = False
End Sub
Private Sub CheckBox12_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox12.CheckedChanged
CheckBox18.Checked = False
End Sub
Private Sub Label27_Click(sender As Object, e As EventArgs) Handles Label27.Click
End Sub
Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles btnCreaCatalogoAsync.Click
lockUI()
'Dim timeStart As Date
'Dim timeStop As Date
'timeStart = TimeOfDay
FixPaths()
Label10.Text = "Elaborazione in corso..."
lblFotoTotaliNum.Text = "0"
Label18.Text = "0"
Label43.Text = "-s"
setPicSettings(txtSorgente.Text, txtDestinazione.Text)
ProgressBar1.Minimum = 0
ProgressBar1.Step = 1
ProgressBar1.Value = 0
'Await CreaCatalogoParallel()
Dim imgStf As ImageCreationStuff = New ImageCreationStuff()
Dim imageCreationOptions As ImageCreationStuff.Options = New ImageCreationStuff.Options()
With imageCreationOptions
.AggiornaSottodirectory = chkAggiornaSottodirectory.Checked
.CreaSottocartelle = chkCreaSottocartelle.Checked
.FilePerCartella = CInt(txtFilePerCartella.Text)
.SuffissoCartelle = txtSuffissoCartelle.Text
.CifreContatore = CInt(txtCifreContatore.Text)
.NumerazioneType = GetNumerazioneEnum()
.SourcePath = txtSorgente.Text
.DestinationPath = txtDestinazione.Text
.MaxThreads = CInt(TextBox7.Text)
.ChunksSize = CInt(TextBox8.Text)
.LinearExecution = rdbVecchioMetodo.Checked
End With
Dim time As String = Await imgStf.CreaCatalogoParallel(imageCreationOptions)
Label43.Text = time
Label10.Text = "Finito"
unlockUI()
End Sub
Private Sub UpdateCounter(text As String)
Label10.Invoke(Sub()
Label10.Text = text
End Sub)
End Sub
Private Async Function CreaCatalogoParallel() As Task
Dim timeStart As Date = TimeOfDay
ContaImmaginiThread = 0
setLabel10Text("Elaborazione in corso...")
Dim imgStf As ImageCreationStuff = New ImageCreationStuff()
Dim imageCreationOptions As ImageCreationStuff.Options = New ImageCreationStuff.Options()
With imageCreationOptions
.AggiornaSottodirectory = chkAggiornaSottodirectory.Checked
.CreaSottocartelle = chkCreaSottocartelle.Checked
.FilePerCartella = CInt(txtFilePerCartella.Text)
.SuffissoCartelle = txtSuffissoCartelle.Text
.CifreContatore = CInt(txtCifreContatore.Text)
.NumerazioneType = GetNumerazioneEnum()
.SourcePath = txtSorgente.Text
.DestinationPath = txtDestinazione.Text
End With
Await imgStf.CreaImmaginiParallel(imageCreationOptions)
'Await CreaImmaginiParallel(txtSorgente.Text, txtDestinazione.Text)
setLabel10Text("Finito")
Dim timeStop As Date = TimeOfDay
setLabel43Text(CalcTime(timeStart, timeStop, ContaImmaginiThread))
End Function
'Private Async Function CreaImmaginiParallel(ByVal SourcePath As String, ByVal DestPath As String) As Task
' Dim dataToProcess As List(Of FileData) = New List(Of FileData)
' 'Dim dirSourceDest As Dictionary(Of FileInfo, DirectoryInfo) = New Dictionary(Of FileInfo, DirectoryInfo)
' If chkAggiornaSottodirectory.Checked And chkCreaSottocartelle.Checked Then
' Dim helperSharp As New FileHelperSharp()
' 'Dim helper As New FileHelper(CInt(txtFilePerCartella.Text), txtSuffissoCartelle.Text, CInt(txtCifreContatore.Text), getNumerazione())
' 'getfilesrecursive
' Dim fileHelperOptions As FileHelperOptions = New FileHelperOptions()
' fileHelperOptions.FilesPerFolder = CInt(txtFilePerCartella.Text)
' fileHelperOptions.Suffix = txtSuffissoCartelle.Text
' fileHelperOptions.CounterSize = CInt(txtCifreContatore.Text)
' fileHelperOptions.NumerationType = GetNumerazioneEnum()
' dataToProcess = helperSharp.GetFilesRecursive(New DirectoryInfo(SourcePath), New DirectoryInfo(DestPath), "*.jpg", fileHelperOptions)
' 'dataToProcess = helper.GetFilesRecursiveParallel(New DirectoryInfo(SourcePath), New DirectoryInfo(DestPath), "*.jpg")
' ElseIf chkAggiornaSottodirectory.Checked And Not chkCreaSottocartelle.Checked Then
' ' TODO manca tutto?!?!?!?
' End If
' Dim scheduler As TaskScheduler = New ConcurrentExclusiveSchedulerPair(TaskScheduler.Default, Environment.ProcessorCount * 2).ConcurrentScheduler
' Dim test As IEnumerable(Of Task) = From d In dataToProcess Select Task.Factory.StartNew(Sub()
' 'setLabel10Text("File: " & p.File.Name)
' Dim b As String = (CType(Label18.Text, Integer) + 1).ToString
' Dim clsCreaImmagine As New ImageCreator(d.File, d.Directory)
' clsCreaImmagine.CreaImmagineThread(d.File.Name)
' ContaImmaginiThread += 1
' UpdateCounter(ContaImmaginiThread & " " & d.File.Name)
' End Sub, CancellationToken.None, TaskCreationOptions.LongRunning, scheduler) 'TODO Cancellation Token
' 'ThreadingHelper.StartAndWaitAllThrottled(test, CType(TextBox7.Text, Integer))
' Await Task.WhenAll(test)
' '= getDirsDict(SourcePath, DestPath)
' 'Parallel.ForEach(dataToProcess,
' ' Sub(p, state)
' ' 'setLabel10Text("File: " & p.File.Name)
' ' Dim b As String = (CType(Label18.Text, Integer) + 1).ToString
' ' Dim clsCreaImmagine As New ImageCreator(p.File, p.Directory)
' ' clsCreaImmagine.CreaImmagineThread(p.File.Name)
' ' ContaImmaginiThread += 1
' ' UpdateCounter(ContaImmaginiThread & " " & p.File.Name)
' ' 'MyPool.InsertWorkItem(p.File.Name, New XyThreadAdd(AddressOf ClsCreaImmagine.CreaImmagineThread), New Object(0) {p.File.Name}, True)
' ' ' TODO: BREAK ON STOP state.stop()
' ' End Sub)
' 'Dim pair As KeyValuePair(Of FileInfo, DirectoryInfo)
' 'For Each pair In dirSourceDest
' ' setLabel10Text("File: " & pair.Key.Name)
' ' Dim b As String = (CType(Label18.Text, Integer) + 1).ToString
' ' Dim ClsCreaImmagine As New ImageCreator(pair.Key, pair.Value)
' ' ContaImmaginiThread += 1
' ' MyPool.InsertWorkItem(pair.Key.Name, New XyThreadAdd(AddressOf ClsCreaImmagine.CreaImmagineThread), New Object(0) {pair.Key.Name}, True)
' 'Next
'End Function
End Class
Public Class PicInfo
Public DirSource, DirDest, DirDestStart As DirectoryInfo
Public NomeImmagine As String
Public Sub New(ByVal Dir_Source As DirectoryInfo, ByVal Dir_Dest As DirectoryInfo, ByVal Dir_DestStart As DirectoryInfo, ByVal Nome_Immagine As String)
DirSource = Dir_Source
DirDest = Dir_Dest
DirDestStart = Dir_DestStart
NomeImmagine = Nome_Immagine
End Sub
End Class