IMPORT COM.sbi
servers[0]="dict.org"
servers[1]="dict1.us.dict.org"
servers[2]="all.dict.org"
FUNCTION btnFetch_Clicked
LOCAL dat, total, count
server_selection = COM::CBN(obj, "CurrentServer")
OPEN server_selection & ":2628" FOR SOCKET AS #1
PRINT#1,"SHOW DB\n"
LINE INPUT#1, dat
LINE INPUT#1, dat
count = 0
WHILE LEFT(dat, 1) <> "."
LINE INPUT#1, dat
IF LEFT(dat, 1) <> "." THEN total[count] = TRIM(dat)
count+=1
WEND
PRINT#1,"QUIT\n"
CLOSE(#1)
FOR cnt = 0 TO count - 2
COM::CBN obj, "AddDictionaries", :CALL, total[cnt]
NEXT
COM::CBN obj, "DefaultDictionary"
btnFetch_Clicked = TRUE
EXIT FUNCTION
FUNCTION btnSearch_clicked
LOCAL dict, dat, total, info
whichDictionary = COM::CBN(obj, "CurrentDictionary")
searchword = COM::CBN(obj, "SearchWord", :GET)
dict = LEFT(whichDictionary, INSTR(whichDictionary, " "))
OPEN COM::CBN(obj, "CurrentServer") & ":2628" FOR SOCKET AS 1
IF COM::CBN(obj, "AllDict", :GET) THEN
PRINT#1,"DEFINE * " & searchword & "\n"
ELSE
PRINT#1,"DEFINE " & dict & " " & searchword & "\n"
END IF
REPEAT
LINE INPUT#1, dat
IF LEFT(dat, 3) = "151" THEN
total$ &= "------------------------------\r\n"
total$ &= RIGHT(dat, LEN(dat) - LEN(searchword) - LEN(dict))
total$ &= "------------------------------\r\n"
REPEAT
LINE INPUT#1, info
info = REPLACE(info, CHR(34), CHR(92) & CHR(34))
IF LEFT(info, 1) <> "." THEN total &= TRIM(info) & "\r\n"
UNTIL LEFT(info, 1) = "."
total &= "\r\n"
END IF
UNTIL LEFT(dat, 3) = "250" OR VAL(LEFT(dat, 3)) > 499
PRINT#1,"QUIT\n"
CLOSE(#1)
IF LEFT(dat, 3) = "552" THEN
total = "No match found."
ELSE IF LEFT(dat, 3) = "501" THEN
total = "Select a dictionary first!"
ELSE IF LEFT(dat, 3) = "550" THEN
total = "Invalid database!"
END IF
COM::CBN(obj, "SetTranslation", :CALL, total)
btnSearch_Clicked = TRUE
EXIT FUNCTION
' MAIN
obj = COM::CREATE(:SET, "OLD.OLDict")
oCollection = COM::CBN(obj, "CallBackHandlers", :GET)
COM::CBN oCollection, "Add", :CALL, ADDRESS(btnFetch_Clicked()), "win.btnFetch_Click"
COM::CBN oCollection, "Add", :CALL, ADDRESS(btnSearch_Clicked()), "win.btnSearch_Click"
FOR idx = 0 TO UBOUND(servers)
COM::CBN obj, "AddServer", :CALL, servers[idx]
NEXT
COM::CBN obj, "DefaultServer"
COM::CBN obj, "ShowOLD"
COM::RELEASE obj