HB_WebView (a cross-platform Webview library)

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

HB_WebView (a cross-platform Webview library)

Mensagem por Claudio Soto »

He desarrollado HB_WebView, un wrapper para Harbour para la biblioteca Webview.

La biblioteca Webview es una biblioteca multiplataforma escrita en C/C++ que permite crear interfaces gráficas de usuario modernas multiplataforma. El objetivo del proyecto es crear una capa de abstracción de interfaz de usuario HTML5 común para las plataformas más utilizadas. Admite enlaces bidireccionales de JavaScript (para llamar a JavaScript desde C/C++ y para llamar a C/C++ desde JavaScript).

Ahora, con HB_Webview, se puede enlazar fácilmente funciones HB/HMG/HwGUI, etc con Javascript; es decir, se puede llamar a cualquier función Harbour desde una página HTML.

Las tres primeras demostraciones están escritas en Harbour puro (demos multiplataforma), mientras que demo_hmg.prg es una integración de los ejemplos anteriores en el entorno especifico de HMG (demostración para Windows).

¡Espero que les sea útil!

Saludos cordiales,
Claudio

PD: En los archivos por lotes adjuntos, la ruta del compilador se estableció como C:\hmg.3.6\
Anexos
hb_webview.rar
(3.7 MiB) Baixado 480 vezes
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

HB_WebView (a cross-platform Webview library)

Mensagem por Itamar M. Lins Jr. »

Olá!
Como faço para testar no Linux ? Estou usando Ubuntu.
Só achei arquivos .bat nenhum arquivo .hbp

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

HB_WebView (a cross-platform Webview library)

Mensagem por Jairo Maia »

Olá Dr Claudio,

A ultima versão que tenho da HMG instalada, é a versão 3.4.3. O endereço https://www.hmgforum.com/app.php/download não é acessível no Brasil, salvo por VPN.

Como acho no SourceForge a versão mais recente? Só encontro mesmo a 3.4.3.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

HB_WebView (a cross-platform Webview library)

Mensagem por Claudio Soto »

Hola a todos!

Itamar:
Para crear la lib en Windows yo llamo en los bat directo el hbmk2 con los parámetros del hbp:

Código: Selecionar todos

HBMK2 -hblib -i/. -ldflag=" -lshlwapi -pthread  -static-libgcc  -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic" -mt -gtgui -gtwin -cpp  -o"hb_webview"  "hb_webview-lib/hb_webview.prg"
Luego copiar la lib creada a la carpeta demo

Para compilar los demos:

Código: Selecionar todos

HBMK2 -i/. -ldflag=" -lshlwapi -pthread  -static-libgcc  -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic" -mt -gtgui -gtwin -cpp  -o"demo1" demo1.prg   -w2 -es2 -lshlwapi demo.hbc
En Linux no se que lib tendrías que agregar, lo que seguro tendrías que sacar de los parámetros es -gtwin y de -ldflag sacar todas las lib que son específicas de Windows (ej -lshlwapi)

Jairo:
El link de donde descargar hmg.3.6 es:
https://www.hmgforum.com/viewtopic.php?t=7433
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

HB_WebView (a cross-platform Webview library)

Mensagem por Claudio Soto »

Aca les dejo un archivo .pdf con la documentación de HB_WebView
Anexos
HB_WebView Documentation.rar
(129.83 KiB) Baixado 457 vezes
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

HB_WebView (a cross-platform Webview library)

Mensagem por Claudio Soto »

Hola a todos,

He añadido un nuevo demo4.prg y la documentación en PDF.

He añadido nuevos comentarios dentro de los demo para una mejor comprensión del código.

El demo4.prg añadido es muy interesante; permite inyectar directamente código PRG escrito completamente en Harbour desde JavaScript.
Anexos
hb_webview.rar
(4.76 MiB) Baixado 442 vezes
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HB_WebView (a cross-platform Webview library)

Mensagem por JoséQuintas »

Fiquei curioso sobre o exemplo HMG, mas sem sucesso de compilar com mingw
d:\temp\webview\hb_webview\demos>hbmk2 demo_hmg hmg3.hbc
hbmk2: Processing environment options: -comp=mingw
hbmk2: Processing configuration: d:\harbour\bin\hbmk.hbc
Harbour 3.2.0dev (r2501210845)
Copyright (c) 1999-2024, https://harbour.github.io/
Compiling 'demo_hmg.prg'...
Lines 17671, Functions/Procedures 8
Generating C source output to 'C:\Users\joseq\AppData\Local\Temp\hbmk_azql18.dir\demo_hmg.c'... Done.
In file included from demo_hmg.prg:428:
d:/temp/webview/hb_webview/WebView2/WebView2.h:19: warning: ignoring '#pragma warning ' [-Wunknown-pragmas]
19 | #pragma warning( disable: 4049 ) /* more than 64k source lines */
In file included from demo_hmg.prg:422:
demo_hmg.prg: In function 'HB_FUN_ACTION_WEBVIEW2':
d:/github/hmg3/include/HMG_UNICODE.h:108:37: error: passing argument 1 of 'hb_retc' from incompatible pointer type [-Wincompatible-pointer-types]
108 | #define HMG_WCHAR_TO_CHAR(c) (c)
| ^~~
| |
| WCHAR * {aka short unsigned int *}
demo_hmg.prg:517:19: note: in expansion of macro 'HMG_WCHAR_TO_CHAR'
In file included from demo_hmg.prg:424:
d:/harbour/include/hbapi.h:687:47: note: expected 'const char *' but argument is of type 'WCHAR *' {aka 'short unsigned int *'}
687 | extern HB_EXPORT void hb_retc( const char * szText ); /* returns a string */
| ~~~~~~~~~~~~~^~~~~~
demo_hmg.prg: In function 'HB_FUN_GETVERSION_WEBVIEW2':
d:/github/hmg3/include/HMG_UNICODE.h:108:37: error: passing argument 1 of 'hb_retc' from incompatible pointer type [-Wincompatible-pointer-types]
108 | #define HMG_WCHAR_TO_CHAR(c) (c)
| ^~~
| |
| WCHAR * {aka short unsigned int *}
demo_hmg.prg:563:13: note: in expansion of macro 'HMG_WCHAR_TO_CHAR'
d:/harbour/include/hbapi.h:687:47: note: expected 'const char *' but argument is of type 'WCHAR *' {aka 'short unsigned int *'}
687 | extern HB_EXPORT void hb_retc( const char * szText ); /* returns a string */
| ~~~~~~~~~~~~~^~~~~~
hbmk2: Error: Running C/C++ compiler. 1
gcc.exe -c -O3 -march=i586 -mtune=pentiumpro -fomit-frame-pointer -W -Wall -pipe -Id:/harbour/include -Id:/fontes/util/build -Id:/temp/webview/hb_webview/demos -Id:/github/hmg3/include C:/Users/joseq/AppData/Local/Temp/hbmk_azql18.dir/demo_hmg.c C:/Users/joseq/AppData/Local/Temp/hbmk_qav1uz.c
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HB_WebView (a cross-platform Webview library)

Mensagem por JoséQuintas »

Depois testar com mais calma.
Tentei gerar a LIB, mas parece estar usando paths do github.

Estranhei ainda estar usando versão do mingw que necessita xxxthread.dll
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

HB_WebView (a cross-platform Webview library)

Mensagem por Claudio Soto »

Hola Jose,
los bat estan ajustados para compilar con la version 3.6 de HMG, que esta compilada en 64 bits y en Unicode.
Ademas los demos necesitan ser compilados en c++ (-cpp) porque la lib webview esta escrita en c++

El build64.bat de HMG 3.6 llama al hbmk2 asi:

Código: Selecionar todos

SET PATH=%HMGPATH%harbour64\bin;%HMGPATH%mingw64\bin;%PATH%
SET gtdrivers=-gtgui -gtwin
SET debug=

echo #define HMGRPATH %HmgPath%\RESOURCES > _hmg_resconfig.h
COPY /b %HMGPATH%\resources\hmg64.rc+"%~n1.rc"+%HMGPATH%\resources\filler _temp.rc >NUL
windres -i _temp.rc -o _temp.o >windres.log 2>&1

HBMK2 -ldflag="-pthread  -static-libgcc  -static-libstdc++  -static -lpthread" -mt -o"%~n1" %HMGPATH%\hmg64.hbc %gtdrivers% %debug% -q %1 %2 %3 %4 %5 %6 %7 %8 >hbmk.log 2>&1
Para compilar el demo de hmg llamo asi:

Código: Selecionar todos

call C:\hmg.3.6\build64.bat   demo_hmg.prg   -w2 -es2 -cpp  -lshlwapi demo.hbc
Para generar la lib llamo directo al hbmk2 asi:

Código: Selecionar todos

SET myPATH=C:\hmg.3.6\

SET PATH=%myPATH%harbour64\bin;%myPATH%mingw64\bin;%libPATH%;%PATH%

HBMK2  -hblib  -i/.  -cpp  -o"hb_webview"  "hb_webview-lib/hb_webview.prg"

copy /y libhb_webview.a demos\libhb_webview.a
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

HB_WebView (a cross-platform Webview library)

Mensagem por Claudio Soto »

Jose,
con este bat compilas el demo hmg directo con hbmk2

Código: Selecionar todos

SET myPATH=C:\hmg.3.6\

SET PATH=%myPATH%harbour64\bin;%myPATH%mingw64\bin;%myPATH%include;%PATH%

HBMK2 -ldflag="-pthread  -static-libgcc  -static-libstdc++  -static -lpthread" -mt  %myPATH%hmg64.hbc -gtgui -gtwin  -q -o"demo_hmg" demo_hmg.prg -w2 -es2 -cpp  -lshlwapi demo.hbc

demo_hmg

pause
El error de compilacion anterior que te dio es porque falta incluir el path a los include de HMG.

Código: Selecionar todos

%myPATH%include;


que equivale a:

Código: Selecionar todos

C:\hmg.3.6\include
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HB_WebView (a cross-platform Webview library)

Mensagem por JoséQuintas »

Tenho HMG 3.5, que modifiquei pra facilitar.
hbmk2 arquivo.prg hmg3.hbc
Vou acrescentar o -cpp
E olhar o demo.hbc, que entraria automático se fosse hbmk.hbc
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

HB_WebView (a cross-platform Webview library)

Mensagem por Claudio Soto »

Hola a todos:
He añadido una nueva demo (demo5.prg), una consulta SQLite cuyos resultados se muestran en una tabla HTML.

Descargar código fuente en: https://www.hmgforum.com/viewtopic.php?t=7659
Anexos
sqlitle.png
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

HB_WebView (a cross-platform Webview library)

Mensagem por JoséQuintas »

hmgforum está bloqueado para o Brasil, só dá pra acessar por proxy.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

HB_WebView (a cross-platform Webview library)

Mensagem por Claudio Soto »

Prueba descargar de aquí:

https://drive.google.com/drive/folders/ ... JXqbcgej7O
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

HB_WebView (a cross-platform Webview library)

Mensagem por Claudio Soto »

Hola a todos,
He añadido una nueva demo.
demo6.prg: Permite navegar por el árbol de directorios y abrir archivos de la lista de extensiones permitidas (las nuevas instancias de HB_WebView se crean completamente desde código Javascript).

Descargar de:

https://drive.google.com/open?id=1gCRK_ ... p=drive_fs

Saludos cordiales,
Claudio


PS:
Demos written in pure Harbor (cross-platform demos):

demo1.prg - Web browsing in Harbour
demo2.prg - Binding Harbour functions (calling HB functions from Javascript)
demo3.prg - Inspecting DBF files with Javascript
demo4.prg - Injecting PRG code written entirely in Harbour from JavaScript
demo5.prg - Querying SQLite from Javascript
demo6.prg: You can navigate the directory tree and open files that are in the list of allowed extensions (new instances of HB_WebView are created entirely from Javascript code).

Demos in HMG:
demo hmg.prg - is an integration of the previous examples integrated into the HMG environment (Windows platform demo)

See documentation in HB_WebView.pdf file.
Anexos
demo6.png
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Responder