'Simple example to use QHTML object - © Pascal Delcombel-2003-2008
$TYPECHECK ON 
$include "rapidq.inc"
$include "\rapidq\examples\network\qhtml\QHTML.RQO"   'Nota: please always insert $include "rapid.inc" BEFORE "QHMLT" object

'External routine to load images (QHTML DO not include external dll or other staff)
DECLARE FUNCTION NViewLibLoad LIB "NVIEWLIB" ALIAS "NViewLibLoad" (FileName AS STRING, Progress AS INTEGER) AS INTEGER

declare SUB OnHover(TypeObject as String, URL as String)
declare SUB OnTagClick(URL as String)
declare SUB OnLoadImage(Image as QImage, FileName as String) 
declare SUB LoadFile
declare Sub TabChange
declare Sub CodeChange
declare sub center
'declare sbu RepaintAll

create Form as QForm 
    Center
    Caption = "Hello world!" 
    width   = 600
    height  = 600 
    visible = true  
    visible = false 
    create Panel1 as QPANEL
        align   = alTop
        height  = 40 
        create WHOU as QLabel
            caption = "toto"
            left    = 100
            width = 400
            top     = 5
            labelstyle = lsRecessed
        end create
        create WL as QButton
            caption = "load file"
            onclick =LoadFile
            left    = 5
            top     = 5
        end create
    end create
    create Splitter as QSplitter
        align   = alTop
        cursor  = crVSplit
        height  = 5  
        'OnMoved = Viewer.Repaint
    end create  
    create Panel2 as QPANEL
        align   = alClient
        create QTAB as QTabControl
            align  = alClient
            addtabs "Code", "View"
            OnChange = TabChange
            create code as QRichEdit
                align   = alClient 
                OnChange = CodeChange
                scrollbars = ssBoth
            end create
            create Viewer as QHTML
                align   = alClient 
                visible = false
                OnHover = OnHover
                OnTagClick  = OnTagClick
                OnLoadImage = OnLoadImage
                create PopupMenu as QPopupMenu 
                    create Option1 as QMenuitem
                        caption = "Print preview..."
                        onclick = viewer.Printpreview
                    end create
                    create Option2 as QMenuitem     
                        caption = "-"  
                    end create
                    create Option3 as QMenuitem
                        caption = "Search..."
                        onclick = viewer.Searchtext
                    end create
                end create
                popupmenu = PopupMenu
            end create
        end create
    end create        
    cursor   = crDefault
    OnPaint  = Viewer.Repaint  
end create

QTAB.TabIndex = 1
TabChange
form.showmodal

Sub LoadNewFile(FileName as string)
    dim File as QFileStream

    File.open(FileName,fmOpenRead)
    Code.text = File.ReadStr(File.Size)
    File.close
    WHOU.caption = Viewer.DocumentTitle
end sub

SUB OnHover(TypeObject as String, URL as String)
    if TypeObject = "HREF" then 
        WHOU.caption = URL 
    else
        WHOU.caption = TypeObject+": "+URL
    end if
end sub

SUB OnTagClick(URL as String)
    LoadNewFile(URL )
end sub

sub CodeChange
    Viewer.HTMLText = Code.text
end sub

Sub OnLoadImage(Image as QImage, FileName as String) 
    dim i as integer
    if FileExists(FileName) = true then Image.handle = NViewLibLoad(Filename, 0)
end sub

sub LoadFile
    DIM OpenDialog AS QOpenDialog
    OpenDialog.Filter = "HTML Files|*.html;*.htm|All Files|*.*"
    OpenDialog.FilterIndex = 1 
    IF OpenDialog.Execute THEN LoadNewFile(OpenDialog.FileName)
end sub

sub tabChange
    SELECT CASE QTab.TabIndex 
        CASE 0
            Code.visible = True
            Viewer.Visible = False
        CASE 1 
            Code.visible = false
            Viewer.Visible = true
    END SELECT
end sub

