GTK4 + Harbour
Moderator: Rathinagiri
- danielmaximiliano
- Posts: 2795
- Joined: Fri Apr 09, 2010 4:53 pm
- DBs Used: DBF
- Location: Argentina
- Contact:
GTK4 + Harbour
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.
abrir el proyecto en el IDE de Roberto.
compilar
Sources : debajo del post en mi firma esta el enlace de invitacion a mi Grupo de telegram
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.
abrir el proyecto en el IDE de Roberto.
compilar
Sources : 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
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
- danielmaximiliano
- Posts: 2795
- Joined: Fri Apr 09, 2010 4:53 pm
- DBs Used: DBF
- Location: Argentina
- Contact:
Re: GTK4 + Harbour
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.
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.
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
- danielmaximiliano
- Posts: 2795
- Joined: Fri Apr 09, 2010 4:53 pm
- DBs Used: DBF
- Location: Argentina
- Contact:
Re: GTK4 + Harbour
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.
sources / fuente :
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.
sources / fuente :
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
- danielmaximiliano
- Posts: 2795
- Joined: Fri Apr 09, 2010 4:53 pm
- DBs Used: DBF
- Location: Argentina
- Contact:
Re: GTK4 + Harbour
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.
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)
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 ENDDUMPquien 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 (38.76 KiB) Viewed 183 times
*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
- danielmaximiliano
- Posts: 2795
- Joined: Fri Apr 09, 2010 4:53 pm
- DBs Used: DBF
- Location: Argentina
- Contact:
Re: GTK4 + Harbour
Hola a todos:
Me equivoqué, se puede incluir archivos dentro de la configuracion de proyectos
en el archivo .hbc del proyecto se debe usar asi
Bingo puedo usar C dentro de un proyecto..
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! 
Me equivoqué, se puede incluir archivos dentro de la configuracion de proyectos
en el archivo .hbc del proyecto se debe usar asi
Code: Select all
sources=.\Source\Bridge.cCode: 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*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
- danielmaximiliano
- Posts: 2795
- Joined: Fri Apr 09, 2010 4:53 pm
- DBs Used: DBF
- Location: Argentina
- Contact:
Re: GTK4 + Harbour
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
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
- danielmaximiliano
- Posts: 2795
- Joined: Fri Apr 09, 2010 4:53 pm
- DBs Used: DBF
- Location: Argentina
- Contact:
Re: GTK4 + Harbour
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
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
sin mas pueden modificar build.bat para probar el correcto funcionamiento desde el IDE de HMG
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
asi que los hice manualmente para poder corregir que GTK4 escriba en la consola
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
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
- danielmaximiliano
- Posts: 2795
- Joined: Fri Apr 09, 2010 4:53 pm
- DBs Used: DBF
- Location: Argentina
- Contact:
Re: GTK4 + Harbour
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
recuerden que tiene que modificar el build64.bat para ver la consola cmd que le indica las acciones de la ventana GTK
Sources / Fuentes :
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
recuerden que tiene que modificar el build64.bat para ver la consola cmd que le indica las acciones de la ventana GTK
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
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
.·`. Harbour/HMG : It's magic !
(¸.·``··*
Saludos / Regards
DaNiElMaXiMiLiAnO
Whatsapp. := +54901169026142
Telegram Name := DaNiElMaXiMiLiAnO
Telegram invitation https://t.me/HMGWorkspace
- serge_girard
- Posts: 3429
- Joined: Sun Nov 25, 2012 2:44 pm
- DBs Used: 1 MySQL - MariaDB
2 DBF - Location: Belgium
- Contact: