Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/exceptions/InvalidConfigException.vb =================================================================== diff -u --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/exceptions/InvalidConfigException.vb (revision 0) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/exceptions/InvalidConfigException.vb (revision 1936) @@ -0,0 +1,11 @@ +Public Class InvalidConfigException + Inherits System.ApplicationException + + Public Sub New() + MyBase.New("Ongeldige config(s) aanwezig") + End Sub + + Public Sub New(boodschap As String) + MyBase.New(boodschap) + End Sub +End Class Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.Designer.vb =================================================================== diff -u -r1935 -r1936 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.Designer.vb (.../FormHoofdscherm.Designer.vb) (revision 1935) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.Designer.vb (.../FormHoofdscherm.Designer.vb) (revision 1936) @@ -26,12 +26,12 @@ Me.MenuStrip1 = New System.Windows.Forms.MenuStrip() Me.TestToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.InstellingenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() + Me.OverToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem() Me.SluitToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem() Me.FlowLayoutPanelSchermen = New System.Windows.Forms.FlowLayoutPanel() Me.FileSystemWatcher1 = New System.IO.FileSystemWatcher() Me.CheckBoxVisualiseer = New System.Windows.Forms.CheckBox() - Me.OverToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.MenuStrip1.SuspendLayout CType(Me.FileSystemWatcher1,System.ComponentModel.ISupportInitialize).BeginInit Me.SuspendLayout @@ -40,7 +40,7 @@ ' Me.MenuStrip1.BackColor = System.Drawing.Color.Silver Me.MenuStrip1.Font = New System.Drawing.Font("Segoe UI", 20!) - Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TestToolStripMenuItem, Me.ToolStripMenuItem1, Me.OverToolStripMenuItem}) + Me.MenuStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.TestToolStripMenuItem, Me.ToolStripMenuItem1}) Me.MenuStrip1.Location = New System.Drawing.Point(0, 0) Me.MenuStrip1.Name = "MenuStrip1" Me.MenuStrip1.Size = New System.Drawing.Size(1684, 45) @@ -49,7 +49,7 @@ ' 'TestToolStripMenuItem ' - Me.TestToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.InstellingenToolStripMenuItem, Me.SluitToolStripMenuItem}) + Me.TestToolStripMenuItem.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.InstellingenToolStripMenuItem, Me.OverToolStripMenuItem1, Me.SluitToolStripMenuItem}) Me.TestToolStripMenuItem.Name = "TestToolStripMenuItem" Me.TestToolStripMenuItem.Size = New System.Drawing.Size(106, 41) Me.TestToolStripMenuItem.Text = "Opties" @@ -60,6 +60,12 @@ Me.InstellingenToolStripMenuItem.Size = New System.Drawing.Size(231, 42) Me.InstellingenToolStripMenuItem.Text = "Instellingen" ' + 'OverToolStripMenuItem1 + ' + Me.OverToolStripMenuItem1.Name = "OverToolStripMenuItem1" + Me.OverToolStripMenuItem1.Size = New System.Drawing.Size(231, 42) + Me.OverToolStripMenuItem1.Text = "Over" + ' 'SluitToolStripMenuItem ' Me.SluitToolStripMenuItem.Name = "SluitToolStripMenuItem" @@ -97,12 +103,6 @@ Me.CheckBoxVisualiseer.Text = "Visualiseer" Me.CheckBoxVisualiseer.UseVisualStyleBackColor = true ' - 'OverToolStripMenuItem - ' - Me.OverToolStripMenuItem.Name = "OverToolStripMenuItem" - Me.OverToolStripMenuItem.Size = New System.Drawing.Size(85, 41) - Me.OverToolStripMenuItem.Text = "Over" - ' 'FormHoofdscherm ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!) @@ -130,5 +130,5 @@ Friend WithEvents FlowLayoutPanelSchermen As FlowLayoutPanel Friend WithEvents CheckBoxVisualiseer As CheckBox Friend WithEvents ToolStripMenuItem1 As ToolStripMenuItem - Friend WithEvents OverToolStripMenuItem As ToolStripMenuItem + Friend WithEvents OverToolStripMenuItem1 As ToolStripMenuItem End Class FishEye: Tag 1936 refers to a dead (removed) revision in file `Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigsTextMapper.vb'. FishEye: No comparison available. Pass `N' to diff? Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/IConfigsClass.vb =================================================================== diff -u --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/IConfigsClass.vb (revision 0) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/IConfigsClass.vb (revision 1936) @@ -0,0 +1,8 @@ +Public Interface IConfigsClass + Sub InitInstellingen(padNaarHoofdconfigBestand As String) + Sub OpslaanConfigs() + Property ScriptPad As String + Property BestandenMapPad As String + Property JobControlExePad As String + Property GraveerInstellingenXmlPad As String +End Interface \ No newline at end of file Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormConfigsWijzigen.vb =================================================================== diff -u -r1927 -r1936 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormConfigsWijzigen.vb (.../FormConfigsWijzigen.vb) (revision 1927) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormConfigsWijzigen.vb (.../FormConfigsWijzigen.vb) (revision 1936) @@ -21,7 +21,7 @@ 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.") <> DialogResult.OK Then Application.Exit() End If @@ -35,6 +35,10 @@ Application.Exit() Return End If + Catch invC As InvalidConfigException + If MessageBox.Show($"Er is een fout met een of meerdere configuraties: {vbNewLine}{invC.Message}") <> DialogResult.OK Then + Application.Exit() + End If Catch ex As Exception ToonError(ex) End Try Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigXml/ConfigData.vb =================================================================== diff -u --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigXml/ConfigData.vb (revision 0) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigXml/ConfigData.vb (revision 1936) @@ -0,0 +1,13 @@ +Public Class ConfigData + public Property Scriptpad() As ConfigProperty + Public Property BestandenMapPad() As ConfigProperty + Public Property JobControlExePad() As ConfigProperty + Public Property GraveerInstellingenXmlPad() As ConfigProperty +End Class + +Public Class ConfigProperty + public Property Schermnaam() As Object + Public Property Waarde() As Object + Public Property Beschrijving() As String + Public Property SubConfigs() As ICollection(Of ConfigProperty) +End Class Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigText/ConfigsClass.vb =================================================================== diff -u --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigText/ConfigsClass.vb (revision 0) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigText/ConfigsClass.vb (revision 1936) @@ -0,0 +1,170 @@ +'Robin De Bock Created:30/07/2018 Changed:24/07/2020 +Imports System.IO +Imports System.Reflection +Imports System.Text.RegularExpressions + +Public Class ConfigsClass + Implements IConfigsClass + + Private ReadOnly _configsTextMapper As IConfigsTextMapper + Private ReadOnly _configLookup As Hashtable + Private _padNaarHoofdconfigBestand As String + + Public Sub New(configsTextMapper As IConfigsTextMapper) + _configsTextMapper = configsTextMapper + _configLookup = New Hashtable() + End Sub + + Public Sub InitInstellingen(padNaarHoofdconfigBestand As String) Implements IConfigsClass.InitInstellingen + 'Geen init nodig als deze al is geweest + If _configLookup.Count > 0 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 + End Sub + + Private Sub LaadConfigs() + 'Hash vullen met configs + For Each lijn In _configsTextMapper.GetAllValues(_padNaarHoofdconfigBestand) + Dim result = Regex.Match(lijn, "^(\w+) (.+)$", RegexOptions.IgnoreCase) + 'Controle op aantal groups + If result.Groups.Count <> 3 Then Throw New Exception($"Ongeldige config: '{lijn}'") + + _configLookup.Add(result.Groups(1).ToString().ToUpper(), result.Groups(2).ToString()) + Next + End Sub + + Private Sub ControleerConfigs() + ' Elke property eens oproepen om te controleren of de sleutel aanwezig is + 'https://stackoverflow.com/questions/531384/how-to-loop-through-all-the-properties-of-a-class + Dim type = Me.GetType() + For Each prop As PropertyInfo In type.GetProperties() + 'Enkel readable properties controleren + If prop.CanRead Then prop.GetValue(Me, Nothing) + Next + End Sub + + Public Sub OpslaanConfigs() Implements IConfigsClass.OpslaanConfigs + Try + _configsTextMapper.ConfigsOpslaan(_padNaarHoofdconfigBestand, Me) + Catch ex As Exception + Throw New Exception($"Kon configs niet opslaan{vbNewLine}{ex}") + End Try + End Sub + + ''' + ''' Haal waarde op aan de hand van de identificatie + ''' + ''' Type + ''' Sleutel + ''' Geconverteerd type + Private Function HaalWaardeOp(Of T)(identificatie As String) As T + If String.IsNullOrEmpty(identificatie) Then Throw New Exception("De sleutel om een config op te vragen mag niet leeg zijn") + identificatie = identificatie.ToUpper() ' Hoofdletter ongevoelig + + 'Opzoeken in hashtable + If Not _configLookup.ContainsKey(identificatie) Then Throw New Exception($"De sleutel '{identificatie}' is niet aanwezig") + 'Ophalen + Dim waarde = _configLookup.Item(identificatie) + Try + 'Converteren + Return ConverteerWaarde(Of T)(waarde) + Catch ex As Exception + Throw New Exception($"Kon waarde voor sleutel '{identificatie}' niet converteren naar {NameOf(T)}{vbNewLine}{ex.Message}") + End Try + End Function + + Private Shared Function ConverteerWaarde(Of T)(waarde As Object) As T + 'Uitzonderingen voor bepaalde types + + 'Expliciete generieke conversie + Return DirectCast(waarde, T) + End Function + + Private Sub SlaNieuweWaardeOp(identificatie As String, waarde As Object) + If String.IsNullOrEmpty(identificatie) Then Throw New Exception("De sleutel om een config op te vragen mag niet leeg zijn") + identificatie = identificatie.ToUpper() ' Hoofdletter ongevoelig + + ' Opzoeken in hashtable + If Not _configLookup.ContainsKey(identificatie) Then Throw New Exception($"De sleutel '{identificatie}' is niet aanwezig") + ' Overschrijven + _configLookup.Item(identificatie) = waarde + End Sub + +#Region "Configs" + + Private Const ScriptPadSleutel = "SCRIPTPAD" + Public Property ScriptPad As String Implements IConfigsClass.ScriptPad + Get + Return HaalWaardeOp(Of String)(ScriptPadSleutel) + End Get + Set + If Not IsNothing(Value) AndAlso File.Exists(Value) Then + SlaNieuweWaardeOp(ScriptPadSleutel, Value) + Else + Throw New Exception($"Ongeldig nieuw pad voor '{ScriptPadSleutel}'") + End If + End Set + End Property + + Private Const BestandenMapPadSleutel = "BESTANDENMAPPAD" + Public Property BestandenMapPad As String Implements IConfigsClass.BestandenMapPad + Get + Return HaalWaardeOp(Of String)(BestandenMapPadSleutel) + End Get + Set + If Not IsNothing(Value) AndAlso Directory.Exists(Value) Then + SlaNieuweWaardeOp(BestandenMapPadSleutel, Value) + Else + Throw New Exception($"Ongeldig nieuw pad voor '{BestandenMapPadSleutel}'") + End If + End Set + End Property + + Private Const JobControlExePadSleutel = "JOBCONTROLEXEPAD" + Public Property JobControlExePad As String Implements IConfigsClass.JobControlExePad + Get + Return HaalWaardeOp(Of String)(JobControlExePadSleutel) + End Get + Set + If Not IsNothing(Value) AndAlso File.Exists(Value) Then + SlaNieuweWaardeOp(JobControlExePadSleutel, Value) + Else + Throw New Exception($"Ongeldig nieuw pad voor '{JobControlExePadSleutel}'") + End If + End Set + End Property + + Private Const GraveerInstellingenXmlPadSleutel = "GRAVEERINSTELLINGENXMLPAD" + Public Property GraveerInstellingenXmlPad As String Implements IConfigsClass.GraveerInstellingenXmlPad + Get + Return HaalWaardeOp(Of String)(GraveerInstellingenXmlPadSleutel) + End Get + Set + If Not IsNothing(Value) AndAlso File.Exists(Value) Then + SlaNieuweWaardeOp(GraveerInstellingenXmlPadSleutel, Value) + Else + Throw New Exception($"Ongeldig nieuw pad voor '{GraveerInstellingenXmlPadSleutel}'") + End If + End Set + End Property + +#End Region + +End Class \ No newline at end of file Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigXml/Configs.vb =================================================================== diff -u --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigXml/Configs.vb (revision 0) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigXml/Configs.vb (revision 1936) @@ -0,0 +1,146 @@ +Imports System.IO +Imports System.Reflection + +Public Class Configs + Implements IConfigsClass + + Private ReadOnly _xmlMapper As XmlMapper + Private _configData As ConfigData + Private _padNaarHoofdconfigBestand As String + Sub New(xmlMapper As XmlMapper) + _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 + End Sub + + Private Sub LaadConfigs() + Try + Dim fs = New FileStream(_padNaarHoofdconfigBestand, FileMode.Open, FileAccess.Read, FileShare.Read) + _configData = _xmlMapper.GetData(Of ConfigData)(fs) + Catch ex As Exception + Throw New Exception($"Kon configs niet opslaan{vbNewLine}{ex}") + End Try + End Sub + + Private Sub ControleerConfigs() + Dim nietGeconfigureerd As New List(Of String) + ' Elke property eens oproepen om te controleren of de sleutel aanwezig is + 'Lijst tonen van alle properties die niet geconfigureerd waren + 'https://stackoverflow.com/questions/531384/how-to-loop-through-all-the-properties-of-a-class + Dim type = _configData.GetType() + For Each prop As PropertyInfo In type.GetProperties() + 'Enkel readable properties controleren + If prop.CanRead Then + If IsNothing(prop.GetValue(_configData, Nothing)) Then + 'Lege property, toevoegen aan lijst + nietGeconfigureerd.Add(prop.Name) + End If + End If + Next + + If nietGeconfigureerd.Count > 0 Then + Throw New InvalidConfigException($"{String.Join(vbNewLine, nietGeconfigureerd)}") + End If + End Sub + + Public Sub OpslaanConfigs() Implements IConfigsClass.OpslaanConfigs + Try + 'Controleert lege velden nog eens + ControleerConfigs() + + Dim fs = New FileStream(_padNaarHoofdconfigBestand, FileMode.OpenOrCreate) + _xmlMapper.WriteData(fs, _configData) + Catch ex As Exception + Throw New Exception($"Kon configs niet opslaan{vbNewLine}{ex}") + End Try + End Sub + + Private Shared Function ConverteerWaarde(Of T)(configp As ConfigProperty) As T + Try + 'Uitzonderingen voor bepaalde types + + 'Expliciete generieke conversie + Return DirectCast(configp.Waarde, T) + Catch ex As Exception + Throw New InvalidConfigException($"Ongeldig type van {configp.Schermnaam}: waarde '{configp.Waarde}' kan niet geconverteerd worden naar {NameOf(T)}.") + End Try + End Function + + Public Property ScriptPad As String Implements IConfigsClass.ScriptPad + Get + Return ConverteerWaarde(Of String)(_configData.Scriptpad) + End Get + Set + ConfigUtil.StelNieuwFilePadIn(Value, _configData.Scriptpad) + End Set + End Property + + Public Property BestandenMapPad As String Implements IConfigsClass.BestandenMapPad + Get + Return ConverteerWaarde(Of String)(_configData.BestandenMapPad.Waarde) + End Get + Set + ConfigUtil.StelNieuwFolderPadIn(Value, _configData.BestandenMapPad) + End Set + End Property + + Public Property JobControlExePad As String Implements IConfigsClass.JobControlExePad + Get + Return ConverteerWaarde(Of String)(_configData.JobControlExePad.Waarde) + End Get + Set + ConfigUtil.StelNieuwFilePadIn(Value, _configData.JobControlExePad) + End Set + End Property + + Public Property GraveerInstellingenXmlPad As String Implements IConfigsClass.GraveerInstellingenXmlPad + Get + Return ConverteerWaarde(Of String)(_configData.GraveerInstellingenXmlPad.Waarde) + End Get + Set + ConfigUtil.StelNieuwFilePadIn(Value, _configData.JobControlExePad) + 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 + Else + Throw New Exception($"Ongeldig nieuw pad voor '{configP.Schermnaam}'") + End If + End Sub + + Public Shared Sub StelNieuwFolderPadIn(value As String, ByRef configP As ConfigProperty) + If Not IsNothing(value) AndAlso Directory.Exists(value) Then + configP.Waarde = value + Else + Throw New Exception($"Ongeldig nieuw pad voor '{configP.Schermnaam}'") + End If + End Sub + End Class + +End Class + Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Laser Gravering.vbproj =================================================================== diff -u -r1935 -r1936 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Laser Gravering.vbproj (.../Laser Gravering.vbproj) (revision 1935) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Laser Gravering.vbproj (.../Laser Gravering.vbproj) (revision 1936) @@ -141,11 +141,15 @@ - - + + + + + + AboutBox.vb @@ -188,6 +192,7 @@ + Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Settings.vb =================================================================== diff -u --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Settings.vb (revision 0) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Settings.vb (revision 1936) @@ -0,0 +1,11 @@ + +Namespace My + + 'This class allows you to handle specific events on the settings class: + ' The SettingChanging event is raised before a setting's value is changed. + ' The PropertyChanged event is raised after a setting's value is changed. + ' The SettingsLoaded event is raised after the setting values are loaded. + ' The SettingsSaving event is raised before the setting values are saved. + Partial Friend NotInheritable Class MySettings + End Class +End Namespace Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigText/ConfigsTextMapper.vb =================================================================== diff -u --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigText/ConfigsTextMapper.vb (revision 0) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigText/ConfigsTextMapper.vb (revision 1936) @@ -0,0 +1,57 @@ +'Robin De Bock Created:27/07/2018 Changed:31/08/2020 +Imports System.IO + +Public Interface IConfigsTextMapper + Function GetAllValues(path As String) As List(Of String) + Sub ConfigsOpslaan(path As String, configs As IConfigsClass) +End Interface + +Class ConfigsTextMapper + Implements IConfigsTextMapper + Public Function GetAllValues(path As String) As List(Of String) Implements IConfigsTextMapper.GetAllValues + Try + If System.IO.File.Exists(path) Then 'Bestaat bestand? + Dim fileReader As String = My.Computer.FileSystem.ReadAllText(path) + fileReader = fileReader.Trim + Dim lijnen As String() = fileReader.Split(New String() {Environment.NewLine}, StringSplitOptions.None) + 'Alleen bruikbare info uit bestand halen + Return lijnen.Where(Function(lijn) Not (lijn = String.Empty Or lijn.StartsWith("%"))).ToList() + Else + 'Bestand bestaat niet + Throw New Exception($"'{path}'{vbNewLine} bestaat niet.") + End If + Catch ex As ReadOnlyException + Throw New Exception($"'{path}'{vbNewLine}bestand is readonly") + Catch ex As PathTooLongException + Throw New Exception($"'{path}'{vbNewLine}pad is te lang") + Catch ex As IOException + Throw New Exception($"'{path}'{vbNewLine}is niet bereikbaar") + Catch ex As Exception + Throw New Exception($"'{path}'{vbNewLine}bestand kon niet worden gelezen {vbNewLine}{ex.Message}") + End Try + End Function + + Public Sub ConfigsOpslaan(path As String, configs As IConfigsClass) Implements IConfigsTextMapper.ConfigsOpslaan + Dim file As System.IO.StreamWriter + System.IO.File.WriteAllText(path, "") 'Leegmaken + file = My.Computer.FileSystem.OpenTextFileWriter(path, True) + 'Info instellen + file.WriteLine("%CONFIGURATIEBESTAND Gebruik % voor commentaar (lege lijnen worden genegeerd)") + file.WriteLine() + file.WriteLine("%SCRIPTPAD CONFIG, pad naar het script dat zal worden aangeroepen") + file.WriteLine($"SCRIPTPAD {configs.ScriptPad}") + file.WriteLine() + file.WriteLine("%BESTANDENMAPPAD, pad naar de map waar alle bestanden staan") + file.WriteLine($"BESTANDENMAPPAD {configs.BestandenMapPad}") + file.WriteLine() + file.WriteLine("%JOBCONTROLEXEPAD, pad naar de exe van JobControl") + file.WriteLine($"JOBCONTROLEXEPAD {configs.JobControlExePad}") + file.WriteLine() + file.WriteLine("%GRAVEERINSTELLINGENXMLPAD, pad naar de xml met graveer instellingen") + file.WriteLine($"GRAVEERINSTELLINGENXMLPAD {configs.GraveerInstellingenXmlPad}") + file.WriteLine() + + file.Close() + End Sub + +End Class Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.vb =================================================================== diff -u -r1935 -r1936 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.vb (.../FormHoofdscherm.vb) (revision 1935) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.vb (.../FormHoofdscherm.vb) (revision 1936) @@ -31,8 +31,9 @@ _keyboardSubject.AddObserver(Me) - Catch mbcEx As MissingBaseConfigFileException - 'Laat de gebruiker een config bestand kiezen + Catch ex As Exception When TypeOf ex Is MissingBaseConfigFileException OrElse _ + TypeOf ex Is InvalidConfigException + 'Ander scherm handelt config fouten af FormConfigsWijzigen.ShowDialog() Return Catch ex As Exception @@ -123,7 +124,7 @@ Application.Exit() End Sub - Private Sub OverToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles OverToolStripMenuItem.Click + Private Sub OverToolStripMenuItem1_Click(sender As Object, e As EventArgs) Handles OverToolStripMenuItem1.Click AboutBox.ShowDialog() End Sub FishEye: Tag 1936 refers to a dead (removed) revision in file `Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Configs/ConfigsClass.vb'. FishEye: No comparison available. Pass `N' to diff? Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Laser Gravering.vbproj.DotSettings =================================================================== diff -u -r1924 -r1936 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Laser Gravering.vbproj.DotSettings (.../Laser Gravering.vbproj.DotSettings) (revision 1924) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Laser Gravering.vbproj.DotSettings (.../Laser Gravering.vbproj.DotSettings) (revision 1936) @@ -1,5 +1,7 @@  True + True + True True True True