From 88bae3ee92ea1c9cc66bc8a050663a80ed1b1323 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Fri, 13 Sep 2019 15:35:58 +0200 Subject: [PATCH] filter controls by window id, clear duplicate profiles --- .../ClassProfileFilter.vb | 45 ++++-- .../frmAdministration.vb | 153 +++++++++--------- app/DD_Clipboard_Searcher/frmSplash.vb | 2 - app/DD_Clipboard_Searcher/frmStart.vb | 1 + 4 files changed, 114 insertions(+), 87 deletions(-) diff --git a/app/DD_Clipboard_Searcher/ClassProfileFilter.vb b/app/DD_Clipboard_Searcher/ClassProfileFilter.vb index b983ae5..fba328e 100644 --- a/app/DD_Clipboard_Searcher/ClassProfileFilter.vb +++ b/app/DD_Clipboard_Searcher/ClassProfileFilter.vb @@ -332,25 +332,42 @@ Public Class ClassProfileFilter For Each oProfileMatchedSofar In Profiles If oProfileMatchedSofar.IsMatched = False Then Continue For - Logger.Debug("Checking ControlDefiniotion on profile: {0}", oProfileMatchedSofar.Name) - If oProfileMatchedSofar.Controls.Count = 0 Then + Logger.Debug("Checking ControlDefinition on profile: {0}", oProfileMatchedSofar.Name) + Logger.Debug("Profile has {0} configured controls", oProfileMatchedSofar.Controls.Count) + + Dim oControlsForMatchedWindow As New List(Of ControlData) + + For Each oControl In oProfileMatchedSofar.Controls + If oControl.WINDOW_ID = oProfileMatchedSofar.MatchedWindowID Then + oControlsForMatchedWindow.Add(oControl) + End If + Next + + If oControlsForMatchedWindow.Count = 0 Then + Logger.Debug("Profile has no configured controls. Skipping.") oFilteredProfiles.Add(oProfileMatchedSofar) - Dim oNode As New TreeNode($"No Controls configured!") - oNode.ImageIndex = 2 - oNode.ForeColor = Color.Blue - oNode.Tag = oProfileMatchedSofar.Name & "-NOCONTROLCONFIG" - Dim f = New Font("Tahoma", 10, FontStyle.Bold) - oNode.NodeFont = f + Dim oNode As New TreeNode($"No Controls configured!") With { + .ImageIndex = 2, + .ForeColor = Color.Blue, + .Tag = oProfileMatchedSofar.Name & "-NOCONTROLCONFIG", + .NodeFont = New Font("Tahoma", 10, FontStyle.Bold) + } + CurrMatchTreeView.Nodes.Add(oNode) + Continue For End If Dim oControls As New List(Of ControlData) - For Each oControlDefinition In oProfileMatchedSofar.Controls + For Each oControlDefinition In oControlsForMatchedWindow Try - If oControlDefinition.WINDOW_ID <> oProfileMatchedSofar.MatchedWindowID Then Continue For + If oControlDefinition.WINDOW_ID <> oProfileMatchedSofar.MatchedWindowID Then + Logger.Debug("Current WindowId {0} does not match Control WindowId {1}. Skipping.", oProfileMatchedSofar.MatchedWindowID, oControlDefinition.WINDOW_ID) + Continue For + End If + Logger.Debug($"Working on ControlDefinition: {oControlDefinition.Guid}-{oControlDefinition.ControlName}...") If oControlDefinition.Regex = String.Empty Then oProfileMatchedSofar.MatchedControlID = oControlDefinition.Guid @@ -455,6 +472,14 @@ Public Class ClassProfileFilter Next Return oFilteredProfiles End Function + + Public Function ClearDuplicateProfiles(Profiles As List(Of ProfileData)) As List(Of ProfileData) + Return Profiles. + GroupBy(Function(Profile) Profile.Guid). + Select(Function(GroupedProfiles) GroupedProfiles.First). + ToList() + End Function + Private Function TransformProfiles() As List(Of ProfileData) Dim oList As New List(Of ProfileData) diff --git a/app/DD_Clipboard_Searcher/frmAdministration.vb b/app/DD_Clipboard_Searcher/frmAdministration.vb index 349ebf9..cb678c9 100644 --- a/app/DD_Clipboard_Searcher/frmAdministration.vb +++ b/app/DD_Clipboard_Searcher/frmAdministration.vb @@ -474,81 +474,84 @@ Public Class frmAdministration Private Sub XtraTabControl3_SelectedPageChanged(sender As Object, e As DevExpress.XtraTab.TabPageChangedEventArgs) Handles XtraTabControl3.SelectedPageChanged Dim oTabName As String = e.Page.Name - Select Case oTabName - Case TabPageProcessAssignment.Name - CtrlApplicationAssignment1.Process_Load(PROFILE_IDTextBox.Text) - RibbonGroup_Profile.Enabled = False - RibbonGroup_User.Enabled = False - RibbonGroup_Group.Enabled = False - - RibbonGroup_Process.Enabled = True - RibbonGroup_Window.Enabled = True - RibbonGroup_Control.Enabled = True - - RibbonGroup_DocSearch.Enabled = False - RibbonGroup_DataSearch.Enabled = False - - Case TabPageUserAssignment.Name - RibbonGroup_Profile.Enabled = False - RibbonGroup_User.Enabled = True - RibbonGroup_Group.Enabled = False - - RibbonGroup_Process.Enabled = False - RibbonGroup_Window.Enabled = False - RibbonGroup_Control.Enabled = False - - RibbonGroup_DocSearch.Enabled = False - RibbonGroup_DataSearch.Enabled = False - - Case TabPageGroupAssignment.Name - RibbonGroup_Profile.Enabled = False - RibbonGroup_User.Enabled = False - RibbonGroup_Group.Enabled = True - - RibbonGroup_Process.Enabled = False - RibbonGroup_Window.Enabled = False - RibbonGroup_Control.Enabled = False - - RibbonGroup_DocSearch.Enabled = False - RibbonGroup_DataSearch.Enabled = False - - Case TabPageData.Name - RibbonGroup_Profile.Enabled = False - RibbonGroup_User.Enabled = False - RibbonGroup_Group.Enabled = False - - RibbonGroup_Process.Enabled = False - RibbonGroup_Window.Enabled = False - RibbonGroup_Control.Enabled = False - - RibbonGroup_DocSearch.Enabled = False - RibbonGroup_DataSearch.Enabled = True - - Case TabPageDocuments.Name - RibbonGroup_Profile.Enabled = False - RibbonGroup_User.Enabled = False - RibbonGroup_Group.Enabled = False - - RibbonGroup_Process.Enabled = False - RibbonGroup_Window.Enabled = False - RibbonGroup_Control.Enabled = False - - RibbonGroup_DocSearch.Enabled = True - RibbonGroup_DataSearch.Enabled = False - - Case Else - RibbonGroup_Profile.Enabled = True - RibbonGroup_User.Enabled = False - RibbonGroup_Group.Enabled = False - - RibbonGroup_Process.Enabled = False - RibbonGroup_Window.Enabled = False - RibbonGroup_Control.Enabled = False - - RibbonGroup_DocSearch.Enabled = False - RibbonGroup_DataSearch.Enabled = False - End Select - + Try + Select Case oTabName + Case TabPageProcessAssignment.Name + 'CtrlApplicationAssignment1.Process_Load(PROFILE_IDTextBox.Text) + RibbonGroup_Profile.Enabled = False + RibbonGroup_User.Enabled = False + RibbonGroup_Group.Enabled = False + + RibbonGroup_Process.Enabled = True + RibbonGroup_Window.Enabled = True + RibbonGroup_Control.Enabled = True + + RibbonGroup_DocSearch.Enabled = False + RibbonGroup_DataSearch.Enabled = False + + Case TabPageUserAssignment.Name + RibbonGroup_Profile.Enabled = False + RibbonGroup_User.Enabled = True + RibbonGroup_Group.Enabled = False + + RibbonGroup_Process.Enabled = False + RibbonGroup_Window.Enabled = False + RibbonGroup_Control.Enabled = False + + RibbonGroup_DocSearch.Enabled = False + RibbonGroup_DataSearch.Enabled = False + + Case TabPageGroupAssignment.Name + RibbonGroup_Profile.Enabled = False + RibbonGroup_User.Enabled = False + RibbonGroup_Group.Enabled = True + + RibbonGroup_Process.Enabled = False + RibbonGroup_Window.Enabled = False + RibbonGroup_Control.Enabled = False + + RibbonGroup_DocSearch.Enabled = False + RibbonGroup_DataSearch.Enabled = False + + Case TabPageData.Name + RibbonGroup_Profile.Enabled = False + RibbonGroup_User.Enabled = False + RibbonGroup_Group.Enabled = False + + RibbonGroup_Process.Enabled = False + RibbonGroup_Window.Enabled = False + RibbonGroup_Control.Enabled = False + + RibbonGroup_DocSearch.Enabled = False + RibbonGroup_DataSearch.Enabled = True + + Case TabPageDocuments.Name + RibbonGroup_Profile.Enabled = False + RibbonGroup_User.Enabled = False + RibbonGroup_Group.Enabled = False + + RibbonGroup_Process.Enabled = False + RibbonGroup_Window.Enabled = False + RibbonGroup_Control.Enabled = False + + RibbonGroup_DocSearch.Enabled = True + RibbonGroup_DataSearch.Enabled = False + + Case Else + RibbonGroup_Profile.Enabled = True + RibbonGroup_User.Enabled = False + RibbonGroup_Group.Enabled = False + + RibbonGroup_Process.Enabled = False + RibbonGroup_Window.Enabled = False + RibbonGroup_Control.Enabled = False + + RibbonGroup_DocSearch.Enabled = False + RibbonGroup_DataSearch.Enabled = False + End Select + Catch ex As Exception + Logger.Error(ex) + End Try End Sub Private Sub BarButtonItem16_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem16.ItemClick diff --git a/app/DD_Clipboard_Searcher/frmSplash.vb b/app/DD_Clipboard_Searcher/frmSplash.vb index 9f1116f..fb38b15 100644 --- a/app/DD_Clipboard_Searcher/frmSplash.vb +++ b/app/DD_Clipboard_Searcher/frmSplash.vb @@ -11,7 +11,6 @@ Public NotInheritable Class frmSplash End If End Sub - Private Sub frmSplash_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Version.Text = String.Format("Version {0}", My.Application.Info.Version.ToString) Copyright.Text = String.Format("{0} {1}", My.Application.Info.Copyright, My.Application.Info.CompanyName) @@ -33,7 +32,6 @@ Public NotInheritable Class frmSplash Return _step * (100 / InitSteps) End Function - Private Sub bw_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Try Dim Init = New ClassInit() diff --git a/app/DD_Clipboard_Searcher/frmStart.vb b/app/DD_Clipboard_Searcher/frmStart.vb index b344c28..ef315bc 100644 --- a/app/DD_Clipboard_Searcher/frmStart.vb +++ b/app/DD_Clipboard_Searcher/frmStart.vb @@ -126,6 +126,7 @@ Public Class frmStart oProfiles = oProfileFilter.FilterWindowsByWindowTitleRegex(oProfiles, oWindowInfo.WindowTitle) oProfiles = oProfileFilter.FilterProfilesByFocusedControl(oProfiles, ClipboardContents, oFocusedControl.ToString) oProfiles = oProfileFilter.ClearNotMatchedProfiles(oProfiles) + oProfiles = oProfileFilter.ClearDuplicateProfiles(oProfiles) oProfiles = oProfiles.ToList() CURRENT_MATCHING_PROFILES = oProfiles