Files

150 lines
4.0 KiB
Plaintext

IMPORT os
IMPORT security
FUNCTION ver_archivo(fname)
DEFINE fr_end STRING,
fname STRING,
lname STRING,
dname STRING,
d_dir STRING,
m_err STRING
LET fr_end=ui.Interface.getFrontEndName()
LET fname=get_local_path(fname)
IF os.Path.exists(fname) THEN
LET m_err=SFMT("Archivo %1 recibido",fname)
# CALL fgl_winMessage("Debug",m_err,"information")
ELSE
LET m_err=SFMT(%"No existe el archivo %1", fname)
# CALL fgl_winmessage("Error",m_err,"stop")
RETURN
END IF
IF fr_end="GDC" THEN
CALL open_file_with_app(fr_end,fname)
ELSE
LET lname=os.path.basename(fname)
IF fr_end="GMI" OR fr_end="GMA" THEN
CALL ui.interface.frontcall("standard", "feinfo", ["datadirectory"], [d_dir])
# LET d_dir='/sdcard/Download/'
IF d_dir.getCharAt(d_dir.getLength())=="/" THEN
LET dname=d_dir,lname
ELSE
LET dname=d_dir,"/",lname
END IF
ELSE
LET dname=lname
END IF
# LET m_err=SFMT(%"fname %1 dname %2",fname,dname)
# CALL fgl_winmessage("file",m_err,"info")
IF os.Path.EXISTS(fname) THEN
CALL fgl_putfile(fname,dname)
IF fr_end="GMI" OR fr_end="GMA" THEN
CALL open_file_with_app(fr_end,dname)
END IF
END IF
END IF
END FUNCTION
PRIVATE FUNCTION get_local_path(f)
DEFINE x base.StringBuffer
DEFINE f,k STRING
LET k =base.Application.getProgramDir(),f CLIPPED
# CALL fgl_winmessage("k",k,"info")
LET f=base.Application.getProgramDir(),f CLIPPED
LET x=base.StringBuffer.create()
CALL x.append(f)
CALL x.replace("\\","/",0)
RETURN x.toString()
END FUNCTION
PRIVATE FUNCTION open_file_with_app(fr_end,f_name)
DEFINE result,myfile,fr_end STRING
DEFINE f_name,uri STRING
DEFINE s_cmd STRING
DEFINE m_err STRING
DEFINE ret INTEGER
IF fr_end="GDC" THEN
LET s_cmd="shellexec"
ELSE
LET s_cmd="launchurl"
LET f_name="file://",f_name
LET uri = ui.interface.filenameToURI(f_name)
END IF
LET m_err=SFMT(%"Abriendo el archivo %1 con %2 en %3", f_name, s_cmd, fr_end)
# CALL fgl_winmessage("Debug1",m_err,"information")
TRY
CALL ui.Interface.frontCall("standard",s_cmd,[f_name],[ret])
CATCH
LET m_err="No puedo abrir file: ", f_name, " ", err_get(STATUS)
CALL fgl_winmessage("Error", m_err,"info")
END TRY
{
OPEN WINDOW w14 WITH FORM "printfile"
INPUT BY NAME myfile ATTRIBUTE(ACCEPT=FALSE)
BEFORE INPUT
LET myfile = f_name
ON ACTION impresion
CALL ui.Interface.frontCall("cordova","call",["Printer","print"],[result])
AFTER INPUT
IF int_flag THEN
EXIT INPUT
END IF
END INPUT
CLOSE WINDOW w14}
END FUNCTION
FUNCTION check_create_folder(dir)
DEFINE dir STRING
DEFINE msg STRING
DEFINE ret BOOLEAN
CALL os.Path.exists(dir) RETURNING ret
IF ret THEN
LET msg=SFMT(%"Folder %1 already exists",dir)
# CALL fgl_winmessage("Debug",msg,"information")
ELSE
-- creates the folder
CALL os.Path.mkdir(dir) RETURNING ret
END IF
IF NOT(ret) THEN
LET msg=SFMT(%"Unable to create folder %1",dir)
CALL fgl_winmessage("Error",msg,"stop")
EXIT PROGRAM
END IF
END FUNCTION
FUNCTION b64_to_file(str_b64,f_sal)
DEFINE f_sal,str_b64,str_aux STRING
TRY
CALL security.Base64.SaveBinary(f_sal,str_b64)
CATCH
LET str_aux="Unable to convert Base64 String to file :",STATUS
CALL fgl_winmessage("Error",str_aux,"stop")
END TRY
END FUNCTION