DocumentViewer: WIP Search

This commit is contained in:
Jonathan Jenne 2023-04-12 11:00:11 +02:00
parent e849d21237
commit 47c37ad7b7
6 changed files with 328 additions and 11 deletions

View File

@ -0,0 +1,122 @@
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging
Imports GdPicture14
Public Class Search
Inherits BaseClass
Public Sub New(pLogConfig As LogConfig, pGDViewer As GdViewer)
MyBase.New(pLogConfig)
_Viewer = pGDViewer
_Viewer.MouseMode = ViewerMouseMode.MouseModeDefault
AddHandler _Viewer.PageDisplayed, AddressOf Viewer_PageDisplayed
End Sub
Public Property SearchQuery As String = ""
Public Property CaseSensitive As Boolean = False
Public Property WholeWords As Boolean = False
Private _Viewer As GdViewer = Nothing
Private _CurrentPage As Integer = 0
Private _CurrentQuery As String = ""
Private _CurrentOccurrenceCount = 0
Private _CurrentSelectedOccurrence = 0
Public Sub SearchAll(pQuery As String)
' Exit, if query has not changed
If _CurrentQuery = pQuery Then
Exit Sub
End If
' Save query
_CurrentQuery = pQuery
' Reset previous highlights, then search for the new query
_Viewer.RemoveAllRegions()
_Viewer.SearchText(_CurrentQuery, 0, CaseSensitive, WholeWords)
End Sub
Public Sub NextHighlight()
' This also applies when the page has *NO* occurrences, so 0 = 0
If _CurrentOccurrenceCount = _CurrentSelectedOccurrence Then
' If there are no occurrences on the current page, got to the *next page*
While _CurrentOccurrenceCount = _CurrentSelectedOccurrence And _CurrentPage < _Viewer.PageCount
_Viewer.DisplayNextPage()
End While
' Safeguard against selecting a non-existing occurrence on the last page
If _CurrentOccurrenceCount > 0 Then
SelectHighlight(1)
Else
' Disable next button
End If
Else
' Otherwise just select the next occurrence
SelectHighlight(_CurrentSelectedOccurrence + 1)
End If
End Sub
Public Sub PrevHighlight()
If _CurrentOccurrenceCount = 0 Or _CurrentSelectedOccurrence = 1 Then
While (_CurrentOccurrenceCount = 0 Or _CurrentSelectedOccurrence = 1) And _CurrentPage > 1
_Viewer.DisplayPreviousPage()
End While
If _CurrentOccurrenceCount > 0 Then
SelectHighlight(_CurrentOccurrenceCount)
End If
Else
' Otherwise just select the previous occurrence
SelectHighlight(_CurrentSelectedOccurrence - 1)
End If
'' If no occurrence found on the current page,
'' skip to the *previous* page to look there
'If _CurrentOccurrenceCount = 0 Then
' While _CurrentOccurrenceCount = 0 And _CurrentPage > 1
' _Viewer.DisplayPreviousPage()
' End While
'ElseIf _CurrentSelectedOccurrence = 1 Then
' ' Need to switch to the previous *page*
' ' and highlight the last occurrence there
' If _CurrentPage > 1 Then
' _Viewer.DisplayPreviousPage()
' SelectHighlight(_CurrentOccurrenceCount)
' End If
'Else
' ' Otherwise just select the previous occurrence
' SelectHighlight(_CurrentSelectedOccurrence - 1)
'End If
End Sub
Private Sub SelectHighlight(pOccurrence As Integer)
Dim oFound = _Viewer.SearchText(_CurrentQuery, pOccurrence, CaseSensitive, WholeWords)
If _Viewer.GetStat() = GdPictureStatus.OK And _Viewer.IsRect() Then
_Viewer.RectIsEditable = False
_Viewer.CenterOnRect()
_CurrentSelectedOccurrence = pOccurrence
Else
_CurrentSelectedOccurrence = 0
End If
End Sub
Private Sub Viewer_PageDisplayed()
If _CurrentPage <> _Viewer.CurrentPage Then
_CurrentPage = _Viewer.CurrentPage
If _CurrentQuery.Length > 0 Then
_Viewer.SearchText(_CurrentQuery, 0, CaseSensitive, WholeWords)
_CurrentOccurrenceCount = _Viewer.GetTextOccurrenceCount(_CurrentPage, _CurrentQuery, CaseSensitive, WholeWords)
_CurrentSelectedOccurrence = 0
End If
End If
End Sub
End Class

View File

@ -46,21 +46,31 @@ Partial Class DocumentViewer
Me.buttonNextPage = New DevExpress.XtraBars.BarButtonItem() Me.buttonNextPage = New DevExpress.XtraBars.BarButtonItem()
Me.buttonLastPage = New DevExpress.XtraBars.BarButtonItem() Me.buttonLastPage = New DevExpress.XtraBars.BarButtonItem()
Me.buttonSettings = New DevExpress.XtraBars.BarButtonItem() Me.buttonSettings = New DevExpress.XtraBars.BarButtonItem()
Me.txtSearch = New DevExpress.XtraBars.BarEditItem()
Me.RepositoryItemTextEdit3 = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit()
Me.btnSearch2 = New DevExpress.XtraBars.BarButtonItem()
Me.btnPrevHighlight = New DevExpress.XtraBars.BarButtonItem()
Me.btnNextHighlight = New DevExpress.XtraBars.BarButtonItem()
Me.barDockControlTop = New DevExpress.XtraBars.BarDockControl() Me.barDockControlTop = New DevExpress.XtraBars.BarDockControl()
Me.barDockControlBottom = New DevExpress.XtraBars.BarDockControl() Me.barDockControlBottom = New DevExpress.XtraBars.BarDockControl()
Me.barDockControlLeft = New DevExpress.XtraBars.BarDockControl() Me.barDockControlLeft = New DevExpress.XtraBars.BarDockControl()
Me.barDockControlRight = New DevExpress.XtraBars.BarDockControl() Me.barDockControlRight = New DevExpress.XtraBars.BarDockControl()
Me.BarStaticItem1 = New DevExpress.XtraBars.BarStaticItem() Me.BarStaticItem1 = New DevExpress.XtraBars.BarStaticItem()
Me.btnSearch = New DevExpress.XtraBars.BarButtonItem()
Me.RepositoryItemTextEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit() Me.RepositoryItemTextEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemTextEdit()
Me.RepositoryItemColorEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemColorEdit() Me.RepositoryItemColorEdit1 = New DevExpress.XtraEditors.Repository.RepositoryItemColorEdit()
Me.RepositoryItemComboBox1 = New DevExpress.XtraEditors.Repository.RepositoryItemComboBox() Me.RepositoryItemComboBox1 = New DevExpress.XtraEditors.Repository.RepositoryItemComboBox()
Me.RepositoryItemSearchControl1 = New DevExpress.XtraEditors.Repository.RepositoryItemSearchControl()
Me.SpreadsheetControl1 = New DevExpress.XtraSpreadsheet.SpreadsheetControl() Me.SpreadsheetControl1 = New DevExpress.XtraSpreadsheet.SpreadsheetControl()
Me.PrintDocument1 = New System.Drawing.Printing.PrintDocument() Me.PrintDocument1 = New System.Drawing.Printing.PrintDocument()
Me.LabelControl1 = New DevExpress.XtraEditors.LabelControl()
CType(Me.BarManager1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.BarManager1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RepositoryItemTextEdit2, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.RepositoryItemTextEdit2, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RepositoryItemTextEdit3, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RepositoryItemTextEdit1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.RepositoryItemTextEdit1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RepositoryItemColorEdit1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.RepositoryItemColorEdit1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RepositoryItemComboBox1, System.ComponentModel.ISupportInitialize).BeginInit() CType(Me.RepositoryItemComboBox1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.RepositoryItemSearchControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout() Me.SuspendLayout()
' '
'GdViewer 'GdViewer
@ -161,10 +171,10 @@ Partial Class DocumentViewer
Me.BarManager1.DockControls.Add(Me.barDockControlLeft) Me.BarManager1.DockControls.Add(Me.barDockControlLeft)
Me.BarManager1.DockControls.Add(Me.barDockControlRight) Me.BarManager1.DockControls.Add(Me.barDockControlRight)
Me.BarManager1.Form = Me Me.BarManager1.Form = Me
Me.BarManager1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.buttonPrint, Me.buttonFitPage, Me.buttonFitWidth, Me.buttonZoomIn, Me.buttonZoomOut, Me.buttonRotateRight, Me.buttonRotateLeft, Me.buttonFlipX, Me.buttonFlipY, Me.buttonSettings, Me.buttonPrevPage, Me.buttonNextPage, Me.buttonFirstPage, Me.buttonLastPage, Me.txtCurrentPage, Me.BarStaticItem1, Me.labelPageCount}) Me.BarManager1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.buttonPrint, Me.buttonFitPage, Me.buttonFitWidth, Me.buttonZoomIn, Me.buttonZoomOut, Me.buttonRotateRight, Me.buttonRotateLeft, Me.buttonFlipX, Me.buttonFlipY, Me.buttonSettings, Me.buttonPrevPage, Me.buttonNextPage, Me.buttonFirstPage, Me.buttonLastPage, Me.txtCurrentPage, Me.BarStaticItem1, Me.labelPageCount, Me.txtSearch, Me.btnPrevHighlight, Me.btnNextHighlight, Me.btnSearch, Me.btnSearch2})
Me.BarManager1.MainMenu = Me.ToolbarDocumentViewer Me.BarManager1.MainMenu = Me.ToolbarDocumentViewer
Me.BarManager1.MaxItemId = 26 Me.BarManager1.MaxItemId = 33
Me.BarManager1.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemTextEdit1, Me.RepositoryItemTextEdit2, Me.RepositoryItemColorEdit1, Me.RepositoryItemComboBox1}) Me.BarManager1.RepositoryItems.AddRange(New DevExpress.XtraEditors.Repository.RepositoryItem() {Me.RepositoryItemTextEdit1, Me.RepositoryItemTextEdit2, Me.RepositoryItemColorEdit1, Me.RepositoryItemComboBox1, Me.RepositoryItemSearchControl1, Me.RepositoryItemTextEdit3})
' '
'ToolbarDocumentViewer 'ToolbarDocumentViewer
' '
@ -172,7 +182,7 @@ Partial Class DocumentViewer
Me.ToolbarDocumentViewer.DockCol = 0 Me.ToolbarDocumentViewer.DockCol = 0
Me.ToolbarDocumentViewer.DockRow = 0 Me.ToolbarDocumentViewer.DockRow = 0
Me.ToolbarDocumentViewer.DockStyle = DevExpress.XtraBars.BarDockStyle.Top Me.ToolbarDocumentViewer.DockStyle = DevExpress.XtraBars.BarDockStyle.Top
Me.ToolbarDocumentViewer.LinksPersistInfo.AddRange(New DevExpress.XtraBars.LinkPersistInfo() {New DevExpress.XtraBars.LinkPersistInfo(Me.buttonPrint), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonFitWidth), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonFitPage), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonZoomIn), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonZoomOut), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonRotateLeft), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonRotateRight), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonFlipX), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonFlipY), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonFirstPage), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonPrevPage), New DevExpress.XtraBars.LinkPersistInfo(Me.txtCurrentPage), New DevExpress.XtraBars.LinkPersistInfo(Me.labelPageCount), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonNextPage), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonLastPage), New DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, Me.buttonSettings, DevExpress.XtraBars.BarItemPaintStyle.Standard)}) Me.ToolbarDocumentViewer.LinksPersistInfo.AddRange(New DevExpress.XtraBars.LinkPersistInfo() {New DevExpress.XtraBars.LinkPersistInfo(Me.buttonPrint), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonFitWidth), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonFitPage), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonZoomIn), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonZoomOut), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonRotateLeft), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonRotateRight), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonFlipX), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonFlipY), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonFirstPage), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonPrevPage), New DevExpress.XtraBars.LinkPersistInfo(Me.txtCurrentPage), New DevExpress.XtraBars.LinkPersistInfo(Me.labelPageCount), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonNextPage), New DevExpress.XtraBars.LinkPersistInfo(Me.buttonLastPage), New DevExpress.XtraBars.LinkPersistInfo(DevExpress.XtraBars.BarLinkUserDefines.PaintStyle, Me.buttonSettings, DevExpress.XtraBars.BarItemPaintStyle.Standard), New DevExpress.XtraBars.LinkPersistInfo(Me.txtSearch), New DevExpress.XtraBars.LinkPersistInfo(Me.btnSearch2), New DevExpress.XtraBars.LinkPersistInfo(Me.btnPrevHighlight), New DevExpress.XtraBars.LinkPersistInfo(Me.btnNextHighlight)})
Me.ToolbarDocumentViewer.OptionsBar.AllowCollapse = True Me.ToolbarDocumentViewer.OptionsBar.AllowCollapse = True
Me.ToolbarDocumentViewer.OptionsBar.AllowQuickCustomization = False Me.ToolbarDocumentViewer.OptionsBar.AllowQuickCustomization = False
Me.ToolbarDocumentViewer.OptionsBar.DrawDragBorder = False Me.ToolbarDocumentViewer.OptionsBar.DrawDragBorder = False
@ -313,6 +323,41 @@ Partial Class DocumentViewer
Me.buttonSettings.Name = "buttonSettings" Me.buttonSettings.Name = "buttonSettings"
Me.buttonSettings.Visibility = DevExpress.XtraBars.BarItemVisibility.Never Me.buttonSettings.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
' '
'txtSearch
'
Me.txtSearch.Caption = "BarEditItem1"
Me.txtSearch.Edit = Me.RepositoryItemTextEdit3
Me.txtSearch.Id = 27
Me.txtSearch.Name = "txtSearch"
'
'RepositoryItemTextEdit3
'
Me.RepositoryItemTextEdit3.AutoHeight = False
Me.RepositoryItemTextEdit3.Name = "RepositoryItemTextEdit3"
'
'btnSearch2
'
Me.btnSearch2.Caption = "BarButtonItem3"
Me.btnSearch2.Id = 32
Me.btnSearch2.ImageOptions.SvgImage = CType(resources.GetObject("btnSearch2.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.btnSearch2.Name = "btnSearch2"
'
'btnPrevHighlight
'
Me.btnPrevHighlight.Caption = "BarButtonItem1"
Me.btnPrevHighlight.Enabled = False
Me.btnPrevHighlight.Id = 28
Me.btnPrevHighlight.ImageOptions.SvgImage = CType(resources.GetObject("btnPrevHighlight.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.btnPrevHighlight.Name = "btnPrevHighlight"
'
'btnNextHighlight
'
Me.btnNextHighlight.Caption = "BarButtonItem2"
Me.btnNextHighlight.Enabled = False
Me.btnNextHighlight.Id = 29
Me.btnNextHighlight.ImageOptions.SvgImage = CType(resources.GetObject("btnNextHighlight.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.btnNextHighlight.Name = "btnNextHighlight"
'
'barDockControlTop 'barDockControlTop
' '
Me.barDockControlTop.CausesValidation = False Me.barDockControlTop.CausesValidation = False
@ -351,6 +396,13 @@ Partial Class DocumentViewer
Me.BarStaticItem1.Id = 17 Me.BarStaticItem1.Id = 17
Me.BarStaticItem1.Name = "BarStaticItem1" Me.BarStaticItem1.Name = "BarStaticItem1"
' '
'btnSearch
'
Me.btnSearch.Caption = "Search"
Me.btnSearch.Id = 31
Me.btnSearch.ImageOptions.SvgImage = CType(resources.GetObject("btnSearch.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.btnSearch.Name = "btnSearch"
'
'RepositoryItemTextEdit1 'RepositoryItemTextEdit1
' '
Me.RepositoryItemTextEdit1.AutoHeight = False Me.RepositoryItemTextEdit1.AutoHeight = False
@ -372,6 +424,12 @@ Partial Class DocumentViewer
Me.RepositoryItemComboBox1.Items.AddRange(New Object() {"Arrow", "Text"}) Me.RepositoryItemComboBox1.Items.AddRange(New Object() {"Arrow", "Text"})
Me.RepositoryItemComboBox1.Name = "RepositoryItemComboBox1" Me.RepositoryItemComboBox1.Name = "RepositoryItemComboBox1"
' '
'RepositoryItemSearchControl1
'
Me.RepositoryItemSearchControl1.AutoHeight = False
Me.RepositoryItemSearchControl1.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Repository.ClearButton(), New DevExpress.XtraEditors.Repository.SearchButton()})
Me.RepositoryItemSearchControl1.Name = "RepositoryItemSearchControl1"
'
'SpreadsheetControl1 'SpreadsheetControl1
' '
Me.SpreadsheetControl1.Location = New System.Drawing.Point(461, 377) Me.SpreadsheetControl1.Location = New System.Drawing.Point(461, 377)
@ -383,10 +441,25 @@ Partial Class DocumentViewer
Me.SpreadsheetControl1.Text = "SpreadsheetControl1" Me.SpreadsheetControl1.Text = "SpreadsheetControl1"
Me.SpreadsheetControl1.Visible = False Me.SpreadsheetControl1.Visible = False
' '
'LabelControl1
'
Me.LabelControl1.Appearance.Options.UseTextOptions = True
Me.LabelControl1.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center
Me.LabelControl1.Appearance.TextOptions.VAlignment = DevExpress.Utils.VertAlignment.Center
Me.LabelControl1.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.None
Me.LabelControl1.Location = New System.Drawing.Point(340, 222)
Me.LabelControl1.Name = "LabelControl1"
Me.LabelControl1.Size = New System.Drawing.Size(409, 72)
Me.LabelControl1.TabIndex = 14
Me.LabelControl1.Tag = "Die Datei konnte nicht gefunden werden: {0}"
Me.LabelControl1.Text = "Die Datei konnte nicht gefunden werden: {0}"
Me.LabelControl1.Visible = False
'
'DocumentViewer 'DocumentViewer
' '
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.Controls.Add(Me.LabelControl1)
Me.Controls.Add(Me.RichEditControl1) Me.Controls.Add(Me.RichEditControl1)
Me.Controls.Add(Me.SpreadsheetControl1) Me.Controls.Add(Me.SpreadsheetControl1)
Me.Controls.Add(Me.GdViewer) Me.Controls.Add(Me.GdViewer)
@ -398,9 +471,11 @@ Partial Class DocumentViewer
Me.Size = New System.Drawing.Size(1079, 590) Me.Size = New System.Drawing.Size(1079, 590)
CType(Me.BarManager1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.BarManager1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RepositoryItemTextEdit2, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.RepositoryItemTextEdit2, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RepositoryItemTextEdit3, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RepositoryItemTextEdit1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.RepositoryItemTextEdit1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RepositoryItemColorEdit1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.RepositoryItemColorEdit1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RepositoryItemComboBox1, System.ComponentModel.ISupportInitialize).EndInit() CType(Me.RepositoryItemComboBox1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.RepositoryItemSearchControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False) Me.ResumeLayout(False)
Me.PerformLayout() Me.PerformLayout()
@ -438,4 +513,12 @@ Partial Class DocumentViewer
Friend WithEvents RepositoryItemColorEdit1 As DevExpress.XtraEditors.Repository.RepositoryItemColorEdit Friend WithEvents RepositoryItemColorEdit1 As DevExpress.XtraEditors.Repository.RepositoryItemColorEdit
Friend WithEvents RepositoryItemComboBox1 As DevExpress.XtraEditors.Repository.RepositoryItemComboBox Friend WithEvents RepositoryItemComboBox1 As DevExpress.XtraEditors.Repository.RepositoryItemComboBox
Friend WithEvents labelPageCount As DevExpress.XtraBars.BarStaticItem Friend WithEvents labelPageCount As DevExpress.XtraBars.BarStaticItem
Friend WithEvents txtSearch As DevExpress.XtraBars.BarEditItem
Friend WithEvents RepositoryItemTextEdit3 As DevExpress.XtraEditors.Repository.RepositoryItemTextEdit
Friend WithEvents btnPrevHighlight As DevExpress.XtraBars.BarButtonItem
Friend WithEvents btnNextHighlight As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RepositoryItemSearchControl1 As DevExpress.XtraEditors.Repository.RepositoryItemSearchControl
Friend WithEvents LabelControl1 As DevExpress.XtraEditors.LabelControl
Friend WithEvents btnSearch As DevExpress.XtraBars.BarButtonItem
Friend WithEvents btnSearch2 As DevExpress.XtraBars.BarButtonItem
End Class End Class

View File

@ -161,6 +161,88 @@
NC42LTAuOCw2LjUtMi4xbDcuOSw3LjljMC4zLDAuMywwLjksMC4zLDEuMiwwbDEuMi0xLjJDMzAuMSwy NC42LTAuOCw2LjUtMi4xbDcuOSw3LjljMC4zLDAuMywwLjksMC4zLDEuMiwwbDEuMi0xLjJDMzAuMSwy
OC4yLDMwLjEsMjcuNiwyOS43LDI3LjN6IE00LDEzYzAtNSw0LTksOS05YzUsMCw5LDQsOSw5ICAgcy00 OC4yLDMwLjEsMjcuNiwyOS43LDI3LjN6IE00LDEzYzAtNSw0LTksOS05YzUsMCw5LDQsOSw5ICAgcy00
LDktOSw5QzgsMjIsNCwxOCw0LDEzeiIgY2xhc3M9IkJsYWNrIiAvPg0KICA8L2c+DQo8L3N2Zz4L LDktOSw5QzgsMjIsNCwxOCw0LDEzeiIgY2xhc3M9IkJsYWNrIiAvPg0KICA8L2c+DQo8L3N2Zz4L
</value>
</data>
<data name="btnSearch2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAANoCAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsdWV7ZmlsbDojMTE3N0Q3O30KCS5Z
ZWxsb3d7ZmlsbDojRkZCMTE1O30KCS5CbGFja3tmaWxsOiM3MjcyNzI7fQoJLkdyZWVue2ZpbGw6IzAz
OUMyMzt9CgkuUmVke2ZpbGw6I0QxMUMxQzt9Cgkuc3Qwe29wYWNpdHk6MC43NTt9Cgkuc3Qxe29wYWNp
dHk6MC41O30KPC9zdHlsZT4NCiAgPGcgaWQ9Ilpvb20iPg0KICAgIDxwYXRoIGQ9Ik0yNy43LDI1LjNM
MjAuNSwxOGMxLTEuNCwxLjUtMy4yLDEuNS01YzAtNS00LTktOS05cy05LDQtOSw5YzAsNSw0LDksOSw5
YzEuOSwwLDMuNi0wLjYsNS0xLjVsNy4zLDcuMyAgIGMwLjMsMC4zLDAuOSwwLjMsMS4yLDBsMS4yLTEu
MkMyOC4xLDI2LjIsMjguMSwyNS42LDI3LjcsMjUuM3ogTTYsMTNjMC0zLjksMy4xLTcsNy03czcsMy4x
LDcsN2MwLDMuOS0zLjEsNy03LDdTNiwxNi45LDYsMTN6IiBjbGFzcz0iQmxhY2siIC8+DQogIDwvZz4N
Cjwvc3ZnPgs=
</value>
</data>
<data name="btnPrevHighlight.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIQCAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
Pg0KICA8ZyBpZD0iQmFja3dhcmQiPg0KICAgIDxwYXRoIGQ9Ik0xNiwyQzguMywyLDIsOC4zLDIsMTZz
Ni4zLDE0LDE0LDE0czE0LTYuMywxNC0xNFMyMy43LDIsMTYsMnogTTI0LDE4aC04djZsLTgtOGw4LTh2
Nmg4VjE4eiIgY2xhc3M9IkdyZWVuIiAvPg0KICA8L2c+DQo8L3N2Zz4L
</value>
</data>
<data name="btnNextHighlight.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAIcCAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlJlZHtmaWxsOiNEMTFDMUM7fQoJLkJs
YWNre2ZpbGw6IzcyNzI3Mjt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLkdyZWVue2ZpbGw6IzAzOUMy
Mzt9CgkuWWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQoJLnN0MntvcGFjaXR5OjAuMjU7fQo8L3N0eWxl
Pg0KICA8ZyBpZD0iRm9yd2FyZF8xXyI+DQogICAgPHBhdGggZD0iTTE2LDJDOC4zLDIsMiw4LjMsMiwx
NnM2LjMsMTQsMTQsMTRzMTQtNi4zLDE0LTE0UzIzLjcsMiwxNiwyeiBNMTYsMjR2LTZIOHYtNGg4Vjhs
OCw4TDE2LDI0eiIgY2xhc3M9IkdyZWVuIiAvPg0KICA8L2c+DQo8L3N2Zz4L
</value>
</data>
<data name="btnSearch.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAFQEAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkdyZWVue2ZpbGw6IzAzOUMyMzt9Cgku
QmxhY2t7ZmlsbDojNzI3MjcyO30KCS5SZWR7ZmlsbDojRDExQzFDO30KCS5ZZWxsb3d7ZmlsbDojRkZC
MTE1O30KCS5CbHVle2ZpbGw6IzExNzdENzt9CgkuV2hpdGV7ZmlsbDojRkZGRkZGO30KCS5zdDB7b3Bh
Y2l0eTowLjU7fQoJLnN0MXtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBpZD0iRW5hYmxlU2Vh
cmNoIj4NCiAgICA8cGF0aCBkPSJNMTQuNSwxNy44QzEwLjgsMTcuMSw4LDEzLjksOCwxMGMwLTQuNCwz
LjYtOCw4LThzOCwzLjYsOCw4YzAsMS41LTAuNCwyLjgtMS4xLDRjMCwwLDAuMSwwLDAuMSwwICAgYzAu
NywwLDEuNCwwLjEsMi4xLDAuMmMwLjYtMS4zLDAuOS0yLjcsMC45LTQuMmMwLTUuNS00LjUtMTAtMTAt
MTBDMTAuNSwwLDYsNC41LDYsMTBjMCwyLjEsMC43LDQuMSwxLjgsNS43bC03LjUsNy42ICAgYy0wLjQs
MC4zLTAuNCwwLjksMCwxLjNsMS4yLDEuMmMwLjMsMC4zLDAuOSwwLjMsMS4yLDBsNy42LTcuNmMwLjks
MC42LDEuOSwxLjEsMi45LDEuNEMxMy42LDE5LDE0LDE4LjQsMTQuNSwxNy44eiIgY2xhc3M9IkJsdWUi
IC8+DQogICAgPHBhdGggZD0iTTIzLDE2Yy00LjQsMC04LjEsMy05LDdjMC45LDQsNC42LDcsOSw3YzQu
NCwwLDguMS0zLDktN0MzMS4xLDE5LDI3LjQsMTYsMjMsMTZ6IE0yMywyOGMtMy4zLDAtNi4xLTItNy01
ICAgYzAuOS0zLDMuNy01LDctNXM2LjEsMiw3LDVDMjkuMSwyNiwyNi4zLDI4LDIzLDI4eiBNMjMsMjZj
LTEuNywwLTMtMS4zLTMtM3MxLjMtMywzLTNzMywxLjMsMywzUzI0LjcsMjYsMjMsMjZ6IiBjbGFzcz0i
QmxhY2siIC8+DQogIDwvZz4NCjwvc3ZnPgs=
</value> </value>
</data> </data>
<metadata name="PrintDocument1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="PrintDocument1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

View File

@ -31,15 +31,17 @@ Public Class DocumentViewer
Stream Stream
End Enum End Enum
Private _ViewerMode As ViewerMode
Private _currentSearchOccurence As Integer = 0
Private _toggleGamma As Boolean = True
Private _licenseKey As String = String.Empty
Private _licenseManager As New GdPicture14.LicenseManager()
Private _logConfig As LogConfig Private _logConfig As LogConfig
Private _logger As Logger Private _logger As Logger
Private _email As Email2
Private _Config As ConfigManager(Of Config) Private _Config As ConfigManager(Of Config)
Private _email As Email2
Private _ViewerMode As ViewerMode
Private _licenseKey As String = String.Empty
Private _licenseManager As New GdPicture14.LicenseManager()
Private _Search As Search
Private _Annotations As Annotations Private _Annotations As Annotations
Private _AnnotationsPending As Boolean = False Private _AnnotationsPending As Boolean = False
@ -77,6 +79,7 @@ Public Class DocumentViewer
_licenseKey = pLicenseKey _licenseKey = pLicenseKey
_licenseManager.RegisterKEY(_licenseKey) _licenseManager.RegisterKEY(_licenseKey)
_Annotations = New Annotations(pLogConfig) _Annotations = New Annotations(pLogConfig)
_Search = New Search(pLogConfig, GdViewer)
Dim oConfigPath = ConfigPath() Dim oConfigPath = ConfigPath()
_Config = New ConfigManager(Of Config)(pLogConfig, oConfigPath) _Config = New ConfigManager(Of Config)(pLogConfig, oConfigPath)
@ -132,6 +135,10 @@ Public Class DocumentViewer
UpdateMainUi() UpdateMainUi()
End Sub End Sub
Private Sub SearchFile(pSearchQuery As String)
End Sub
''' <summary> ''' <summary>
''' Terminate Viewer, freeing up resources and deleting temp files ''' Terminate Viewer, freeing up resources and deleting temp files
''' </summary> ''' </summary>
@ -676,7 +683,29 @@ Public Class DocumentViewer
txtCurrentPage.Enabled = False txtCurrentPage.Enabled = False
End Select End Select
End Sub
Private Sub btnSearch2_ItemClick(sender As Object, e As XtraBars.ItemClickEventArgs) Handles btnSearch2.ItemClick
_Search.SearchAll(txtSearch.EditValue.ToString)
End Sub
Private Sub btnPrevHighlight_ItemClick(sender As Object, e As XtraBars.ItemClickEventArgs) Handles btnPrevHighlight.ItemClick
_Search.PrevHighlight()
End Sub
Private Sub btnNextHighlight_ItemClick(sender As Object, e As XtraBars.ItemClickEventArgs) Handles btnNextHighlight.ItemClick
_Search.NextHighlight()
End Sub
Private Sub txtSearch_EditValueChanged(sender As Object, e As EventArgs) Handles txtSearch.EditValueChanged
If String.IsNullOrEmpty(txtSearch.EditValue) Then
btnPrevHighlight.Enabled = False
btnNextHighlight.Enabled = False
Else
btnPrevHighlight.Enabled = True
btnNextHighlight.Enabled = True
End If
End Sub End Sub
#End Region #End Region

View File

@ -131,7 +131,7 @@
<Import Include="System.Threading.Tasks" /> <Import Include="System.Threading.Tasks" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="Annotations.vb" /> <Compile Include="Classes\Annotations.vb" />
<Compile Include="Config.vb" /> <Compile Include="Config.vb" />
<Compile Include="DocumentViewer.Designer.vb"> <Compile Include="DocumentViewer.Designer.vb">
<DependentUpon>DocumentViewer.vb</DependentUpon> <DependentUpon>DocumentViewer.vb</DependentUpon>
@ -161,6 +161,7 @@
<DependentUpon>Settings.settings</DependentUpon> <DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput> <DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile> </Compile>
<Compile Include="Classes\Search.vb" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="DocumentViewer.resx"> <EmbeddedResource Include="DocumentViewer.resx">