Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigXml/Configs.vb =================================================================== diff -u -r1936 -r1940 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigXml/Configs.vb (.../Configs.vb) (revision 1936) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigXml/Configs.vb (.../Configs.vb) (revision 1940) @@ -4,43 +4,43 @@ Public Class Configs Implements IConfigsClass - Private ReadOnly _xmlMapper As XmlMapper + Private ReadOnly _xmlMapper As IXmlMapper Private _configData As ConfigData Private _padNaarHoofdconfigBestand As String - Sub New(xmlMapper As XmlMapper) + + Sub New(xmlMapper As IXmlMapper) _xmlMapper = xmlMapper End Sub Public Sub InitInstellingen(padNaarHoofdconfigBestand As String) Implements IConfigsClass.InitInstellingen - 'Geen init nodig als deze al is geweest - If Not IsNothing(_configData) Then Return - 'Controle of hoofdconfig bestand wel bestaat If String.IsNullOrEmpty(padNaarHoofdconfigBestand) OrElse Not File.Exists(padNaarHoofdconfigBestand) Then Throw New MissingBaseConfigFileException() End If _padNaarHoofdconfigBestand = padNaarHoofdconfigBestand - Try - LaadConfigs() - ControleerConfigs() - Catch ex As Exception - 'Exceptions door de property reflectie (bij de controle) komen in inner exception terecht - If IsNothing(ex.InnerException) Then - MessageBox.Show(ex.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) - Else - MessageBox.Show(ex.InnerException.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) - End If - End Try + LaadConfigs() + ControleerConfigs() End Sub Private Sub LaadConfigs() Try Dim fs = New FileStream(_padNaarHoofdconfigBestand, FileMode.Open, FileAccess.Read, FileShare.Read) _configData = _xmlMapper.GetData(Of ConfigData)(fs) + + 'De properties die niet aanwezig waren wel initialiseren + For Each prop As PropertyInfo In _configData.GetType().GetProperties() + 'Enkel readable properties controleren + If prop.CanRead Then + If IsNothing(prop.GetValue(_configData, Nothing)) Then + 'Property was niet aanwezig, initialiseren + prop.SetValue(_configData, new ConfigProperty) + End If + End If + Next Catch ex As Exception - Throw New Exception($"Kon configs niet opslaan{vbNewLine}{ex}") + Throw New Exception($"Kon configs niet laden{vbNewLine}{ex}") End Try End Sub @@ -53,7 +53,8 @@ For Each prop As PropertyInfo In type.GetProperties() 'Enkel readable properties controleren If prop.CanRead Then - If IsNothing(prop.GetValue(_configData, Nothing)) Then + dim val = DirectCast(prop.GetValue(_configData, Nothing), ConfigProperty).Waarde + If IsNothing(DirectCast(prop.GetValue(_configData, Nothing), ConfigProperty).Waarde) Then 'Lege property, toevoegen aan lijst nietGeconfigureerd.Add(prop.Name) End If @@ -79,6 +80,7 @@ Private Shared Function ConverteerWaarde(Of T)(configp As ConfigProperty) As T Try + If IsNothing(configp) OrElse IsNothing(configp.Waarde) Then Return Nothing 'Uitzonderingen voor bepaalde types 'Expliciete generieke conversie @@ -99,7 +101,7 @@ Public Property BestandenMapPad As String Implements IConfigsClass.BestandenMapPad Get - Return ConverteerWaarde(Of String)(_configData.BestandenMapPad.Waarde) + Return ConverteerWaarde(Of String)(_configData.BestandenMapPad) End Get Set ConfigUtil.StelNieuwFolderPadIn(Value, _configData.BestandenMapPad) @@ -108,7 +110,7 @@ Public Property JobControlExePad As String Implements IConfigsClass.JobControlExePad Get - Return ConverteerWaarde(Of String)(_configData.JobControlExePad.Waarde) + Return ConverteerWaarde(Of String)(_configData.JobControlExePad) End Get Set ConfigUtil.StelNieuwFilePadIn(Value, _configData.JobControlExePad) @@ -117,14 +119,15 @@ Public Property GraveerInstellingenXmlPad As String Implements IConfigsClass.GraveerInstellingenXmlPad Get - Return ConverteerWaarde(Of String)(_configData.GraveerInstellingenXmlPad.Waarde) + Return ConverteerWaarde(Of String)(_configData.GraveerInstellingenXmlPad) End Get Set - ConfigUtil.StelNieuwFilePadIn(Value, _configData.JobControlExePad) + ConfigUtil.StelNieuwFilePadIn(Value, _configData.GraveerInstellingenXmlPad) End Set End Property Private Class ConfigUtil + Public Shared Sub StelNieuwFilePadIn(value As String, ByRef configP As ConfigProperty) If Not IsNothing(value) AndAlso File.Exists(value) Then configP.Waarde = value Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/ApplicationEvents.vb =================================================================== diff -u -r1928 -r1940 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/ApplicationEvents.vb (.../ApplicationEvents.vb) (revision 1928) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/ApplicationEvents.vb (.../ApplicationEvents.vb) (revision 1940) @@ -20,7 +20,7 @@ builder.RegisterType(Of LaseropdrachtController).As(Of ILaseropdrachtController).SingleInstance() builder.RegisterType(Of GraveerInstellingenRepository).As(Of IGraveerInstellingenRepository).SingleInstance() ' Configs - builder.RegisterType(Of ConfigsClass).As(Of IConfigsClass)().SingleInstance() + builder.RegisterType(Of Configs).As(Of IConfigsClass)().SingleInstance() builder.RegisterType(Of ConfigsTextMapper).As(Of IConfigsTextMapper)() ' Toetsenbord hook builder.RegisterType(Of KeyboardListener).As(Of IKeyboardListener)().SingleInstance() Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormConfigsWijzigen.Designer.vb =================================================================== diff -u -r1922 -r1940 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormConfigsWijzigen.Designer.vb (.../FormConfigsWijzigen.Designer.vb) (revision 1922) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormConfigsWijzigen.Designer.vb (.../FormConfigsWijzigen.Designer.vb) (revision 1940) @@ -103,7 +103,6 @@ Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) Me.TextBoxGraveerInstellingenXmlPad.Location = New System.Drawing.Point(6, 248) Me.TextBoxGraveerInstellingenXmlPad.Name = "TextBoxGraveerInstellingenXmlPad" - Me.TextBoxGraveerInstellingenXmlPad.ReadOnly = true Me.TextBoxGraveerInstellingenXmlPad.Size = New System.Drawing.Size(817, 26) Me.TextBoxGraveerInstellingenXmlPad.TabIndex = 11 ' @@ -133,7 +132,6 @@ Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) Me.TextBoxJobControlExePad.Location = New System.Drawing.Point(6, 185) Me.TextBoxJobControlExePad.Name = "TextBoxJobControlExePad" - Me.TextBoxJobControlExePad.ReadOnly = true Me.TextBoxJobControlExePad.Size = New System.Drawing.Size(817, 26) Me.TextBoxJobControlExePad.TabIndex = 8 ' @@ -173,7 +171,6 @@ Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) Me.TextBoxBestandenMapPad.Location = New System.Drawing.Point(6, 118) Me.TextBoxBestandenMapPad.Name = "TextBoxBestandenMapPad" - Me.TextBoxBestandenMapPad.ReadOnly = true Me.TextBoxBestandenMapPad.Size = New System.Drawing.Size(817, 26) Me.TextBoxBestandenMapPad.TabIndex = 3 ' @@ -184,7 +181,6 @@ Me.TextBoxScriptPad.Font = New System.Drawing.Font("Microsoft Sans Serif", 12!) Me.TextBoxScriptPad.Location = New System.Drawing.Point(6, 57) Me.TextBoxScriptPad.Name = "TextBoxScriptPad" - Me.TextBoxScriptPad.ReadOnly = true Me.TextBoxScriptPad.Size = New System.Drawing.Size(817, 26) Me.TextBoxScriptPad.TabIndex = 2 ' @@ -195,6 +191,7 @@ 'ButtonOpslaan ' Me.ButtonOpslaan.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) + Me.ButtonOpslaan.Enabled = false Me.ButtonOpslaan.Font = New System.Drawing.Font("Microsoft Sans Serif", 15!) Me.ButtonOpslaan.Location = New System.Drawing.Point(595, 349) Me.ButtonOpslaan.Name = "ButtonOpslaan" Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormConfigsWijzigen.vb =================================================================== diff -u -r1936 -r1940 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormConfigsWijzigen.vb (.../FormConfigsWijzigen.vb) (revision 1936) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormConfigsWijzigen.vb (.../FormConfigsWijzigen.vb) (revision 1940) @@ -12,16 +12,10 @@ End Using _configs.InitInstellingen(My.Settings.PadNaarSettingsBestand) - - TextBoxScriptPad.Text = _configs.ScriptPad - TextBoxBestandenMapPad.Text = _configs.BestandenMapPad - TextBoxJobControlExePad.Text = _configs.JobControlExePad - TextBoxGraveerInstellingenXmlPad.Text = _configs.GraveerInstellingenXmlPad - ButtonOpslaan.Enabled = False Catch mbcEx As MissingBaseConfigFileException 'Laat de gebruiker een config bestand kiezen - If MessageBox.Show("Dit is waarschijnlijk de eerste keer dat u dit programma opstart. Gelieve een config bestand te selecteren.") <> DialogResult.OK Then + If MessageBox.Show("Dit is waarschijnlijk de eerste keer dat u dit programma opstart. Gelieve een config bestand te selecteren.", "Nog geen config gekozen") <> DialogResult.OK Then Application.Exit() End If @@ -42,6 +36,15 @@ Catch ex As Exception ToonError(ex) End Try + + Try + TextBoxScriptPad.Text = If(_configs.ScriptPad, String.Empty) + TextBoxBestandenMapPad.Text = If(_configs.BestandenMapPad, String.Empty) + TextBoxJobControlExePad.Text = If(_configs.JobControlExePad, String.Empty) + TextBoxGraveerInstellingenXmlPad.Text = If(_configs.GraveerInstellingenXmlPad, String.Empty) + Catch ex As Exception + ToonError(ex, "Fout met opvullen van config controls") + End Try End Sub Private Sub ButtonSourcePath_Click(sender As System.Object, e As System.EventArgs) Handles ButtonScriptPad.Click Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.vb =================================================================== diff -u -r1938 -r1940 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.vb (.../FormHoofdscherm.vb) (revision 1938) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.vb (.../FormHoofdscherm.vb) (revision 1940) @@ -18,6 +18,8 @@ End With End If + 'My.Settings.Reset() + Try ' Kan geen dependecy injection doen via constructor in een WinForm Using scope = My.MyApplication.Container.BeginLifetimeScope() Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigXml/ConfigData.vb =================================================================== diff -u -r1936 -r1940 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigXml/ConfigData.vb (.../ConfigData.vb) (revision 1936) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigXml/ConfigData.vb (.../ConfigData.vb) (revision 1940) @@ -9,5 +9,5 @@ public Property Schermnaam() As Object Public Property Waarde() As Object Public Property Beschrijving() As String - Public Property SubConfigs() As ICollection(Of ConfigProperty) + Public Property SubConfigs() As List(Of ConfigProperty) End Class