'
' ===========================================================================
' QFTPCLIENT              EXTENDED  COMPONENT             By Jacques Philippe
'
' EX : DOWNLOAD, EDIT AND UPLOAD A REMOTED FILE   Version February 12th, 2003                    
' ===========================================================================
'
$INCLUDE "QFTPCLIENT.INC"
$INCLUDE "QREDEX.INC"       ' Just Add  Copy, Cut, Paste, Select To QRichEdit
'
$ESCAPECHARS ON
$TYPECHECK ON
$INCLUDE "RAPIDQ.INC"
'
' Modify these Constantes
' -----------------------
Const FTP_SERVER = "yourserver.com"
Const FTP_LOGIN ="yourlogin"
Const FTP_PASSWORD = "your password"
Const FTP_DIR = "www/"               ' dont forget the terminal slash
Const FTP_FILE = "filename.ext"
' -----------------------
Const FRM_CAPTION = "Edit \"" & FTP_FILE & "\" for Dummies :)"  & " V100"
'
DefStr appDir = Command$(0) - Application.exename
ChDir appDir
'
Declare Sub OnClose_frmEditSiteFile
Declare Sub OnClic_AnyMenu (Sender As QMenuItem)
'
Create frmEditSiteFile As QForm
    Center
    Width =   850
    height =  650
    Caption = FRM_CAPTION
    AutoScroll = False
    OnClose = OnClose_frmEditSiteFile
    CREATE rchWin AS QRichEdit
        Align = 5
        Font.Name = "courier"
        Font.Size = 8
        WordWrap = False
        ScrollBars = ssBoth
        HideSelection = False
        PlainText = True
        Color = &HCBF8F0
    END CREATE
    CREATE Main AS QMAINMENU
        CREATE mnuGetFile AS QMENUITEM
            Caption = "  &GET\"" & FTP_FILE & "\""
            OnClick = OnClic_AnyMenu
        END CREATE
        CREATE mnuSaveFile AS QMENUITEM
            Caption = "  &SAVE\"" & FTP_FILE & "\""
            OnClick = OnClic_AnyMenu
        END CREATE
    END CREATE
End Create
'
' --------------------------------------------------------------------
' Main Form Minimize to the task bar
DECLARE FUNCTION SetWindowLong LIB "user32" ALIAS "SetWindowLongA" (hWnd AS LONG, _
                                               nIndex AS LONG, dwNewLong AS LONG) AS LONG
CONST GWL_HWNDPARENT = (-8)                   'Minimize to task bar
CONST HWND_DESKTOP = 0
setwindowlong(frmEditSiteFile.handle, GWL_HWNDPARENT, HWND_DESKTOP)
setwindowlong(application.handle, GWL_HWNDPARENT, frmEditSiteFile.handle)
' Editor more than 64K
sendmessage (rchWin.handle, &HC5, 1048576, 0)
' --------------------------------------------------------------------
'
' Global Variables
' ----------------
'
DIM myFtp As QFtpClient
'
' *************************************
frmEditSiteFile.ShowModal
' *************************************
'
Sub OnClose_frmEditSiteFile
    myFTP.Close
    Application.Terminate
    End
End Sub
'
Sub OnClic_AnyMenu (Sender)
    DefInt iReturn
    DefStr FTP_Msg
    mnuGetFile.Enabled = False
    mnuSaveFile.Enabled = False
    Select Case Sender.Handle
        Case mnuGetFile.Handle
            rchWin.Clear
            IF MessageDlg (" *** Will DownLoad " & FTP_FILE & "\n         From " & FTP_SERVER _
                    & "\n\n    CAN TAKE SOME TIME", mtWarning, MBOK Or MBCANCEL, 0) <> IDOK Then Goto AFTERSELECT
            FTP_Msg = ""
            myFtp.Connect (FTP_SERVER, FTP_LOGIN, FTP_PASSWORD)
                FTP_Msg = "CONNECTING :\n" & myFtp.ReadMessage
                iReturn = myFtp.GetFile (FTP_DIR & FTP_FILE, FTP_FILE, False)
                FTP_Msg = FTP_Msg & "\n\nGETTING FILE :\n" & myFtp.ReadMessage
            myFtp.Close
            FTP_Msg = FTP_Msg & "\n\nCLOSING :\n" & myFtp.ReadMessage
            If iReturn = true Then
                ShowMessage (" *** OK " & FTP_FILE & " Downloaded\n From " & FTP_SERVER _
                                        & "\n\nGetFile FTP Messages : \n" & FTP_Msg)
                rchWin.LoadFromFile (FTP_FILE)
            Else
                ShowMessage (" *** ERROR in File Transfer ! RETRY IT !" & _
                                        & "\n\nGetFile FTP Messages : \n" & FTP_Msg)
            End If
        Case mnuSaveFile.Handle
            rchWin.SaveToFile (FTP_FILE)
            If MessageDlg (" *** Will Upload " & FTP_FILE & "\n         At " & FTP_SERVER _
                    & "\n\n    CAN TAKE SOME TIME", mtWarning, MBOK Or MBCANCEL, 0) <> IDOK Then Goto AFTERSELECT
            myFtp.Connect (FTP_SERVER, FTP_LOGIN, FTP_PASSWORD)
                FTP_Msg = "CONNECTING :\n" & myFtp.ReadMessage
                ireturn = myFtp.PutFile (FTP_FILE, FTP_DIR & FTP_FILE)
                FTP_Msg = FTP_Msg & "\n\nPUTTING FILE :\n" & myFtp.ReadMessage
            myFtp.Close
            FTP_Msg = FTP_Msg & "\n\nCLOSING :\n" & myFtp.ReadMessage
            If iReturn = True Then
                ShowMessage(" *** OK File " & FTP_FILE & " Updated At \n" & FTP_SERVER & _
                                        & "\n\nPutFile FTP Messages : \n" & FTP_Msg)
            Else
                ShowMessage(" *** ERROR Cannot Upload File " & FTP_FILE & "\nAt " & FTP_SERVER & _
                                        & "\n\nPutFile FTP Messages : \n" & FTP_Msg)
            End If
    End Select
AFTERSELECT:
    mnuGetFile.Enabled = True
    mnuSaveFile.Enabled = True
End Sub
'
