2025-01-30 16:06:18 +01:00

119 lines
4.1 KiB
VB.net

Imports System.Drawing
Imports System.Windows.Forms
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.ZooFlow.Params
Public Class ProfileMatch
Private _Logger As Logger
Public Sub New(LogConfig As LogConfig)
_Logger = LogConfig.GetLogger()
End Sub
Public Function FindNodeByTag(ByVal nodes As TreeNodeCollection, ByVal Tag As String) As TreeNode
For Each node As TreeNode In nodes
If (node.Tag.Equals(Tag)) Then
Return node
End If
Dim oNext As TreeNode = FindNodeByTag(node.Nodes, Tag)
If oNext IsNot Nothing Then
Return oNext
End If
Next
Return Nothing
End Function
Public Function NewProfileNode(Profile As ProfileData) As TreeNode
_Logger.Debug("New Profile Node for Profile {0}", Profile.Name)
Dim oNode As New TreeNode() With {
.Text = $"Checking profile with name: '{Profile.Name}'",
.ImageIndex = ProfileFilter.ImageIndex.Profile,
.Tag = Profile.Name & "-PROFILE"
}
Return oNode
End Function
Public Function NewClipboardRegexNode(Profile As ProfileData, IsMatch As Boolean) As TreeNode
_Logger.Debug("New Clipboard Regex Node for Profile {0}", Profile.Name)
Dim oText = $"{GetMatchText(IsMatch)} on Global Clipboard Regex: '{Profile.Regex}'"
Dim oNode As New TreeNode() With {
.Text = oText,
.ImageIndex = ProfileFilter.ImageIndex.Clipboard,
.Tag = Profile.Name & "-REGEX",
.BackColor = GetMatchColor(IsMatch)
}
Return oNode
End Function
Public Function NewProcessNode(Profile As ProfileData, Process As ProcessData, IsMatch As Boolean, IsCatchAll As Boolean) As TreeNode
_Logger.Debug("New Process Node for Profile {0} and ProcessName {1}", Profile.Name, Process.ProcessName)
Dim oText As String
If IsCatchAll Then
oText = $"{GetMatchText(IsMatch)} on Catch-All Process"
Else
oText = $"{GetMatchText(IsMatch)} on ProcessName: '{Process.ProcessName}'"
End If
Dim oNode As New TreeNode() With {
.Text = oText,
.ImageIndex = ProfileFilter.ImageIndex.Process,
.Tag = Process.Guid & "-PROCESS",
.BackColor = GetMatchColor(IsMatch)
}
Return oNode
End Function
Public Function NewWindowNode(Profile As ProfileData, Window As WindowData, IsMatch As Boolean) As TreeNode
_Logger.Debug("New Window Node for Profile {0} and WindowTitle {1}", Profile.Name, Window.Title)
Dim oMatchText = IIf(IsMatch, "MATCH", "NO MATCH")
Dim oText = $"{GetMatchText(IsMatch)} on WindowTitle: '{Window.Title}'"
Dim oNode As New TreeNode() With {
.Text = oText,
.ImageIndex = ProfileFilter.ImageIndex.Window,
.Tag = Window.Guid & "-WINDOW",
.BackColor = GetMatchColor(IsMatch)
}
Return oNode
End Function
Public Function NewControlNode(Profile As ProfileData, Control As ControlData, IsMatch As Boolean) As TreeNode
_Logger.Debug("New Control Node for Profile {0} and Control {1}", Profile.Name, Control.Description)
Dim oMatchText = IIf(IsMatch, "MATCH", "NO MATCH")
Dim oText = $"{GetMatchText(IsMatch)} on Control: '{Control.Description}'"
Dim oNode As New TreeNode() With {
.Text = oText,
.ImageIndex = ProfileFilter.ImageIndex.Control,
.Tag = Control.Guid & "-CONTROL",
.BackColor = GetMatchColor(IsMatch)
}
Return oNode
End Function
Private Function GetLowestNode(ByVal Node As TreeNode) As TreeNode
If Node.GetNodeCount(False) = 1 Then
Return GetLowestNode(Node.Nodes.Item(0))
Else
Return Node
End If
End Function
Public Function GetMatchText(IsMatch As Boolean)
Return IIf(IsMatch, "MATCH", "NO MATCH")
End Function
Public Function GetMatchColor(IsMatch As Boolean)
Return IIf(IsMatch, Color.LightGreen, Color.LightCoral)
End Function
End Class