Página 1 de 2

HB_WebView (a cross-platform Webview library)

Enviado: 13 Mar 2025 20:52
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\

HB_WebView (a cross-platform Webview library)

Enviado: 13 Mar 2025 23:13
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.

HB_WebView (a cross-platform Webview library)

Enviado: 13 Mar 2025 23:17
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.

HB_WebView (a cross-platform Webview library)

Enviado: 14 Mar 2025 11:20
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

HB_WebView (a cross-platform Webview library)

Enviado: 19 Mar 2025 23:38
por Claudio Soto
Aca les dejo un archivo .pdf con la documentación de HB_WebView

HB_WebView (a cross-platform Webview library)

Enviado: 21 Mar 2025 21:09
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.

HB_WebView (a cross-platform Webview library)

Enviado: 21 Mar 2025 21:37
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

HB_WebView (a cross-platform Webview library)

Enviado: 21 Mar 2025 21:58
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

HB_WebView (a cross-platform Webview library)

Enviado: 21 Mar 2025 22:56
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

HB_WebView (a cross-platform Webview library)

Enviado: 21 Mar 2025 23:17
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

HB_WebView (a cross-platform Webview library)

Enviado: 21 Mar 2025 23:28
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

HB_WebView (a cross-platform Webview library)

Enviado: 23 Mar 2025 20:30
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

HB_WebView (a cross-platform Webview library)

Enviado: 25 Mar 2025 10:26
por JoséQuintas
hmgforum está bloqueado para o Brasil, só dá pra acessar por proxy.

HB_WebView (a cross-platform Webview library)

Enviado: 25 Mar 2025 13:11
por Claudio Soto
Prueba descargar de aquí:

https://drive.google.com/drive/folders/ ... JXqbcgej7O

HB_WebView (a cross-platform Webview library)

Enviado: 29 Mar 2025 15:26
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.