DocumentViewer: Clean up code, fully implement new toolbar, remove custom print dialog

This commit is contained in:
Jonathan Jenne
2020-11-18 16:25:52 +01:00
parent 6561c0c264
commit 907bc79627
3 changed files with 221 additions and 881 deletions

View File

@@ -35,21 +35,6 @@ Public Class DocumentViewer
Private _TempFiles As New List(Of String)
Private Sub DocumentViewer_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim zoomModes As New Dictionary(Of ZoomMode, String) From {
{ZoomMode.Zoom50, "50%"},
{ZoomMode.Zoom100, "100%"},
{ZoomMode.Zoom150, "150%"},
{ZoomMode.Zoom200, "200%"},
{ZoomMode.ZoomSelectedArea, "Zoom to selected area"},
{ZoomMode.ZoomFitToViewer, "Fit to viewer"},
{ZoomMode.ZoomFitWidth, "Fit to viewer width"},
{ZoomMode.ZoomFitHeight, "Fit to viewer height"}
}
For Each item In zoomModes
cbZoom.Items.Add(item.Value)
Next
_TempFiles.Clear()
UpdateMainUi()
@@ -155,7 +140,7 @@ Public Class DocumentViewer
SpreadsheetControl1.Visible = False
SpreadsheetControl1.Dock = DockStyle.None
mainToolStrip.Visible = False
ToolbarDocumentViewer.Visible = False
Select Case oExtension.ToUpper
Case ".MSG"
@@ -189,7 +174,7 @@ Public Class DocumentViewer
SpreadsheetControl1.Dock = DockStyle.Fill
Case Else
mainToolStrip.Visible = True
ToolbarDocumentViewer.Visible = True
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer
GdViewer.DocumentAlignment = ViewerDocumentAlignment.DocumentAlignmentTopCenter
@@ -211,7 +196,7 @@ Public Class DocumentViewer
SpreadsheetControl1.Visible = False
SpreadsheetControl1.Dock = DockStyle.None
mainToolStrip.Visible = False
ToolbarDocumentViewer.Visible = False
Select Case Extension.ToUpper
Case ".MSG"
@@ -246,7 +231,7 @@ Public Class DocumentViewer
SpreadsheetControl1.Dock = DockStyle.Fill
Case Else
mainToolStrip.Visible = True
ToolbarDocumentViewer.Visible = True
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer
GdViewer.DocumentAlignment = ViewerDocumentAlignment.DocumentAlignmentTopCenter
@@ -309,70 +294,30 @@ Public Class DocumentViewer
''' </param>
Public Sub RightOnlyView(ViewOnly As Boolean)
If ViewOnly Then
btnPrint.Visible = False
buttonPrint.Visibility = XtraBars.BarItemVisibility.Never
Else
btnPrint.Visible = True
buttonPrint.Visibility = XtraBars.BarItemVisibility.Always
End If
_hide_file_info_from_user = Not ViewOnly
End Sub
Private Sub UpdateMainUi()
Exit Sub
If GdViewer.PageCount = 0 Then
btnPrint.Enabled = False
btnFirstPage.Enabled = False
btnPreviousPage.Enabled = False
txtCurrentPage.Enabled = False
lblPageCount.Enabled = False
btnNextPage.Enabled = False
btnLastPage.Enabled = False
btnZoomOut.Enabled = False
cbZoom.Enabled = False
btnZoomIn.Enabled = False
btnFitPage.Enabled = False
btnFitWidth.Enabled = False
btnRotateLeft.Enabled = False
btnRotateRight.Enabled = False
btnFlipX.Enabled = False
btnFlipY.Enabled = False
txtCurrentPage.EditValue = "0"
lblPageCount.Text = "/ 0"
cbZoom.SelectedIndex = -1
Else
btnPrint.Enabled = True
btnFirstPage.Enabled = True
btnPreviousPage.Enabled = True
txtCurrentPage.Enabled = True
lblPageCount.Enabled = True
btnNextPage.Enabled = True
btnLastPage.Enabled = True
btnZoomOut.Enabled = True
cbZoom.Enabled = True
btnZoomIn.Enabled = True
btnFitPage.Enabled = True
btnFitWidth.Enabled = True
btnRotateLeft.Enabled = True
btnRotateRight.Enabled = True
btnFlipX.Enabled = True
btnFlipY.Enabled = True
UpdateaNavigationToolbar()
End If
End Sub
Private Sub btnFirstPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnFirstPage.Click, buttonFirstPage.ItemClick
Private Sub btnFirstPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonFirstPage.ItemClick
GdViewer.DisplayFirstPage()
End Sub
Private Sub btnPreviousPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnPreviousPage.Click, buttonPrevPage.ItemClick
Private Sub btnPreviousPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonPrevPage.ItemClick
GdViewer.DisplayPreviousPage()
End Sub
Private Sub btnNextPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnNextPage.Click, buttonNextPage.ItemClick
Private Sub btnNextPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonNextPage.ItemClick
GdViewer.DisplayNextPage()
End Sub
Private Sub btnLastPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnLastPage.Click, buttonLastPage.ItemClick
Private Sub btnLastPage_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonLastPage.ItemClick
GdViewer.DisplayLastPage()
End Sub
@@ -390,43 +335,6 @@ Public Class DocumentViewer
UpdateaNavigationToolbar()
End Sub
Private Sub ChangeZoomValue()
If cbZoom.SelectedIndex <> -1 Then
Select Case cbZoom.SelectedIndex
Case ZoomMode.Zoom50
GdViewer.Zoom = 50.0F / 100
Case ZoomMode.Zoom100
GdViewer.Zoom = 100.0F / 100
Case ZoomMode.Zoom150
GdViewer.Zoom = 150.0F / 100
Case ZoomMode.Zoom200
GdViewer.Zoom = 250.0F / 100
Case ZoomMode.ZoomSelectedArea
If GdViewer.IsRect() Then
GdViewer.ZoomRect()
Else
GdViewer.MouseMode = ViewerMouseMode.MouseModeAreaSelection
GdViewer.Focus()
End If
Case ZoomMode.ZoomFitToViewer
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeFitToViewer
Case ZoomMode.ZoomFitWidth
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer
Case ZoomMode.ZoomFitHeight
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeHeightViewer
End Select
Else
If (IsNumeric(Regex.Replace(cbZoom.Text, "[^0-9,.]", ""))) Then
GdViewer.Zoom = Val(Regex.Replace(cbZoom.Text, "[^0-9,.]", "")) / 100
End If
End If
UpdateaNavigationToolbar()
End Sub
Private Sub cbZoom_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As EventArgs) Handles cbZoom.SelectedIndexChanged
ChangeZoomValue()
End Sub
Private Sub GdViewer1_AfterZoomChange() Handles GdViewer.AfterZoomChange
UpdateaNavigationToolbar()
If GdViewer.MouseMode = ViewerMouseMode.MouseModeAreaZooming Then
@@ -434,109 +342,108 @@ Public Class DocumentViewer
End If
End Sub
Private Sub btnZoomOut_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnZoomOut.Click, buttonZoomOut.ItemClick
Private Sub btnZoomOut_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonZoomOut.ItemClick
GdViewer.ZoomOUT()
End Sub
Private Sub btnZoomIn_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnZoomIn.Click, buttonZoomIn.ItemClick
Private Sub btnZoomIn_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonZoomIn.ItemClick
GdViewer.ZoomIN()
End Sub
Private Sub cbZoom_TextUpdate(ByVal sender As System.Object, ByVal e As EventArgs) Handles cbZoom.Validating
ChangeZoomValue()
End Sub
Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnPrint.Click, buttonPrint.ItemClick
Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonPrint.ItemClick
If GdViewer.PageCount = 0 Then
Return
End If
Using f As New frmViewerPrint(GdViewer)
f.ShowDialog(Me)
If f.DialogResult <> DialogResult.OK Then
Return
End If
Dim printSettings As frmViewerPrint.PrintSettings = f.printConfiguration
If Not GdViewer.PrintSetActivePrinter(printSettings.Printer) Then
Return
End If
GdViewer.PrintSetDocumentName("GdPicture Print Job " + DateTime.Now.ToString("yyyy-MM-dd HH\mm"))
GdViewer.PrintSetAlignment(printSettings.PrintAlignment)
Select Case printSettings.Orientation
Case frmViewerPrint.PrintOrientation.AutoDetection
GdViewer.PrintSetAutoRotation(True)
Exit Select
Case frmViewerPrint.PrintOrientation.Portrait
GdViewer.PrintSetAutoRotation(False)
GdViewer.PrintSetOrientation(PrinterOrientation.PrinterOrientationPortrait)
Exit Select
Case frmViewerPrint.PrintOrientation.Paysage
GdViewer.PrintSetAutoRotation(False)
GdViewer.PrintSetOrientation(PrinterOrientation.PrinterOrientationLandscape)
Exit Select
End Select
GdViewer.PrintSetCopies(printSettings.Copies)
If printSettings.Copies > 1 Then
GdViewer.PrintSetCollate(printSettings.Collate)
End If
Select Case printSettings.PagesToPrint
Case frmViewerPrint.PagesToPrint.All
GdViewer.PrintSetFromToPage(1, GdViewer.PageCount)
GdViewer.Print(printSettings.PrintSize)
Exit Select
Case frmViewerPrint.PagesToPrint.Current
GdViewer.PrintSetFromToPage(GdViewer.CurrentPage, GdViewer.CurrentPage)
GdViewer.Print(printSettings.PrintSize)
Exit Select
Case frmViewerPrint.PagesToPrint.Range
If printSettings.PageRange IsNot Nothing And printSettings.PageRange <> String.Empty Then
If printSettings.PageRange.Contains("-") Then
Dim pageStart As Integer = 0
If Integer.TryParse(printSettings.PageRange.Split("-"c)(0), pageStart) Then
Dim pageEnd As Integer = 0
If Integer.TryParse(printSettings.PageRange.Split("-"c)(1), pageEnd) Then
If pageEnd < pageStart Then
GdViewer.PrintSetFromToPage(pageEnd, pageStart)
GdViewer.Print(printSettings.PrintSize)
Else
GdViewer.PrintSetFromToPage(pageStart, pageEnd)
GdViewer.Print(printSettings.PrintSize)
End If
Else
MessageBox.Show("Page range is invalid.", "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
End If
Else
MessageBox.Show("Page range is invalid.", "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
End If
Else
Dim page As Integer = 0
If Integer.TryParse(printSettings.PageRange, page) Then
GdViewer.PrintSetFromToPage(page, page)
GdViewer.Print(printSettings.PrintSize)
Else
MessageBox.Show("Page range is invalid.", "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
End If
End If
Else
MessageBox.Show("Page range is invalid.", "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
End If
Exit Select
End Select
End Using
GdViewer.PrintDialog()
'Using f As New frmViewerPrint(GdViewer)
' f.ShowDialog(Me)
' If f.DialogResult <> DialogResult.OK Then
' Return
' End If
' Dim printSettings As frmViewerPrint.PrintSettings = f.printConfiguration
' If Not GdViewer.PrintSetActivePrinter(printSettings.Printer) Then
' Return
' End If
' GdViewer.PrintSetDocumentName("GdPicture Print Job " + DateTime.Now.ToString("yyyy-MM-dd HH\mm"))
' GdViewer.PrintSetAlignment(printSettings.PrintAlignment)
' Select Case printSettings.Orientation
' Case frmViewerPrint.PrintOrientation.AutoDetection
' GdViewer.PrintSetAutoRotation(True)
' Exit Select
' Case frmViewerPrint.PrintOrientation.Portrait
' GdViewer.PrintSetAutoRotation(False)
' GdViewer.PrintSetOrientation(PrinterOrientation.PrinterOrientationPortrait)
' Exit Select
' Case frmViewerPrint.PrintOrientation.Paysage
' GdViewer.PrintSetAutoRotation(False)
' GdViewer.PrintSetOrientation(PrinterOrientation.PrinterOrientationLandscape)
' Exit Select
' End Select
' GdViewer.PrintSetCopies(printSettings.Copies)
' If printSettings.Copies > 1 Then
' GdViewer.PrintSetCollate(printSettings.Collate)
' End If
' Select Case printSettings.PagesToPrint
' Case frmViewerPrint.PagesToPrint.All
' GdViewer.PrintSetFromToPage(1, GdViewer.PageCount)
' GdViewer.Print(printSettings.PrintSize)
' Exit Select
' Case frmViewerPrint.PagesToPrint.Current
' GdViewer.PrintSetFromToPage(GdViewer.CurrentPage, GdViewer.CurrentPage)
' GdViewer.Print(printSettings.PrintSize)
' Exit Select
' Case frmViewerPrint.PagesToPrint.Range
' If printSettings.PageRange IsNot Nothing And printSettings.PageRange <> String.Empty Then
' If printSettings.PageRange.Contains("-") Then
' Dim pageStart As Integer = 0
' If Integer.TryParse(printSettings.PageRange.Split("-"c)(0), pageStart) Then
' Dim pageEnd As Integer = 0
' If Integer.TryParse(printSettings.PageRange.Split("-"c)(1), pageEnd) Then
' If pageEnd < pageStart Then
' GdViewer.PrintSetFromToPage(pageEnd, pageStart)
' GdViewer.Print(printSettings.PrintSize)
' Else
' GdViewer.PrintSetFromToPage(pageStart, pageEnd)
' GdViewer.Print(printSettings.PrintSize)
' End If
' Else
' MessageBox.Show("Page range is invalid.", "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
' End If
' Else
' MessageBox.Show("Page range is invalid.", "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
' End If
' Else
' Dim page As Integer = 0
' If Integer.TryParse(printSettings.PageRange, page) Then
' GdViewer.PrintSetFromToPage(page, page)
' GdViewer.Print(printSettings.PrintSize)
' Else
' MessageBox.Show("Page range is invalid.", "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
' End If
' End If
' Else
' MessageBox.Show("Page range is invalid.", "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
' End If
' Exit Select
' End Select
'End Using
End Sub
Private Sub btnRotateLeft_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnRotateLeft.Click, buttonRotateLeft.ItemClick
Private Sub btnRotateLeft_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonRotateLeft.ItemClick
GdViewer.Rotate(RotateFlipType.Rotate270FlipNone)
End Sub
Private Sub btnRotateRight_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnRotateRight.Click, buttonRotateRight.ItemClick
Private Sub btnRotateRight_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonRotateRight.ItemClick
GdViewer.Rotate(RotateFlipType.Rotate90FlipNone)
End Sub
Private Sub btnFlipX_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnFlipX.Click, buttonFlipX.ItemClick
Private Sub btnFlipX_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonFlipX.ItemClick
GdViewer.Rotate(RotateFlipType.RotateNoneFlipX)
End Sub
Private Sub btnFlipY_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles btnFlipY.Click, buttonFlipY.ItemClick
Private Sub btnFlipY_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles buttonFlipY.ItemClick
GdViewer.Rotate(RotateFlipType.RotateNoneFlipY)
End Sub
@@ -545,10 +452,6 @@ Public Class DocumentViewer
UpdateMainUi()
End Sub
Private Sub cbZoom_Validating(ByVal sender As System.Object, ByVal e As CancelEventArgs) Handles cbZoom.Validating
ChangeZoomValue()
End Sub
Private Sub AddSearchRegion(ByVal occurence As Integer, ByVal leftCoordinate As Single, ByVal topCoordinate As Single, ByVal regionWidth As Single, ByVal regionheight As Single, ByVal ensureVisibility As Boolean)
Dim searchRegion As Integer = GdViewer.AddRegionInches("SearchResult" & occurence, leftCoordinate, topCoordinate, regionWidth, regionheight, ForegroundMixMode.ForegroundMixModeMASKPEN, Color.Yellow)
GdViewer.SetRegionEditable(searchRegion, False)
@@ -557,7 +460,7 @@ Public Class DocumentViewer
End If
End Sub
Private Sub btnSettings_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnSettings.Click, buttonSettings.ItemClick
Private Sub btnSettings_Click(ByVal sender As Object, ByVal e As EventArgs) Handles buttonSettings.ItemClick
Using frmSettings As New frmViewerSettings(GdViewer)
frmSettings.ShowDialog(Me)
End Using
@@ -570,83 +473,43 @@ Public Class DocumentViewer
Dim oCurrentPage As Integer = GdViewer.CurrentPage()
Dim oPageCount As Integer = GdViewer.PageCount
txtCurrentPage.EditValue = oCurrentPage.ToString()
lblPageCount.Text = "/ " & GdViewer.PageCount.ToString()
If oCurrentPage = 1 Or oCurrentPage = oPageCount Then
btnFirstPage.Enabled = False
btnPreviousPage.Enabled = False
If oCurrentPage = oPageCount Then
buttonLastPage.Enabled = False
buttonNextPage.Enabled = False
buttonPrevPage.Enabled = True
buttonFirstPage.Enabled = True
ElseIf oCurrentPage = 1 Then
buttonPrevPage.Enabled = False
buttonFirstPage.Enabled = False
buttonLastPage.Enabled = True
buttonNextPage.Enabled = True
Else
btnFirstPage.Enabled = True
btnPreviousPage.Enabled = True
buttonPrevPage.Enabled = True
buttonFirstPage.Enabled = True
buttonLastPage.Enabled = True
buttonNextPage.Enabled = True
End If
cbZoom.Text = String.Format(format:="{0:#0.##%}", arg0:=oCurrentZoom)
Catch ex As Exception
_logger.Error(ex)
End Try
End Sub
Private Sub btnFitWidth_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnFitWidth.Click, buttonFitWidth.ItemClick
Private Sub btnFitWidth_Click(ByVal sender As Object, ByVal e As EventArgs) Handles buttonFitWidth.ItemClick
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeWidthViewer
End Sub
Private Sub btnFitPage_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnFitPage.Click, buttonFitPage.ItemClick
Private Sub btnFitPage_Click(ByVal sender As Object, ByVal e As EventArgs) Handles buttonFitPage.ItemClick
GdViewer.ZoomMode = ViewerZoomMode.ZoomModeFitToViewer
End Sub
Private Sub DefaultToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles DefaultToolStripMenuItem.Click
GdViewer.MouseMode = ViewerMouseMode.MouseModeDefault
DefaultToolStripMenuItem.Checked = True
AreaSelectionToolStripMenuItem.Checked = False
PanToolStripMenuItem.Checked = False
AreaZoomingToolStripMenuItem.Checked = False
MagnifierToolStripMenuItem.Checked = False
GdViewer.Focus()
End Sub
Private Sub AreaSelectionToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles AreaSelectionToolStripMenuItem.Click
GdViewer.MouseMode = ViewerMouseMode.MouseModeAreaSelection
DefaultToolStripMenuItem.Checked = False
AreaSelectionToolStripMenuItem.Checked = True
PanToolStripMenuItem.Checked = False
AreaZoomingToolStripMenuItem.Checked = False
MagnifierToolStripMenuItem.Checked = False
GdViewer.Focus()
End Sub
Private Sub PanToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles PanToolStripMenuItem.Click
GdViewer.MouseMode = ViewerMouseMode.MouseModePan
DefaultToolStripMenuItem.Checked = False
AreaSelectionToolStripMenuItem.Checked = False
PanToolStripMenuItem.Checked = True
AreaZoomingToolStripMenuItem.Checked = False
MagnifierToolStripMenuItem.Checked = False
GdViewer.Focus()
End Sub
Private Sub AreaZoomingToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles AreaZoomingToolStripMenuItem.Click
GdViewer.MouseMode = ViewerMouseMode.MouseModeAreaZooming
DefaultToolStripMenuItem.Checked = False
AreaSelectionToolStripMenuItem.Checked = False
PanToolStripMenuItem.Checked = False
AreaZoomingToolStripMenuItem.Checked = True
MagnifierToolStripMenuItem.Checked = False
GdViewer.Focus()
End Sub
Private Sub MagnifierToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As EventArgs) Handles MagnifierToolStripMenuItem.Click
GdViewer.MouseMode = ViewerMouseMode.MouseModeMagnifier
DefaultToolStripMenuItem.Checked = False
AreaSelectionToolStripMenuItem.Checked = False
PanToolStripMenuItem.Checked = False
AreaZoomingToolStripMenuItem.Checked = False
MagnifierToolStripMenuItem.Checked = True
GdViewer.Focus()
End Sub
Private Sub RichEditControl1_SizeChanged(sender As Object, e As EventArgs) Handles RichEditControl1.SizeChanged
Dim oControlWidth = RichEditControl1.Width - 100
Dim oPageWidth = Units.DocumentsToPixelsF(RichEditControl1.Document.Sections(0).Page.Width, RichEditControl1.DpiX)
RichEditControl1.Views.PrintLayoutView.ZoomFactor = oControlWidth / oPageWidth
End Sub
Private Sub btnSettings_Click(sender As Object, e As XtraBars.ItemClickEventArgs) Handles buttonSettings.ItemClick
End Sub
End Class