# Property of Four Js* # (c) Copyright Four Js 1995, 2019. All Rights Reserved. # * Trademark of Four Js Development Tools Europe Ltd # in the United States and elsewhere # # Four Js and its suppliers do not warrant or guarantee that these # samples are accurate and suitable for your purposes. Their inclusion is # purely for information purposes only. IMPORT os #IMPORT FGL demo_make_db IMPORT FGL demo_load SCHEMA smarmotech DEFINE demos DYNAMIC ARRAY OF RECORD NAME, PROGRAM,args,tipo,basedatos,descripcion,dirname,ruta VARCHAR(255) END RECORD DEFINE topics DYNAMIC ARRAY OF RECORD NAME,parent,dirname VARCHAR(255) END RECORD, usuarios,clave VARCHAR(50), pperfil,pprinter1,pprinter2,ckprinter,pcodcia INT, cambia_c VARCHAR(10) MAIN DEFINE readme,nombre_cia,usuario,fecha_sistema,opcion STRING, ptasa FLOAT call ui.Interface.loadStyles("menup") OPTIONS INPUT WRAP OPEN FORM main FROM "demo" DISPLAY FORM MAIN CALL autentificacion() RETURNING usuarios,clave,pperfil,pprinter1,pprinter2,ckprinter,cambia_c,pcodcia SELECT a.nombre INTO nombre_cia FROM companias a WHERE a.cod_comp = pcodcia # BUSCA EL NOMBRE DE LA EMPRESA SELECT a.nombre INTO nombre_cia FROM companias a SELECT a.prima INTO Ptasa FROM vetb00019 a WHERE disponible = "S" LET ptasa = 60 LET usuario = 'JOHNNY SOTO' LET fecha_sistema = TODAY DISPLAY "Usuario" TO lusuario DISPLAY "Fecha" TO lfecha DISPLAY "Tasa" TO ltasa DISPLAY ptasa TO tasa DISPLAY BY NAME fecha_sistema DISPLAY BY NAME nombre_cia DISPLAY usuarios TO usuario # CALL demo_load.load_demo() CALL fetch_topics() DIALOG ATTRIBUTES(FIELD ORDER FORM, UNBUFFERED) DISPLAY ARRAY topics TO topics.* BEFORE ROW CALL fetch_demos(topics[arr_curr()].*) LET readme = readfile(os.Path.join(topics[arr_curr()].dirname, "README")) ON ACTION cambia ATTRIBUTE(TEXT="Cambia Clave",IMAGE='user') LET opcion = fgl_winquestion("Cambiar","Al cambiar la clave el sistema va a salir, debe volver a entrar con la clave nueva","NO","YES|NO","question",0) IF opcion = "YES" THEN CALL cambia_clave() EXIT PROGRAM END IF AFTER DISPLAY END DISPLAY DISPLAY ARRAY demos TO s_demos.* ON ACTION show IF arr_curr() > 0 THEN CALL run_demo(demos[arr_curr()].*) END IF ON ACTION cambia ATTRIBUTE(TEXT="Cambia Clave",IMAGE='user') LET opcion = fgl_winquestion("Cambiar","Al cambiar la clave el sistema va a salir, debe volver a entrar con la clave nueva","NO","YES|NO","question",0) IF opcion = "YES" THEN CALL cambia_clave() EXIT PROGRAM END IF AFTER DISPLAY END DISPLAY INPUT BY NAME readme END INPUT ON ACTION CANCEL EXIT DIALOG #IF int_flag THEN EXIT INPUT END if END DIALOG END MAIN FUNCTION fetch_topics() DEFINE topic RECORD NAME,parent,dirname VARCHAR(255) END RECORD DEFINE n INT LET n = 0 DECLARE topic CURSOR FOR SELECT * INTO topic.* FROM topics WHERE estado = 'online' ORDER BY orden,dirname FOREACH topic LET n = n + 1 LET topics[n].* = topic.* END FOREACH END FUNCTION FUNCTION fetch_demos(topic) DEFINE topic RECORD NAME,parent,dirname VARCHAR(255) END RECORD DEFINE demo RECORD NAME, PROGRAM,args,tipo,basedatos,descripcion,dirname,ruta VARCHAR(255) END RECORD DEFINE n INT CALL demos.clear() LET n = 0 DECLARE demo CURSOR FOR SELECT * INTO demo.* FROM demos WHERE dirname = topic.dirname AND estado = 'online' ORDER BY dirname FOREACH demo DISPLAY "demos ",demo.name," ", demo.dirname CASE demo.tipo WHEN "V" LET demo.tipo = "services" WHEN "B" LET demo.tipo = "file" END CASE LET n = n + 1 LET demos[n].* = demo.* END FOREACH END FUNCTION FUNCTION run_demo(demo) DEFINE demo RECORD NAME, PROGRAM,args,tipo,basedatos,descripcion,dirname,ruta VARCHAR(255) END RECORD DEFINE cmd STRING DEFINE isUnix BOOLEAN IF demo.program IS NULL THEN RETURN END IF CASE demo.tipo WHEN "services" -- Run the command: Check if there is a script to run the demo LET isUnix = fgl_getenv("WINDIR") IS NULL IF NOT isUnix THEN LET demo.dirname = unixToDosPath(demo.dirname) END IF LET cmd = os.Path.join(demo.dirname, demo.program), IIF(isUnix, ".sh", ".bat") IF os.Path.exists(cmd) THEN -- Script IF isUnix THEN LET cmd = "sh ", cmd END IF LET cmd = cmd, " ", demo.args ELSE -- 4gl program LET cmd = "cd ", demo.ruta CLIPPED, " && fglrun ", demo.program CLIPPED, " ", usuarios," ",clave," ",pperfil," ", pprinter1," "," ", pprinter2, " ",ckprinter END IF DISPLAY " comando ",cmd RUN cmd WITHOUT WAITING WHEN "file" CALL showfile(os.Path.join(demo.dirname, demo.program)) OTHERWISE -- Can't happen? END CASE END FUNCTION FUNCTION unixToDosPath(path) DEFINE path STRING DEFINE buf base.StringBuffer LET buf = base.StringBuffer.create() CALL buf.append(path) CALL buf.replace("/", "\\", 0) RETURN buf.toString() END FUNCTION FUNCTION showfile(fn) DEFINE fn STRING DEFINE txt STRING OPEN WINDOW w WITH FORM "demodisp" ATTRIBUTE(TEXT = "File: [" || fn || "]", STYLE = "dialog") LET txt = readfile(fn) INPUT BY NAME txt WITHOUT DEFAULTS; LET int_flag = FALSE CLOSE WINDOW w END FUNCTION FUNCTION readfile(fn) DEFINE fn STRING DEFINE t TEXT DEFINE s STRING LOCATE t IN FILE fn LET s = t RETURN s END FUNCTION