GTK4 + Harbour

HMG en Español

Moderator: Rathinagiri

User avatar
danielmaximiliano
Posts: 2795
Joined: Fri Apr 09, 2010 4:53 pm
DBs Used: DBF
Location: Argentina
Contact:

GTK4 + Harbour

Post by danielmaximiliano »

Hola a todos:
Charlando con un integrante del foro sobre Linux + Harbour (yo trabaje con Fedora, Debian y Ubuntu y escritorio Gnome ) la posibilida de usar
GTK, asi que investigando en foros de GTK vi que es posible descargar GTK para Windows.
asi que me puse a desarrollar ejemplos.
la mayoria de ejemplos lo hice trabajando en mi entorno de desarrollo (Workspace) que me permite trabajar con archivos reales .c
para no dejar afuera al IDE de Roberto uno de los ejemplos (GTK4-HMG.hbp) es para HMG

descargar y descomprimir en c:\GTK4 : https://github.com/wingtk/gvsbuild/rele ... .0_x64.zip

agregar rutas al path de Windows.
Captura de pantalla 2026-09-23 171759.png
Captura de pantalla 2026-09-23 171759.png (25.91 KiB) Viewed 197 times

abrir el proyecto en el IDE de Roberto.
compilar
Captura de pantalla 2026-09-23 172640.png
Captura de pantalla 2026-09-23 172640.png (14.7 KiB) Viewed 197 times

Sources :
SampleGTK4.rar
(754.06 KiB) Downloaded 11 times
debajo del post en mi firma esta el enlace de invitacion a mi Grupo de telegram
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
User avatar
danielmaximiliano
Posts: 2795
Joined: Fri Apr 09, 2010 4:53 pm
DBs Used: DBF
Location: Argentina
Contact:

Re: GTK4 + Harbour

Post by danielmaximiliano »

Hola a todos :

Hace años en el foro se trabajo sobre QT pero quedo en la nada, yo intente aprender pero el resultado fue malo, pero veo que GTK es mas
práctico y se puede encapsular en clases y permite hacer una app que funcione en Windows y Linux en Harbour Puro.
con ayuda de un amigo que trabaja con linux me guia de nuevo a utilizar Debian + gtk4 para portarlo a Harbour.
quien quiera subirse al barco yo estos dias tengo tiempo libre para seguir aprendiendo GTK.
Captura de pantalla 2026-09-23 174155.png
Captura de pantalla 2026-09-23 174155.png (146.12 KiB) Viewed 199 times
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
User avatar
danielmaximiliano
Posts: 2795
Joined: Fri Apr 09, 2010 4:53 pm
DBs Used: DBF
Location: Argentina
Contact:

Re: GTK4 + Harbour

Post by danielmaximiliano »

Hola a todos:
En Worskspace mi entorno de desarrollo los ejemplos compilados funcionan correctamente, mientras
que en IDE de roberto que tiene los mismo modulos y bridge (.c) no funciona bien.
asi que estoy viendo que esta mal.
pueden agregarse al grupo de Telegram para probar.
Captura de pantalla 2026-09-23 220420.png
Captura de pantalla 2026-09-23 220420.png (38.49 KiB) Viewed 189 times
sources / fuente :
SampleGTK4.rar
(945.83 KiB) Downloaded 12 times
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
User avatar
danielmaximiliano
Posts: 2795
Joined: Fri Apr 09, 2010 4:53 pm
DBs Used: DBF
Location: Argentina
Contact:

Re: GTK4 + Harbour

Post by danielmaximiliano »

Hola a todos:

El IDE de HMG no trabaja con archivos .c , si encapsulo el codigo C dentro de un .prg este no funciona correctamente la comunicacion bidireccional con la consola CMD.

Code: Select all


#pragma BEGINDUMP
#include <hbapi.h>
#include <hbapiitm.h>
#include <hbvm.h>
#include <locale.h>

#if defined(__WIN32__) || defined(_WIN32)
   #include <windows.h>
   #include <io.h>
   #include <fcntl.h>
#endif

#include <gtk/gtk.h>

#pragma ENDDUMP
no quiero que el ejemplo se compile desde un .bat ya que el ejemplo debe funcionar con el IDE de HMG tal como lo hace Workspace.
quien puede darme un mano ya hice todas las pruebas posible.
dejo el ejemplo completo (GTK4-HMG.hbp)
Attachments
SampleGTK4.rar
(958.11 KiB) Downloaded 10 times
Captura de pantalla 2026-09-24 012817.png
Captura de pantalla 2026-09-24 012817.png (38.76 KiB) Viewed 186 times
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
User avatar
danielmaximiliano
Posts: 2795
Joined: Fri Apr 09, 2010 4:53 pm
DBs Used: DBF
Location: Argentina
Contact:

Re: GTK4 + Harbour

Post by danielmaximiliano »

Hola a todos:
Me equivoqué, se puede incluir archivos dentro de la configuracion de proyectos :D

en el archivo .hbc del proyecto se debe usar asi

Code: Select all

sources=.\Source\Bridge.c
Bingo puedo usar C dentro de un proyecto..

Code: Select all

# Workspace project build options.
# Uncomment and complete only the options required by this project.
# Keep one option per line.

inc=yes
head=native
gt=gtwin
gui=no

# syslibs=
libpaths=C:\GTK4\lib

# Librerías necesarias de GTK4
libs=gtk-4 
libs=gobject-2.0
libs=glib-2.0
libs=gio-2.0
libs=gdk_pixbuf-2.0
libs=cairo

# Rutas de inclusión de cabeceras y bibliotecas
incpaths=C:\GTK4\include\gtk-4.0
incpaths=C:\GTK4\include\glib-2.0
incpaths=C:\GTK4\lib\glib-2.0\include
incpaths=C:\GTK4\include\pango-1.0
incpaths=C:\GTK4\include\harfbuzz
incpaths=C:\GTK4\include\cairo
incpaths=C:\GTK4\include\gdk-pixbuf-2.0
incpaths=C:\GTK4\include\graphene-1.0
incpaths=C:\GTK4\lib\graphene-1.0\include
incpaths=C:\GTK4\include\gtk-4.0\gtk

sources=.\Source\Bridge.c

# hbcs=
# frameworks=
# prgflags=
# cflags=
# resflags=
# ldflags=
#pflags= 
# psources=
# requests=
# instfiles=
# instpaths=
# autohbcs=
# plugins=
# mt=yes
# winuni=yes
# run=yes
# debug=yes
# opt=yes
# map=yes
# strip=yes
# cpp=yes
# warn=max
# compr=max
ahora me queda resolver porque el ejemplo GTK en Workspace el textbox de GTK puede escribir en la consola en tiempo real y en HMG que usa el mismo archivo .c NO! :roll:
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
User avatar
danielmaximiliano
Posts: 2795
Joined: Fri Apr 09, 2010 4:53 pm
DBs Used: DBF
Location: Argentina
Contact:

Re: GTK4 + Harbour

Post by danielmaximiliano »

Listado completo de las directivas admitidas en archivos de configuración .hbc para hbmk2 (Harbour Build Tool):

Code: Select all

1. Archivos de Entrada y Fuentes

    sources=: Lista de archivos fuente a incluir (archivos .prg, .c, .cpp, .rc, etc.).

    headers=: Lista de cabeceras .ch que se incluirán de forma estándar.

    libs=: Librerías adicionales a enlazar (equivalente a la opción -l).

    syslibs=: Librerías de sistema que se enlazan antes de las librerías comunes.

    frameworks=: Frameworks de macOS a vincular (solo para plataforma Darwin/macOS).

    hbcs=: Incluye o anida otros archivos .hbc por nombre.

    requests=: Lista de funciones o símbolos para forzar su inclusión en el ejecutable (fuerza el enlazado/linkeo).

2. Rutas de Búsqueda

    incpaths=: Directorios donde buscar archivos de cabecera (.h, .ch).

    libpaths=: Directorios adicionales donde buscar archivos de librería (.lib, .a).

    instpaths=: Rutas de destino para copiar o instalar los archivos generados.

    instfiles=: Archivos adicionales que se deben copiar a las rutas de instpaths=.

3. Modos de Compilación y Opciones Booleanas (yes / no)

    gui=: Define el tipo de aplicación (yes = GUI / subsistema Windows, no = consola/STD).

    mt=: Habilita el soporte multihilo de Harbour (yes = -mt, no = monohilo).

    debug=: Agrega información de depuración (yes / no).

    inc=: Activa la compilación incremental (yes / no).

    shared=: Genera/vincula librerías dinámicas (yes) o estáticas (no).

    fullstatic=: Enlaza todas las librerías de forma totalmente estática (yes / no).

    cpp=: Fuerza o selecciona el modo C++ (yes, no o def).

    winuni=: Selecciona el modo Unicode/WIDE en Windows (yes / no).

    strip=: Elimina los símbolos de depuración del binario final (yes / no).

    run=: Ejecuta el binario automáticamente al finalizar la compilación (yes / no).

    map=: Genera un archivo .map del enlazador (yes / no).

    optim=: Activa las optimizaciones del compilador C (yes / no).

4. Banderas Específicas para Herramientas (Flags)

    prgflags=: Banderas que se pasan directamente al compilador de Harbour (harbour.exe).

    cflags=: Banderas que se pasan al compilador C (gcc, msvc, etc.).

    ldflags= / ldflags+=: Banderas que se pasan al enlazador (linker).

    resflags=: Banderas para el compilador de recursos (windres / rc).

    warn=: Nivel de advertencias del compilador C (max, yes, low, no, def).

    compr=: Compresión del ejecutable con UPX (yes, no, min, max).

5. Configuración de Terminal / GT (Graphic Terminal)

    gt=: Selecciona el controlador GT a enlazar (ej. gtwin, gtwvt, gtgui).

    gtdef=: Define cuál controlador GT de la lista será el predeterminado en tiempo de ejecución.

    nodefgt=: Evita vincular los controladores GT predeterminados (yes / no).

6. Metadatos del Paquete y Control

    name=: Nombre del paquete o biblioteca.

    description=: Descripción breve del paquete.

    version=: Versión del paquete (ej. 1.0.0).

    licences=: Lista de licencias aplicables al proyecto.

    echo=: Muestra un texto en la consola de compilación.

    skip=: Salta el procesamiento del resto del archivo .hbc si se cumple una condición.

    stop=: Detiene el proceso de compilación enviando un mensaje opcional.

Code: Select all

1. Input and source files

    sources=: List of source files to include (.prg, .c, .cpp, .rc files, etc.).

    headers=: List of .ch headers to be included by default.

    libs=: Additional libraries to load (equivalent to the -l option).

    syslibs=: System libraries linked before common libraries.

    frameworks=: macOS frameworks to link (Darwin/macOS platform only).

    hbcs=: Include or add other .hbc files by name.

    requests=: List of functions or symbols to force their inclusion in the executable.

2. Search paths

    incpaths=: Directories to search for header files (.h, .ch).

    libpaths=: Additional directories to search for library files (.lib, .a).

    instpaths=: Destination paths for copying or installing generated files.

    instfiles=: Additional files to be copied to the paths specified in instpaths=.

3. Compilation modes and boolean options (yes / no)

    gui=: Defines the application type (yes = GUI / Windows subsystem, no = console/STD).

    mt=: Enables Harbour multithreading support (yes = -mt, no = single-threaded).

    debug=: Adds debugging information (yes / no).

    inc=: Enables incremental compilation (yes / no).

    shared=: Generates/links dynamic libraries (yes) or static ones (no).

    fullstatic=: Links all libraries fully statically (yes / no).

    cpp=: Selects C++ mode (yes; no is the default).

    winuni=: Selects Unicode/WIDE mode on Windows (yes / no).

    strip=: Removes debug symbols from the final binary (yes / no).

    run=: Automatically executes the binary after compilation finishes (yes / no).

    map=: Generates a .map file (yes / no).

    optim=: Enables C compiler optimizations (yes / no).
    
    4. Specific Tool Flags

    prgflags=: Flags passed directly to the Harbour compiler (harbour.exe).

    cflags=: Flags passed to the C compiler (gcc, msvc, etc.).

    ldflags= / ldflags+=: Flags passed to the linker.

    resflags=: Flags for the resource compiler (windres / rc).

    warn=: C compiler warning level (max, yes, low, no, def).

    compr=: Executable compression using UPX (yes, no, min, max).

5. Terminal / GT (Graphic Terminal) Configuration

    gt=: Selects the GT driver to link (e.g., gtwin, gtwvt, gtgui).

    gtdef=: Defines which GT driver from the list will be the default at runtime.

    nodefgt=: Prevents linking default GT drivers (yes / no).

6. Package Metadata and Control

    name=: Name of the package or library.

    description=: Brief description of the package.

    version=: Package version (e.g., 1.0.0).

    licences=: List of licenses applicable to the project.

    echo=: Displays text in the build console.

    skip=: Skips processing the remainder of the .hbc file if a condition is met.

    stop=: Stops the build process, optionally displaying a message.
    
    
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
User avatar
danielmaximiliano
Posts: 2795
Joined: Fri Apr 09, 2010 4:53 pm
DBs Used: DBF
Location: Argentina
Contact:

Re: GTK4 + Harbour

Post by danielmaximiliano »

Hola a todos:
despues de luchar y leer https://github.com/harbour/core/blob/ma ... bmk2.en.md

estar horas tratando de corregir el ejemplo de GTK4 para HMG.3.6 y modificando el archivos de configuracion .hbc sin ningun resultado
me puse a ver porque si desde el cmd usando hmbk2 el ejemplo si compila correctamente y el IDE de HMG no..

IDE de HMG usa build.bat, este aplica reglas por defecto y no respeta el archivo de configuracion .hbc donde estan las directivas

Code: Select all

inc=yes
head=native
gt=gtwin
gui=no
Build.bat desde consola acepta el parametro /c pero desde el ide no veo forma de decirle que la app para que rote los drivers GT :?
asi que los hice manualmente para poder corregir que GTK4 escriba en la consola :D

sin mas pueden modificar build.bat para probar el correcto funcionamiento desde el IDE de HMG

Code: Select all

rem SET gtdrivers=-gtgui -gtwin
SET gtdrivers=-gtwin -gtgui
SET runafterbuild=.t.
SET debug=
Attachments
SampleGTK4.rar
(859.68 KiB) Downloaded 11 times
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
User avatar
danielmaximiliano
Posts: 2795
Joined: Fri Apr 09, 2010 4:53 pm
DBs Used: DBF
Location: Argentina
Contact:

Re: GTK4 + Harbour

Post by danielmaximiliano »

Hola a todos:

hace un tiempo publique un ejemplo de MenuFlyout , menu lateral para Harbour / HMG
ahora les presento el MenuFlyOut para GTK4 , para compilar usar el IDE ( FlyoutMain_HMG.hbp)

Rozar con el mouse la parte lateral de la ventana y este aparece :mrgreen:

recuerden que tiene que modificar el build64.bat para ver la consola cmd que le indica las acciones de la ventana GTK
Captura de pantalla 2026-09-24 202412.png
Captura de pantalla 2026-09-24 202412.png (38.06 KiB) Viewed 158 times
Sources / Fuentes :
Attachments
SampleGTK4.rar
(870.13 KiB) Downloaded 16 times
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*

Saludos / Regards
DaNiElMaXiMiLiAnO

Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
User avatar
Steed
Posts: 462
Joined: Sat Dec 12, 2009 3:40 pm

Re: GTK4 + Harbour

Post by Steed »

Gracias
User avatar
serge_girard
Posts: 3429
Joined: Sun Nov 25, 2012 2:44 pm
DBs Used: 1 MySQL - MariaDB
2 DBF
Location: Belgium
Contact:

Re: GTK4 + Harbour

Post by serge_girard »

Thanks !
There's nothing you can do that can't be done...
Post Reply