Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.Designer.vb =================================================================== diff -u -r1925 -r1929 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.Designer.vb (.../FormHoofdscherm.Designer.vb) (revision 1925) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.Designer.vb (.../FormHoofdscherm.Designer.vb) (revision 1929) @@ -23,42 +23,16 @@ _ Private Sub InitializeComponent() Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(FormHoofdscherm)) - Me.TextBoxInput = New System.Windows.Forms.TextBox() - Me.ProgressBarOpzoeken = New System.Windows.Forms.ProgressBar() Me.MenuStrip1 = New System.Windows.Forms.MenuStrip() Me.TestToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.InstellingenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.SluitToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() - Me.Panel1 = New System.Windows.Forms.Panel() - Me.CheckBoxObserveer = New System.Windows.Forms.CheckBox() - Me.FileSystemWatcher1 = New System.IO.FileSystemWatcher() Me.FlowLayoutPanelSchermen = New System.Windows.Forms.FlowLayoutPanel() + Me.FileSystemWatcher1 = New System.IO.FileSystemWatcher() Me.MenuStrip1.SuspendLayout - Me.Panel1.SuspendLayout CType(Me.FileSystemWatcher1,System.ComponentModel.ISupportInitialize).BeginInit Me.SuspendLayout ' - 'TextBoxInput - ' - Me.TextBoxInput.CharacterCasing = System.Windows.Forms.CharacterCasing.Upper - Me.TextBoxInput.Font = New System.Drawing.Font("Microsoft Sans Serif", 40!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte)) - Me.TextBoxInput.ForeColor = System.Drawing.Color.Maroon - Me.TextBoxInput.Location = New System.Drawing.Point(25, 18) - Me.TextBoxInput.Name = "TextBoxInput" - Me.TextBoxInput.ReadOnly = true - Me.TextBoxInput.Size = New System.Drawing.Size(619, 68) - Me.TextBoxInput.TabIndex = 0 - ' - 'ProgressBarOpzoeken - ' - Me.ProgressBarOpzoeken.Location = New System.Drawing.Point(24, 104) - Me.ProgressBarOpzoeken.MarqueeAnimationSpeed = 50 - Me.ProgressBarOpzoeken.Name = "ProgressBarOpzoeken" - Me.ProgressBarOpzoeken.Size = New System.Drawing.Size(516, 30) - Me.ProgressBarOpzoeken.Style = System.Windows.Forms.ProgressBarStyle.Marquee - Me.ProgressBarOpzoeken.TabIndex = 61 - Me.ProgressBarOpzoeken.Visible = false - ' 'MenuStrip1 ' Me.MenuStrip1.BackColor = System.Drawing.Color.Silver @@ -89,68 +63,43 @@ Me.SluitToolStripMenuItem.Size = New System.Drawing.Size(231, 42) Me.SluitToolStripMenuItem.Text = "Sluit" ' - 'Panel1 + 'FlowLayoutPanelSchermen ' - Me.Panel1.Controls.Add(Me.FlowLayoutPanelSchermen) - Me.Panel1.Controls.Add(Me.CheckBoxObserveer) - Me.Panel1.Controls.Add(Me.TextBoxInput) - Me.Panel1.Controls.Add(Me.ProgressBarOpzoeken) - Me.Panel1.Location = New System.Drawing.Point(138, 93) - Me.Panel1.Name = "Panel1" - Me.Panel1.Size = New System.Drawing.Size(1534, 757) - Me.Panel1.TabIndex = 73 + Me.FlowLayoutPanelSchermen.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) + Me.FlowLayoutPanelSchermen.Location = New System.Drawing.Point(0, 48) + Me.FlowLayoutPanelSchermen.Name = "FlowLayoutPanelSchermen" + Me.FlowLayoutPanelSchermen.Size = New System.Drawing.Size(1684, 813) + Me.FlowLayoutPanelSchermen.TabIndex = 72 ' - 'CheckBoxObserveer - ' - Me.CheckBoxObserveer.AutoSize = true - Me.CheckBoxObserveer.Font = New System.Drawing.Font("Microsoft Sans Serif", 25!) - Me.CheckBoxObserveer.Location = New System.Drawing.Point(650, 38) - Me.CheckBoxObserveer.Name = "CheckBoxObserveer" - Me.CheckBoxObserveer.Size = New System.Drawing.Size(194, 43) - Me.CheckBoxObserveer.TabIndex = 71 - Me.CheckBoxObserveer.Text = "Observeer" - Me.CheckBoxObserveer.UseVisualStyleBackColor = true - ' 'FileSystemWatcher1 ' Me.FileSystemWatcher1.EnableRaisingEvents = true Me.FileSystemWatcher1.SynchronizingObject = Me ' - 'FlowLayoutPanelSchermen - ' - Me.FlowLayoutPanelSchermen.Location = New System.Drawing.Point(45, 200) - Me.FlowLayoutPanelSchermen.Name = "FlowLayoutPanelSchermen" - Me.FlowLayoutPanelSchermen.Size = New System.Drawing.Size(1474, 530) - Me.FlowLayoutPanelSchermen.TabIndex = 72 - ' 'FormHoofdscherm ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.ClientSize = New System.Drawing.Size(1684, 862) + Me.Controls.Add(Me.FlowLayoutPanelSchermen) Me.Controls.Add(Me.MenuStrip1) - Me.Controls.Add(Me.Panel1) Me.Icon = CType(resources.GetObject("$this.Icon"),System.Drawing.Icon) Me.Name = "FormHoofdscherm" Me.Text = "Laser Gravering - Robin De Bock" Me.WindowState = System.Windows.Forms.FormWindowState.Maximized Me.MenuStrip1.ResumeLayout(false) Me.MenuStrip1.PerformLayout - Me.Panel1.ResumeLayout(false) - Me.Panel1.PerformLayout CType(Me.FileSystemWatcher1,System.ComponentModel.ISupportInitialize).EndInit Me.ResumeLayout(false) Me.PerformLayout End Sub - Friend WithEvents TextBoxInput As System.Windows.Forms.TextBox - Friend WithEvents ProgressBarOpzoeken As System.Windows.Forms.ProgressBar Friend WithEvents MenuStrip1 As System.Windows.Forms.MenuStrip Friend WithEvents TestToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents InstellingenToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem Friend WithEvents SluitToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem - Friend WithEvents Panel1 As System.Windows.Forms.Panel - Friend WithEvents CheckBoxObserveer As System.Windows.Forms.CheckBox Friend WithEvents FileSystemWatcher1 As IO.FileSystemWatcher Friend WithEvents FlowLayoutPanelSchermen As FlowLayoutPanel End Class Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.vb =================================================================== diff -u -r1926 -r1929 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.vb (.../FormHoofdscherm.vb) (revision 1926) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/FormHoofdscherm.vb (.../FormHoofdscherm.vb) (revision 1929) @@ -2,6 +2,7 @@ Imports System.ComponentModel Imports System.Threading Imports Autofac +Imports Laser_Gravering.Util Public Class FormHoofdscherm Implements IObserver @@ -30,9 +31,9 @@ _keyboardSubject.AddObserver(Me) - FlowLayoutPanelSchermen.Controls.Add(New LaserOpdrachtDetailsScherm) FlowLayoutPanelSchermen.Controls.Add(New LaserOpdrachtOpzoekSelecteerStatus) - FlowLayoutPanelSchermen.Controls.Add(new KeyboardScherm) + FlowLayoutPanelSchermen.Controls.Add(New KeyboardScherm) + FlowLayoutPanelSchermen.Controls.Add(New LaserOpdrachtDetailsScherm) Catch mbcEx As MissingBaseConfigFileException 'Laat de gebruiker een config bestand kiezen @@ -45,121 +46,68 @@ Private Sub FormHoofdscherm_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing _keyboardSubject.RemoveObserver(Me) - _controller.RemoveObserver(Me) End Sub -#Region "Input observeren" - Public Sub UpdateObserver(sender As ISubject, Optional o As Object = Nothing) Implements IObserver.UpdateObserver - Dim keyboardSubject = CType(sender, IKeyboardSubject) - If keyboardSubject.TekstState = KeyBoardSubjectTekstStateEnum.Tekst Then - ' Tekst visualiseren indien nodig - If _observeer Then TextBoxInput.Text = keyboardSubject.Tekst - ElseIf keyboardSubject.TekstState = KeyBoardSubjectTekstStateEnum.Enter Then - ZoekLaserOpdracht(keyboardSubject.Tekst) - End If + Try + If Not TypeOf sender Is IKeyboardSubject Then + Throw New Exception($"{Me.GetType().Name} ondersteunt enkel {NameOf(IKeyboardSubject)}") + End If + + Dim keyboardSubject As IKeyboardSubject = sender + If keyboardSubject.TekstState = KeyBoardSubjectTekstStateEnum.Enter Then + ZoekLaserOpdracht(keyboardSubject.Tekst) + End If + Catch ex As Exception + ToonError(ex) + End Try End Sub -#End Region - Private Sub ZoekLaserOpdracht(tekst As String) - If Not _isBezig Then - Try - WijzigIsBezigheidsStatusEnControls(True) - 'Opzoeken in aparte thread - Dim laserOpdrachtOpzoekenThread As New Thread(Sub() GeefLaserOpdracht(_controller, tekst)) With { - .IsBackground = True - } - laserOpdrachtOpzoekenThread.Start() - Catch ex As Exception - ToonError(ex) - End Try - End If + Try + 'Opzoeken in aparte thread + Dim laserOpdrachtOpzoekenThread As New Thread(Sub() ZoekLaserOpdrachtThreadFunc(_controller, tekst)) With { + .IsBackground = True + } + laserOpdrachtOpzoekenThread.Start() + Catch ex As Exception + ToonError(ex) + End Try End Sub - - - Public Sub GeefLaserOpdracht(controller As ILaseropdrachtController, input As String) + Public Sub ZoekLaserOpdrachtThreadFunc(controller As ILaseropdrachtController, input As String) Try - _keyboardSubject.PauzeerHook() + Invoke(Sub() PauzeerKeyboardHook()) 'Python script stuurt zelf ook keystrokes Dim status = controller.SelecteerLaserOpdracht(input) - If Me.InvokeRequired() Then - Dim zoekOpdrachtAfgerondDelegate As ZoekOpdrachtAfgerondDelegate = AddressOf ZoekopdrachtAfgerond - Dim args() As ILaserOpdracht = {controller.GeefGeselecteerdeLaserOpdracht} - Invoke(zoekOpdrachtAfgerondDelegate, args) - If status Then - 'Selectie gelukt - VerwerkLaserOpdracht() - Else - My.Computer.Audio.PlaySystemSound(System.Media.SystemSounds.Beep) - End If - Dim klaarDelegate As MultiThreadKeyboardInteractieAfgewerktDelegate = AddressOf MultiThreadKeyboardInteractieAfgewerkt - Invoke(klaarDelegate) + If status Then + 'Selectie gelukt + _controller.VerwerkLaserOpdracht() + Else + Invoke(Sub() My.Computer.Audio.PlaySystemSound(System.Media.SystemSounds.Beep)) End If + Invoke(Sub() HervatKeyboardHook()) Catch ex As Exception - Dim errorDelegate As DisplayErrorDelegateType = AddressOf ToonError - Dim args() As Exception = {ex} - Invoke(errorDelegate, args) + Invoke(Sub() HervatKeyboardHook()) + Invoke(sub() ToonError(ex)) End Try End Sub - Private Sub VerwerkLaserOpdracht() + Private Sub PauzeerKeyboardHook() Try - _controller.VerwerkLaserOpdracht() + _keyboardSubject.PauzeerHook() Catch ex As Exception - ToonError(ex, "Fout bij verwerken laseropdracht") + ToonError(ex) End Try End Sub -#Region "Visualisatie - observeer (tekstvelden,...)" - - Private _observeer As Boolean = False - Private Sub CheckBoxObserveer_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBoxObserveer.CheckedChanged - _observeer = CheckBoxObserveer.Checked - End Sub - - Private _isBezig As Boolean - Private Sub WijzigIsBezigheidsStatusEnControls(status As Boolean) - _isBezig = status - - If Not _observeer Then Return 'Skip als geen visualisatie nodig is - - If status Then - ProgressBarOpzoeken.Visible = True - Else - ProgressBarOpzoeken.Visible = False - End If - End Sub - - Private Delegate Sub ZoekOpdrachtAfgerondDelegate(ByVal laserOpdracht As ILaserOpdracht) - Private Sub ZoekopdrachtAfgerond(laserOpdracht As ILaserOpdracht) + Private Sub HervatKeyboardHook() Try - WijzigIsBezigheidsStatusEnControls(False) - - If Not _observeer Then Return 'Skip als geen visualisatie nodig is + _keyboardSubject.HervatHook() Catch ex As Exception - ToonError(ex, "Details konden niet getoond worden") + ToonError(ex) End Try End Sub - Private Delegate Sub MultiThreadKeyboardInteractieAfgewerktDelegate() - Private Sub MultiThreadKeyboardInteractieAfgewerkt() - _keyboardSubject.HervatHook() - End Sub - -#End Region - - Private Delegate Sub DisplayErrorDelegateType(ByVal exception As Exception) - Private Sub ToonError(exception As Exception, Optional extraBoodschap As String = "") - WijzigIsBezigheidsStatusEnControls(False) - _keyboardSubject.HervatHook() - If Not extraBoodschap Is Nothing OrElse extraBoodschap.Equals("") Then - MessageBox.Show($"{extraBoodschap}{vbNewLine}{exception.Message}", "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly) - Else - MessageBox.Show(exception.Message, "Er is een fout opgetreden...", MessageBoxButtons.OK, MessageBoxIcon.Error) - End If - End Sub - #Region "Menu bar" Private Sub InstellingenToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles InstellingenToolStripMenuItem.Click Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Laser Gravering.vbproj =================================================================== diff -u -r1928 -r1929 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Laser Gravering.vbproj (.../Laser Gravering.vbproj) (revision 1928) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Laser Gravering.vbproj (.../Laser Gravering.vbproj) (revision 1929) @@ -28,7 +28,7 @@ false true 1 - 1.5.0.%2a + 1.6.0.%2a false true true