Patterns: WIP Patterns2

This commit is contained in:
Jonathan Jenne
2021-11-01 13:28:56 +01:00
parent d83c0125a4
commit dcf5bbe21c
8 changed files with 205 additions and 139 deletions

View File

@@ -2,6 +2,7 @@
Imports System.Windows.Forms
Imports DigitalData.Controls.LookupGrid
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.ZooFlow
Imports WINDREAMLib
''' <summary>
@@ -16,7 +17,7 @@ Imports WINDREAMLib
''' {#CTRL#CMB_2}
''' {#WMI#String 39}
''' </summary>
Public Class clsPatterns
Public Class Patterns2
''' <summary>
''' Complex patterns that rely on Windream
''' </summary>
@@ -48,19 +49,24 @@ Public Class clsPatterns
Private ReadOnly LogConfig As LogConfig
Private ReadOnly Logger As Logger
Private ReadOnly Base As PatternModule.BaseModule
Private ReadOnly ControlPanel As Panel
Private ReadOnly IDBActive As Boolean
Private ReadOnly Base As BaseFunctions
Private ReadOnly Modules As New List(Of IModule)
Public Sub New(pLogConfig As LogConfig)
LogConfig = pLogConfig
Logger = pLogConfig.GetLogger()
Base = New BaseFunctions(LogConfig)
Base = New PatternModule.BaseModule(LogConfig)
Modules.Add(New PatternModule.Internal(LogConfig, Base))
Modules.AddRange({
New PatternModule.Internal(LogConfig),
New PatternModule.Clipboard(LogConfig),
New PatternModule.Controls(LogConfig),
New PatternModule.User(LogConfig)
})
End Sub
Public Sub New(pLogConfig As LogConfig, pControlPanel As Panel, pIDBActive As Boolean)
@@ -69,12 +75,12 @@ Public Class clsPatterns
IDBActive = pIDBActive
End Sub
Public Function ReplaceAllValues(pInput As String, pPanel As Panel) As String
Public Function ReplaceAllValues(pInput As String, pPanel As Panel, pUser As State.UserState) As String
Dim oResult = pInput
For Each oModule In Modules
Try
Dim oArgs = GetReplaceMapForModule(oModule, pPanel)
Dim oArgs = GetReplaceMapForModule(oModule, pPanel, pUser)
oResult = oModule.Replace(oResult, oArgs)
Catch ex As Exception
Logger.Warn("Placeholders for String [{0}] could not be replaced completely in Module [{1}]. Skipping.", pInput, oModule.GetType.Name)
@@ -85,30 +91,40 @@ Public Class clsPatterns
Return oResult
End Function
Private Function GetReplaceMapForModule(pModule As IModule, pPanel As Panel) As Dictionary(Of String, Object)
Private Function GetReplaceMapForModule(pModule As IModule, pPanel As Panel, pUser As State.UserState) As Dictionary(Of String, Object)
Dim oArgs As New Dictionary(Of String, Object)
Select Case pModule.GetType()
Case GetType(PatternModule.Clipboard)
End Select
If TypeOf pModule Is PatternModule.Clipboard Then
oArgs.Add(PatternModule.Clipboard.CLIP_VALUE_BOARD, My.Computer.Clipboard.GetText())
ElseIf TypeOf pModule Is PatternModule.Internal Then
oArgs.Add(PatternModule.Internal.INT_VALUE_USERNAME, Environment.UserName)
oArgs.Add(PatternModule.Internal.INT_VALUE_MACHINE, Environment.MachineName)
oArgs.Add(PatternModule.Internal.INT_VALUE_DOMAIN, Environment.UserDomainName)
oArgs.Add(PatternModule.Internal.INT_VALUE_USERNAME, System.Environment.UserName)
oArgs.Add(PatternModule.Internal.INT_VALUE_MACHINE, System.Environment.MachineName)
oArgs.Add(PatternModule.Internal.INT_VALUE_DOMAIN, System.Environment.UserDomainName)
oArgs.Add(PatternModule.Internal.INT_VALUE_DATE, Now.ToShortDateString)
ElseIf TypeOf pModule Is PatternModule.User Then
oArgs.Add(PatternModule.User.USER_VALUE_EMAIL, pUser.Email)
oArgs.Add(PatternModule.User.USER_VALUE_LANGUAGE, pUser.Language)
oArgs.Add(PatternModule.User.USER_VALUE_PRENAME, pUser.GivenName)
oArgs.Add(PatternModule.User.USER_VALUE_SHORTNAME, pUser.ShortName)
oArgs.Add(PatternModule.User.USER_VALUE_SURNAME, pUser.Surname)
oArgs.Add(PatternModule.User.USER_VALUE_USER_ID, pUser.UserId)
oArgs.Add(PatternModule.User.USER_VALUE_USER_NAME, pUser.UserName)
ElseIf TypeOf pModule Is PatternModule.Controls Then
oArgs.Add(PatternModule.Controls.CTRL_VALUE_PANEL, pPanel)
End If
Return oArgs
End Function
#Region "Helper Functions"
''' <summary>
''' Wraps a pattern-type and -value in the common format: {#type#value}
''' </summary>