File "WAF-GUI.bas"

Path: /WAF - Wireless Android Framework/WAF_0.1_Windows/WAF-GUI.bas
File size: 23.61 KB
MIME-type:
Charset: 8 bit

#COMPILE EXE "WAF-GUI.exe"
#DIM ALL

#INCLUDE ONCE     "Windows.inc"
#INCLUDE ONCE     "CommCtrl.inc"
#INCLUDE ONCE     "RTF.inc"
#RESOURCE ICON,   AICO,    "res\inu.ico"
#RESOURCE BITMAP, NWF,     "res\newfile.bmp"
#RESOURCE BITMAP, OPN,     "res\openfile.bmp"
#RESOURCE BITMAP, SAV,     "res\savefile.bmp"
#RESOURCE BITMAP, EDI,     "res\edit.bmp"
#RESOURCE BITMAP, RUN,     "res\run.bmp"
#RESOURCE BITMAP, LNG,     "res\lang.bmp"
#RESOURCE BITMAP, HLP,     "res\hlp.bmp"
#RESOURCE BITMAP, MORE,    "res\more.bmp"
#RESOURCE BITMAP, CMD1,    "res\devices.bmp"
#RESOURCE BITMAP, CMD2,    "res\help.bmp"
#RESOURCE BITMAP, CMD3,    "res\version.bmp"
#RESOURCE BITMAP, CMD4,    "res\changelog.bmp"
#RESOURCE BITMAP, CMD5,    "res\logcat.bmp"
#RESOURCE BITMAP, CMD6,    "res\install.bmp"
#RESOURCE BITMAP, CMD7,    "res\listapps.bmp"
#RESOURCE BITMAP, CMD8,    "res\uninstall.bmp"
#RESOURCE BITMAP, CMD9,    "res\launch.bmp"
#RESOURCE BITMAP, CMD10,   "res\pull.bmp"
#RESOURCE BITMAP, CMD11,   "res\push.bmp"
#RESOURCE BITMAP, CMD12,   "res\start-server.bmp"
#RESOURCE BITMAP, CMD13,   "res\kill-server.bmp"
#RESOURCE BITMAP, CMD14,   "res\shell.bmp"
#RESOURCE BITMAP, CMD15,   "res\popup.bmp"
#RESOURCE BITMAP, CMD16,   "res\vibrate.bmp"
#RESOURCE BITMAP, CMD17,   "res\browse.bmp"
#RESOURCE BITMAP, BTEN,    "res\button_add.bmp"
#RESOURCE BITMAP, BTFR,    "res\button_ajouter.bmp"

'------------------------------------------------------------------------------
'   ** Constants **
'------------------------------------------------------------------------------
%IDC_LNG_ICON       = 1001
%IDC_CMD_ICON       = 1002
%IDC_CMD_LABEL      = 1003
%IDC_COMBOBOX       = 1004
%IDC_LABEL1         = 1005
%IDC_PARAM1_TXTBOX  = 1006
%IDC_PARAM1_LABEL   = 1007
%IDC_PARAM1_DESC    = 1008
%IDC_PARAM2_TXTBOX  = 1009
%IDC_PARAM2_LABEL   = 1010
%IDC_PARAM2_DESC    = 1011
%IDC_PARAM1_MORE    = 1012
%IDC_PARAM2_MORE    = 1013
%IDC_ADD_IMGBUTTON  = 1014
%IDC_LINE1          = 1015
%IDC_LINE2          = 1016
%IDC_RICHEDIT       = 1017
%IDC_TOOLBAR        = 1018
%TTB_NEW            = 1100
%TTB_OPEN           = 1101
%TTB_SAVE           = 1102
%TTB_EDIT           = 1103
%TTB_RUN            = 1104
%TTB_LANG           = 1105
%TTB_HELP           = 1106
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
'   ** Global variables **
'------------------------------------------------------------------------------
GLOBAL LNG       AS BYTE
GLOBAL hLanguage AS DWORD
GLOBAL hToolbar  AS DWORD
GLOBAL cmd()     AS STRING ' list of commands
GLOBAL pe1()     AS STRING ' parameter english 1
GLOBAL pe2()     AS STRING ' parameter english 2
GLOBAL pf1()     AS STRING ' parameter french  1
GLOBAL pf2()     AS STRING ' parameter french  2
GLOBAL APPDATA   AS STRING
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
'   ** Main Application Entry Point **
'------------------------------------------------------------------------------
FUNCTION PBMAIN()

    LoadLibrary("riched32.dll")

    DIM cmd (1 TO 17)

    ARRAY ASSIGN cmd()  =  "devices", "help", "version", "changelog", "logcat", "install", _
                           "listapps", "uninstall", "launch", "pull", "push", "start-server", _
                           "kill-server", "shell", "popup", "vibrate", "browse"

    DIM pe1 (LBOUND(cmd) TO UBOUND(cmd))
    DIM pe2 (LBOUND(cmd) TO UBOUND(cmd))
    DIM pf1 (LBOUND(cmd) TO UBOUND(cmd))
    DIM pf2 (LBOUND(cmd) TO UBOUND(cmd))

    ARRAY ASSIGN pe1()  =  "", _ 'devices
                           "", _ ' help
                           "", _ ' version
                           "", _ ' changelog
                           "", _ ' logcat
                           "path + name of local .apk file", _ ' install
                           "", _ ' listapps
                           "name of installed app package", _ ' uninstall
                           "name of app package + main activity", _ ' launch
                           "path + name of existing remote file", _ ' pull
                           "path + name of existing local file", _ ' push
                           "", _ ' start-server
                           "", _ ' kill-server
                           "linux command to be executed", _ ' shell
                           "text to be displayed", _ ' popup
                           "morse code in the form of . (dot) _ (dash) and spaces (pause)", _ ' vibrate
                           "http url, or path + name of existing remote file" ' browse

    ARRAY ASSIGN pe2()  =  "", _ 'devices
                           "", _ ' help
                           "", _ ' version
                           "", _ ' changelog
                           "", _ ' logcat
                           "", _ ' install
                           "", _ ' listapps
                           "", _ ' uninstall
                           "", _ ' launch
                           "[optional] path + name of local file to create", _ ' pull
                           "path + name of remote file to create", _ ' push
                           "", _ ' start-server
                           "", _ ' kill-server
                           "", _ ' shell
                           "", _ ' popup
                           "", _ ' vibrate
                           ""    ' browse

    ARRAY ASSIGN pf1()  =  "", _ 'devices
                           "", _ ' help
                           "", _ ' version
                           "", _ ' changelog
                           "", _ ' logcat
                           "chemin + nom d'un fichier .apk local", _ ' install
                           "", _ ' listapps
                           "nom de package d'une appli installe", _ ' uninstall
                           "nom de package d'appli + son activity principale", _ ' launch
                           "chemin + nom d'un fichier distant existant", _ ' pull
                           "chemin + nom d'un fichier local existant", _ ' push
                           "", _ ' start-server
                           "", _ ' kill-server
                           "commande linux  excuter", _ ' shell
                           "texte  afficher", _ ' popup
                           "code morse sous la forme de . (point) _ (tiret) et espaces (pause)", _ ' vibrate
                           "url http, ou chemin + nom d'un fichier distant existant" ' browse

    ARRAY ASSIGN pf2()  =  "", _ 'devices
                           "", _ ' help
                           "", _ ' version
                           "", _ ' changelog
                           "", _ ' logcat
                           "", _ ' install
                           "", _ ' listapps
                           "", _ ' uninstall
                           "", _ ' launch
                           "[facultatif] chemin + nom du fichier local  crer", _ ' pull
                           "chemin + nom du fichier distant  crer", _ ' push
                           "", _ ' start-server
                           "", _ ' kill-server
                           "", _ ' shell
                           "", _ ' popup
                           "", _ ' vibrate
                           ""    ' browse

    APPDATA = CreateLocalAppdataFolder() + "\"

    LoadConfig()
    MENU NEW POPUP TO hLanguage
    MENU ADD STRING,  hLanguage, "English",      1, %MF_ENABLED
    MENU ADD STRING,  hLanguage, "Franais",     2, %MF_ENABLED
    MENU SET STATE    hLanguage, LNG, %MF_CHECKED

    ShowMainDlg %HWND_DESKTOP

END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
%CSIDL_LOCAL_APPDATA  = &H001c ' <user name>\Local Settings\Application Data (non roaming)
DECLARE FUNCTION SHGetFolderPath LIB "Shell32.dll" _
    ALIAS "SHGetFolderPathA" (BYVAL hwnd AS DWORD, BYVAL csidl AS LONG, _
    BYVAL hToken AS DWORD, BYVAL dwFlags AS DWORD, pszPath AS ASCIIZ) AS LONG
'------------------------------------------------------------------------------
FUNCTION CreateLocalAppdataFolder AS STRING
    LOCAL szBaseFolder AS ASCIIZ * %MAX_PATH
    LOCAL folder AS STRING
    ShGetFolderPath (BYVAL %NULL, _             ' hWnd, "typically null"
                     %CSIDL_LOCAL_APPDATA, _    ' (supported) CSIDL value
                     BYVAL %NULL, _             ' hToken for security, null  = Default
                     BYVAL 0, _                 ' above
                     szBaseFolder)
    folder = TRIM$(szBaseFolder) + "\" + EXE.NAME$
    MKDIR folder
    FUNCTION = folder
END FUNCTION
'------------------------------------------------------------------------------

'-----------------------------------------------------------------------------------------------------
MACRO INIFILE  = APPDATA + EXE.NAME$ + ".ini"
'-----------------------------------------------------------------------------------------------------
SUB LoadConfig()
    LOCAL a AS ASCIIZ * %MAX_PATH
    GetPrivateProfileString "Config", "language", "1", a, %MAX_PATH, INIFILE
    LNG = VAL(a)
    IF LNG <> 1 AND LNG <> 2 THEN LNG = 1
END SUB
'-----------------------------------------------------------------------------------------------------
'------------------------------------------------------------------------------
MACRO CHANGE_LANGUAGE
    WritePrivateProfileString "Config", "language", TRIM$(LNG), INIFILE
    CONTROL SET TEXT CB.HNDL, %IDC_LABEL1,       IIF$(LNG=1, "Add a command:", "Ajoutez une commande :")
    CONTROL SET TEXT CB.HNDL, %IDC_PARAM1_LABEL, IIF$(LNG=1, "Parameter 1:", "Paramtre 1 :")
    CONTROL SET TEXT CB.HNDL, %IDC_PARAM2_LABEL, IIF$(LNG=1, "Parameter 2:", "Paramtre 2 :")
    CONTROL SET IMGBUTTON CB.HNDL, %IDC_ADD_IMGBUTTON, IIF$(LNG=1, "BTEN", "BTFR")
    COMBOBOX GET SELECT  CB.HNDL, %IDC_COMBOBOX TO lRes
    DISPLAY_CMD_PARAMS
END MACRO
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
MACRO DISPLAY_CMD_PARAMS
    CONTROL SET TEXT       CB.HNDL, %IDC_PARAM1_TXTBOX, ""
    CONTROL SET TEXT       CB.HNDL, %IDC_PARAM2_TXTBOX, ""
    IF LNG = 1 THEN ' English
        IF pe1(lRes) = "" THEN
            CONTROL SET TEXT   CB.HNDL, %IDC_PARAM1_DESC, "none"
            CONTROL DISABLE    CB.HNDL, %IDC_PARAM1_TXTBOX
            CONTROL SHOW STATE CB.HNDL, %IDC_PARAM1_MORE, %SW_HIDE
            CONTROL DISABLE    CB.HNDL, %IDC_PARAM1_DESC
        ELSE
            CONTROL SET TEXT   CB.HNDL, %IDC_PARAM1_DESC, pe1(lRes)
            CONTROL ENABLE     CB.HNDL, %IDC_PARAM1_TXTBOX
            CONTROL SHOW STATE CB.HNDL, %IDC_PARAM1_MORE, %SW_SHOW
            CONTROL ENABLE     CB.HNDL, %IDC_PARAM1_DESC
            CONTROL SET FOCUS  CB.HNDL, %IDC_PARAM1_TXTBOX
        END IF
        IF pe2(lRes) = "" THEN
            CONTROL SET TEXT   CB.HNDL, %IDC_PARAM2_DESC, "none"
            CONTROL DISABLE    CB.HNDL, %IDC_PARAM2_TXTBOX
            CONTROL SHOW STATE CB.HNDL, %IDC_PARAM2_MORE, %SW_HIDE
            CONTROL DISABLE    CB.HNDL, %IDC_PARAM2_DESC
        ELSE
            CONTROL SET TEXT   CB.HNDL, %IDC_PARAM2_DESC, pe2(lRes)
            CONTROL ENABLE     CB.HNDL, %IDC_PARAM2_TXTBOX
            CONTROL SHOW STATE CB.HNDL, %IDC_PARAM2_MORE, %SW_SHOW
            CONTROL ENABLE     CB.HNDL, %IDC_PARAM2_DESC
        END IF
    ELSE ' Franais
        IF pf1(lRes) = "" THEN
            CONTROL SET TEXT   CB.HNDL, %IDC_PARAM1_DESC, "aucun"
            CONTROL DISABLE    CB.HNDL, %IDC_PARAM1_TXTBOX
            CONTROL SHOW STATE CB.HNDL, %IDC_PARAM1_MORE, %SW_HIDE
            CONTROL DISABLE    CB.HNDL, %IDC_PARAM1_DESC
        ELSE
            CONTROL SET TEXT   CB.HNDL, %IDC_PARAM1_DESC, pf1(lRes)
            CONTROL ENABLE     CB.HNDL, %IDC_PARAM1_TXTBOX
            CONTROL SHOW STATE CB.HNDL, %IDC_PARAM1_MORE, %SW_SHOW
            CONTROL ENABLE     CB.HNDL, %IDC_PARAM1_DESC
            CONTROL SET FOCUS  CB.HNDL, %IDC_PARAM1_TXTBOX
        END IF
        IF pf2(lRes) = "" THEN
            CONTROL SET TEXT   CB.HNDL, %IDC_PARAM2_DESC, "aucun"
            CONTROL DISABLE    CB.HNDL, %IDC_PARAM2_TXTBOX
            CONTROL SHOW STATE CB.HNDL, %IDC_PARAM2_MORE, %SW_HIDE
            CONTROL DISABLE    CB.HNDL, %IDC_PARAM2_DESC
        ELSE
            CONTROL SET TEXT   CB.HNDL, %IDC_PARAM2_DESC, pf2(lRes)
            CONTROL ENABLE     CB.HNDL, %IDC_PARAM2_TXTBOX
            CONTROL SHOW STATE CB.HNDL, %IDC_PARAM2_MORE, %SW_SHOW
            CONTROL ENABLE     CB.HNDL, %IDC_PARAM2_DESC
        END IF
    END IF
END MACRO
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
'   ** CallBacks **
'------------------------------------------------------------------------------
CALLBACK FUNCTION ProcMainDlg()
    LOCAL lRes AS LONG
    LOCAL e AS STRING

    SELECT CASE AS LONG CB.MSG

        CASE %WM_INITDIALOG ' Initialization handler
            COMBOBOX SELECT CB.HNDL, %IDC_COMBOBOX, 1
            lRes = 1
            DISPLAY_CMD_PARAMS
            CHANGE_LANGUAGE

        CASE %WM_SETCURSOR ' Change cursor to link-hand when hovering over links
            SELECT CASE GetDlgCtrlId(CB.WPARAM)
                CASE %IDC_PARAM1_MORE, %IDC_PARAM2_MORE, %IDC_LNG_ICON
                    SetCursor LoadCursor(%NULL, BYVAL %IDC_HAND)
                    SetWindowLong CB.HNDL, %dwl_msgresult, 1
                    FUNCTION = 1
                CASE %IDC_CMD_ICON, %IDC_CMD_LABEL
                    SetCursor LoadCursor(%NULL, BYVAL %IDC_HELP)
                    SetWindowLong CB.HNDL, %dwl_msgresult, 1
                    FUNCTION = 1
            END SELECT

        CASE %WM_NOTIFY
            SELECT CASE CB.NMCODE

            CASE %TTN_GetDispInfo ' Set tooltip on toolbars
                LOCAL PTT AS TooltipText PTR
                PTT = CB.LPARAM
               @PTT.@lpszText = SetToolTips(CB.NMID)

            CASE %TBN_DROPDOWN ' Language popup menu
                LOCAL pt AS POINTAPI
                LOCAL hWnd AS LONG
                GetCursorPos pt
                hWnd = WindowFromPoint(pt)
                lRes = TrackPopupMenuEx(hLanguage, %TPM_LEFTALIGN OR %TPM_RIGHTBUTTON OR %TPM_RETURNCMD, pt.X, pt.Y, hWnd, BYVAL 0&)
                IF lRes <> 0 AND lRes <> LNG THEN
                    MENU SET STATE hLanguage, LNG, %MF_UNCHECKED
                    LNG = lRes
                    MENU SET STATE hLanguage, LNG, %MF_CHECKED
                    CHANGE_LANGUAGE
                END IF
            END SELECT


        CASE %WM_COMMAND ' Process control notifications
            SELECT CASE AS LONG CB.CTL
                CASE %IDC_COMBOBOX
                    IF CB.CTLMSG = %CBN_SELENDOK THEN
                        COMBOBOX GET SELECT  CB.HNDL, CB.CTL TO lRes
                        COMBOBOX GET TEXT    CB.HNDL, CB.CTL TO e
                        CONTROL SET TEXT     CB.HNDL, %IDC_CMD_LABEL, e
                        GRAPHIC ATTACH       CB.HNDL, %IDC_CMD_ICON
                        GRAPHIC CLEAR
                        GRAPHIC RENDER BITMAP "CMD" + TRIM$(lRes), (0, 0) - (64, 64)
                        GRAPHIC ATTACH       CB.HNDL, %IDC_LNG_ICON
                        GRAPHIC RENDER BITMAP "LNG", (0, 0) - (24, 24)
                        DISPLAY_CMD_PARAMS
                    END IF

                CASE %IDC_CMD_ICON, %IDC_CMD_LABEL
                    IF CB.CTLMSG = %STN_CLICKED THEN
                        ?"help",,"wafgui"
                    END IF

                CASE %IDC_PARAM1_TXTBOX

                CASE %IDC_PARAM2_TXTBOX

                CASE %IDC_ADD_IMGBUTTON
                    IF CB.CTLMSG = %BN_CLICKED OR CB.CTLMSG = 1 THEN
                    END IF

                CASE %IDC_RICHEDIT

            END SELECT
    END SELECT
END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
FUNCTION SetToolTips(cID AS LONG) AS STRING
   SELECT CASE cID
      CASE %TTB_NEW  : FUNCTION = IIF$(LNG=1, "New script",      "Nouveau script")
      CASE %TTB_OPEN : FUNCTION = IIF$(LNG=1, "Open script",     "Ouvrir script")
      CASE %TTB_SAVE : FUNCTION = IIF$(LNG=1, "Save script",     "Sauver script")
      CASE %TTB_EDIT : FUNCTION = IIF$(LNG=1, "Edit mode",       "Mode dition")
      CASE %TTB_RUN  : FUNCTION = IIF$(LNG=1, "Run mode",        "Mode excution")
      CASE %TTB_LANG : FUNCTION = IIF$(LNG=1, "Change language", "Changer la langue")
      CASE %TTB_HELP : FUNCTION = IIF$(LNG=1, "Help",            "Aide")
   END SELECT
END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
FUNCTION StrReplace(mainstring AS STRING, look4 AS STRING, replacement AS STRING) AS STRING
    LOCAL e AS STRING
    e = mainstring
    REPLACE look4 WITH replacement IN e
    FUNCTION = e
END FUNCTION
'------------------------------------------------------------------------------

'------------------------------------------------------------------------------
'   ** Dialogs **
'------------------------------------------------------------------------------
FUNCTION ShowMainDlg(BYVAL hParent AS DWORD) AS LONG
    LOCAL lRslt       AS LONG
    LOCAL hDlg        AS DWORD
    LOCAL hFont1      AS DWORD
    LOCAL hFont2      AS DWORD
    LOCAL hFont3      AS DWORD
    LOCAL hImageList  AS DWORD
    LOCAL hIcon       AS DWORD
    LOCAL th          AS LONG ' toolbar height
    LOCAL rt          AS STRING

    DIALOG NEW PIXELS, hParent, "WAF-GUI", , , 512, 430, _
      %DS_MODALFRAME OR %WS_CAPTION OR %WS_POPUP OR %WS_SYSMENU OR %WS_MINIMIZEBOX, TO hDlg
    DIALOG SET COLOR       hDlg, %BLACK, %WHITE

    IMAGELIST NEW BITMAP 32,32,24,7 TO hImageList
    IMAGELIST ADD BITMAP hImageList, "NWF"
    IMAGELIST ADD BITMAP hImageList, "OPN"
    IMAGELIST ADD BITMAP hImageList, "SAV"
    IMAGELIST ADD BITMAP hImageList, "EDI"
    IMAGELIST ADD BITMAP hImageList, "RUN"
    IMAGELIST ADD BITMAP hImageList, "LNG"
    IMAGELIST ADD BITMAP hImageList, "HLP"

    CONTROL ADD TOOLBAR,   hDlg, %IDC_TOOLBAR, "",0,0,0,0, %TBSTYLE_TOOLTIPS OR %TBSTYLE_FLAT
    TOOLBAR SET IMAGELIST  hDlg, %IDC_TOOLBAR, hImageList, 0
    TOOLBAR ADD BUTTON     hDlg, %IDC_TOOLBAR, 1, %TTB_NEW,   %BTNS_BUTTON, "" ' new
    TOOLBAR ADD BUTTON     hDlg, %IDC_TOOLBAR, 2, %TTB_OPEN,  %BTNS_BUTTON, "" ' open
    TOOLBAR ADD BUTTON     hDlg, %IDC_TOOLBAR, 3, %TTB_SAVE,  %BTNS_BUTTON, "" ' save
    TOOLBAR ADD SEPARATOR  hDlg, %IDC_TOOLBAR, 50
    TOOLBAR ADD BUTTON     hDlg, %IDC_TOOLBAR, 4, %TTB_EDIT,  %BTNS_BUTTON OR %BTNS_CHECKGROUP, "" ' edit
    TOOLBAR ADD BUTTON     hDlg, %IDC_TOOLBAR, 5, %TTB_RUN,   %BTNS_BUTTON OR %BTNS_CHECKGROUP, "" ' run
    TOOLBAR ADD BUTTON     hDlg, %IDC_TOOLBAR, 0, 9999, 0, ""
    TOOLBAR ADD BUTTON     hDlg, %IDC_TOOLBAR, 0, 9998, 0, ""
    TOOLBAR ADD BUTTON     hDlg, %IDC_TOOLBAR, 0, 9997, 0, ""
    TOOLBAR ADD BUTTON     hDlg, %IDC_TOOLBAR, 0, 9996, 0, ""
    TOOLBAR ADD BUTTON     hDlg, %IDC_TOOLBAR, 6, %TTB_LANG,  %BTNS_DROPDOWN, "" ' language
    TOOLBAR ADD BUTTON     hDlg, %IDC_TOOLBAR, 7, %TTB_HELP,  %BTNS_BUTTON, "" ' help
    CONTROL GET SIZE       hDlg, %IDC_TOOLBAR TO lRslt, th

    TOOLBAR SET STATE      hDlg, %IDC_TOOLBAR, BYCMD 9999,  %TBSTATE_DISABLED
    TOOLBAR SET STATE      hDlg, %IDC_TOOLBAR, BYCMD 9998,  %TBSTATE_DISABLED
    TOOLBAR SET STATE      hDlg, %IDC_TOOLBAR, BYCMD 9997,  %TBSTATE_DISABLED
    TOOLBAR SET STATE      hDlg, %IDC_TOOLBAR, BYCMD 9996, %TBSTATE_DISABLED
    TOOLBAR SET STATE      hDlg, %IDC_TOOLBAR, BYCMD %TTB_EDIT, %TBSTATE_ENABLED OR %TBSTATE_CHECKED ' edit

    CONTROL HANDLE         hDlg, %IDC_TOOLBAR TO hToolbar

    CONTROL ADD COMBOBOX,  hDlg, %IDC_COMBOBOX, cmd(), 8, th+35, 184, 24*UBOUND(cmd), %CBS_DROPDOWNLIST OR %WS_TABSTOP
    CONTROL SET COLOR      hDlg, %IDC_COMBOBOX, %BLACK, %WHITE

    CONTROL ADD LABEL,     hDlg, %IDC_LABEL1, "Add a command:", 8, th+11, 184, 24
    CONTROL SET COLOR      hDlg, %IDC_LABEL1, -1, %WHITE

    CONTROL ADD GRAPHIC,   hDlg, %IDC_CMD_ICON, "", 200, th+8, 65, 65, %SS_NOTIFY
    GRAPHIC ATTACH         hDlg, %IDC_CMD_ICON
    GRAPHIC RENDER BITMAP "CMD1", (0, 0) - (64, 64)

    CONTROL ADD LABEL,     hDlg, %IDC_CMD_LABEL, cmd(1), 272, th+16, 230, 56, %SS_NOTIFY
    CONTROL SET COLOR      hDlg, %IDC_CMD_LABEL, RGB(242, 107, 195), %WHITE

    CONTROL ADD LABEL,     hDlg, %IDC_PARAM1_LABEL, "Parameter 1:", 8, th+72, 96, 24
    CONTROL SET COLOR      hDlg, %IDC_PARAM1_LABEL, -1, %WHITE
    CONTROL ADD LABEL,     hDlg, %IDC_PARAM1_DESC, "Bla bla", 104, th+72, 376, 24
    CONTROL SET COLOR      hDlg, %IDC_PARAM1_DESC, -1, %WHITE
    CONTROL ADD GRAPHIC,   hDlg, %IDC_PARAM1_MORE, "", 480, th+72, 26, 24, %SS_NOTIFY
    GRAPHIC ATTACH         hDlg, %IDC_PARAM1_MORE
    GRAPHIC RENDER BITMAP "MORE", (0, 0) - (25, 23)
    CONTROL ADD TEXTBOX,   hDlg, %IDC_PARAM1_TXTBOX, "", 8, th+96, 496, 24

    CONTROL ADD LABEL,     hDlg, %IDC_PARAM2_LABEL, "Parameter 2:", 8, th+128, 96, 24
    CONTROL SET COLOR      hDlg, %IDC_PARAM2_LABEL, -1, %WHITE
    CONTROL ADD LABEL,     hDlg, %IDC_PARAM2_DESC, "Bla bla", 104, th+128, 376, 24
    CONTROL SET COLOR      hDlg, %IDC_PARAM2_DESC, -1, %WHITE
    CONTROL ADD GRAPHIC,   hDlg, %IDC_PARAM2_MORE, "", 480, th+128, 26, 24, %SS_NOTIFY
    GRAPHIC ATTACH         hDlg, %IDC_PARAM2_MORE
    GRAPHIC RENDER BITMAP "MORE", (0, 0) - (25, 23)
    CONTROL ADD TEXTBOX,   hDlg, %IDC_PARAM2_TXTBOX, "", 8, th+152, 496, 24

    CONTROL ADD LINE,      hDlg, %IDC_LINE1, "", 8, th+208, 190, 1
    CONTROL ADD LINE,      hDlg, %IDC_LINE2, "", 318, th+208, 190, 1
    CONTROL ADD IMGBUTTON, hDlg, %IDC_ADD_IMGBUTTON, "BTEN", 207, th+191, 102, 34

   CONTROL ADD "richedit", hDlg, %IDC_RICHEDIT, "", 8, th+240, 496, 134, _
      %WS_CHILD OR %WS_VISIBLE OR %ES_MULTILINE OR %WS_VSCROLL OR %WS_BORDER
    rt  = "[font:o,10][b][red]push [green]C:\subfolder\myfile.ext [blue]/sdcard/Download/myfile.ext[/b][eol][eop]"
    CONTROL SET TEXT       hDlg, %IDC_RICHEDIT, RTF(rt)

    FONT NEW "Open Sans", 10, 0, %ANSI_CHARSET TO hFont1
    FONT NEW "Open Sans", 28, 1, %ANSI_CHARSET TO hFont2
    FONT NEW "Open Sans", 10, 1, %ANSI_CHARSET TO hFont3

    CONTROL SET FONT  hDlg, -1, hFont1
    CONTROL SET FONT  hDlg, %IDC_CMD_ICON, hFont1
    CONTROL SET FONT  hDlg, %IDC_CMD_LABEL, hFont2
    CONTROL SET FONT  hDlg, %IDC_COMBOBOX, hFont1
    CONTROL SET FONT  hDlg, %IDC_LABEL1, hFont3
    CONTROL SET FONT  hDlg, %IDC_PARAM1_TXTBOX, hFont1
    CONTROL SET FONT  hDlg, %IDC_PARAM1_LABEL, hFont3
    CONTROL SET FONT  hDlg, %IDC_PARAM1_DESC, hFont1
    CONTROL SET FONT  hDlg, %IDC_PARAM2_TXTBOX, hFont1
    CONTROL SET FONT  hDlg, %IDC_PARAM2_LABEL, hFont3
    CONTROL SET FONT  hDlg, %IDC_PARAM2_DESC, hFont1
    CONTROL SET FONT  hDlg, %IDC_PARAM1_MORE, hFont1
    CONTROL SET FONT  hDlg, %IDC_PARAM2_MORE, hFont1
    CONTROL SET FONT  hDlg, %IDC_ADD_IMGBUTTON, hFont1
    CONTROL SET FONT  hDlg, %IDC_LINE1, hFont1
    CONTROL SET FONT  hDlg, %IDC_LINE2, hFont1

    DIALOG SET ICON   hDlg, "AICO"
    DIALOG SHOW MODAL hDlg, CALL ProcMainDlg TO lRslt

    FONT END hFont1
    FONT END hFont2
    FONT END hFont3

    FUNCTION = lRslt
END FUNCTION
'------------------------------------------------------------------------------