diff --git a/Icarus/HelpWnd/HelpWndV.xaml.vb b/Icarus/HelpWnd/HelpWndV.xaml.vb index 1fb972d..16612bb 100644 --- a/Icarus/HelpWnd/HelpWndV.xaml.vb +++ b/Icarus/HelpWnd/HelpWndV.xaml.vb @@ -1,4 +1,8 @@ -Public Class HelpWndV +Imports System.Diagnostics.Eventing +Imports System.IO +Imports System.Reflection + +Public Class HelpWndV Private WithEvents m_HelpWndVM As HelpWndVM @@ -11,8 +15,8 @@ m_HelpWndVM = HelpWndVM 'm_HelpWndVM.SetWebBrowser(WebBrowser) Browser.ResourceRequestHandlerFactory = New ResourceHandlerFactory - 'Dim x = New System.Reflection.Assembly.GetManifestResourceStream - Browser.Address = "index.html" + + Browser.Address = "Icarus.pdf#toolbar=0" End Sub 'Private Sub CloseWindow(bDialogResult As Boolean) Handles m_HelpWndVM.m_CloseWindow diff --git a/Icarus/HelpWnd/ResourceHandler.vb b/Icarus/HelpWnd/ResourceHandler.vb index 7da318d..9cbb64d 100644 --- a/Icarus/HelpWnd/ResourceHandler.vb +++ b/Icarus/HelpWnd/ResourceHandler.vb @@ -21,10 +21,25 @@ Public Class ResourceHandler Public Property ErrorCode As CefErrorCode? Private disposedValue As Boolean + Public Sub New(ByVal Optional mimeType As String = DefaultMimeType, ByVal Optional stream As Stream = Nothing, ByVal Optional autoDisposeStream As Boolean = False, ByVal Optional charset As String = Nothing) + If String.IsNullOrEmpty(mimeType) Then + Throw New ArgumentNullException("mimeType", "Please provide a valid mimeType") + End If + + StatusCode = 200 + StatusText = "OK" + mimeType = "application/pdf" + Headers = New NameValueCollection() + stream = stream + autoDisposeStream = autoDisposeStream + charset = charset + Headers.Add("Access-Control-Allow-Origin", "*") + End Sub Public Sub GetResponseHeaders(response As IResponse, ByRef responseLength As Long, ByRef redirectUrl As String) Implements IResourceHandler.GetResponseHeaders redirectUrl = Nothing responseLength = -1 - response.MimeType = MimeType + 'response.MimeType = MimeType + response.MimeType = "application/pdf" response.StatusCode = StatusCode response.StatusText = StatusText response.Headers = Headers @@ -48,23 +63,55 @@ Public Class ResourceHandler End Sub Public Sub Cancel() Implements IResourceHandler.Cancel - Throw New NotImplementedException() + Return End Sub Public Function Open(request As IRequest, ByRef handleRequest As Boolean, callback As ICallback) As Boolean Implements IResourceHandler.Open + Dim assembly = Reflection.Assembly.GetExecutingAssembly() + Dim resourceName = "Icarus.Icarus.pdf" + + Stream = assembly.GetManifestResourceStream(resourceName) + callback.Continue() Return True End Function Public Function ProcessRequest(request As IRequest, callback As ICallback) As Boolean Implements IResourceHandler.ProcessRequest - Throw New NotImplementedException() + Return True End Function Public Function Skip(bytesToSkip As Long, ByRef bytesSkipped As Long, callback As IResourceSkipCallback) As Boolean Implements IResourceHandler.Skip - Throw New NotImplementedException() + callback.Dispose() + + If Stream Is Nothing OrElse Not Stream.CanSeek Then + bytesSkipped = -2 + Return False + End If + + bytesSkipped = bytesToSkip + Stream.Seek(bytesToSkip, SeekOrigin.Current) + Return True End Function Public Function Read(dataOut As Stream, ByRef bytesRead As Integer, callback As IResourceReadCallback) As Boolean Implements IResourceHandler.Read - Throw New NotImplementedException() + bytesRead = 0 + callback.Dispose() + + If Stream Is Nothing Then + Return False + End If + + If tempBuffer Is Nothing OrElse tempBuffer.Length < dataOut.Length Then + tempBuffer = New Byte(dataOut.Length - 1) {} + End If + + bytesRead = Stream.Read(tempBuffer, 0, CInt(dataOut.Length)) + + If bytesRead = 0 Then + Return False + End If + + dataOut.Write(tempBuffer, 0, bytesRead) + Return bytesRead > 0 End Function Public Function ReadResponse(dataOut As Stream, ByRef bytesRead As Integer, callback As ICallback) As Boolean Implements IResourceHandler.ReadResponse diff --git a/Icarus/HelpWnd/ResourceRequestHandler.vb b/Icarus/HelpWnd/ResourceRequestHandler.vb index a30ee41..66356c3 100644 --- a/Icarus/HelpWnd/ResourceRequestHandler.vb +++ b/Icarus/HelpWnd/ResourceRequestHandler.vb @@ -28,11 +28,11 @@ Public Class ResourceRequestHandler End Function Public Function OnResourceResponse(chromiumWebBrowser As IWebBrowser, browser As IBrowser, frame As IFrame, request As IRequest, response As IResponse) As Boolean Implements IResourceRequestHandler.OnResourceResponse - Throw New NotImplementedException() + Return True End Function Public Function GetResourceResponseFilter(chromiumWebBrowser As IWebBrowser, browser As IBrowser, frame As IFrame, request As IRequest, response As IResponse) As IResponseFilter Implements IResourceRequestHandler.GetResourceResponseFilter - Throw New NotImplementedException() + Return Nothing End Function Public Function OnProtocolExecution(chromiumWebBrowser As IWebBrowser, browser As IBrowser, frame As IFrame, request As IRequest) As Boolean Implements IResourceRequestHandler.OnProtocolExecution @@ -40,15 +40,15 @@ Public Class ResourceRequestHandler End Function Protected Overridable Sub Dispose(disposing As Boolean) - If Not disposedValue Then - If disposing Then - ' TODO: dispose managed state (managed objects) - End If + 'If Not disposedValue Then + ' If disposing Then + ' ' TODO: dispose managed state (managed objects) + ' End If - ' TODO: free unmanaged resources (unmanaged objects) and override finalizer - ' TODO: set large fields to null - disposedValue = True - End If + ' ' TODO: free unmanaged resources (unmanaged objects) and override finalizer + ' ' TODO: set large fields to null + ' disposedValue = True + 'End If End Sub ' ' TODO: override finalizer only if 'Dispose(disposing As Boolean)' has code to free unmanaged resources diff --git a/Icarus/Icarus.pdf b/Icarus/Icarus.pdf new file mode 100644 index 0000000..b5b6b3c Binary files /dev/null and b/Icarus/Icarus.pdf differ diff --git a/Icarus/Icarus.vbproj b/Icarus/Icarus.vbproj index a9dacdd..9b71d7f 100644 --- a/Icarus/Icarus.vbproj +++ b/Icarus/Icarus.vbproj @@ -562,11 +562,13 @@ Settings.settings True + VbMyResourcesResXFileCodeGenerator Resources.Designer.vb My.Resources + SettingsSingleFileGenerator diff --git a/Icarus/Resources/Manual/Icarus.pdf b/Icarus/Resources/Manual/Icarus.pdf new file mode 100644 index 0000000..b5b6b3c Binary files /dev/null and b/Icarus/Resources/Manual/Icarus.pdf differ