T-Gtk. Implementacion Multiplataforma bajo GTK+
Dentro de la reunion que tuvo lugar en Barcelona, explique lo que era T-Gtk
y para que la gente entienda el concepto dejo en estas lineas, espero que os
saque de dudas, lo que es y lo que no es T-Gtk.
Todo aquel que quiera probarlas, ya sea bajo Win32 o GNU/Linux,
enviarme un correo con el asunto: T-Gtk y sobre que plataforma.
¿ Que es T-Gtk ?
T-Gtk es un GUI de GTK+ para usarlo desde [x]Harbour.
Sobre que sistema operativo funciona
T-Gtk correra donde haya un Harbour , gcc y gtk+ disponible, es decir,
actualmente compagino en probar tanto en GNU/Linux y Windows, pero
tambien podra correr sobre MAC, FreeBsd, etc..
Estamos hablando a nivel de COMPATIBILIDAD de codigo a nivel de GUI,
no de codigo a nivel de sistema, como por ejemplo, la gestion de INIs,
el acceso a nivel de hardware, etc... donde los sistemas son completamente
distintos.
Implementacion y uso.
El camino escogido a sido, desde mi punto de vista claro esto, ser lo mas
parecido a GTK+ a nivel de C, ¿ Que quiero decir con esto ?
Quiero decir, que para programar , se programara practicamente como se hacer
en C, a nivel de funciones, despues ya se encapsulara todo eso , y si,
haremos el mismo preprocesador DEFINE WINDOW....
¿ Tengo que saber C ?
No. Que las funciones del API de GTK+ , sera el mismo nombre de funcion a
nivel de harbour, no signifique que se vaya a programar en C, si no
que se usara EL MISMO NOMBRE de la funcion, por ejemplo:
Si para crear un boton en C es :
GtkWidget * button = gtk_button_new_with_label( "Hola" );
transformando a T-Gtk+Harbour sera:
button = gtk_button_new_with_label( "Hola" )
Ustedes se preguntaran el porque asi, y no haber creado una funcion
que se llame, createbutton( cLabel ).
EL motivo principal, es que si buscan ayuda sobre una funcion en GTK+,
la misma ayuda de C le servira, porque se comportara EXACTAMENTE IGUAL.
Asi , la trasformacion de codigo C a PRG es trivial, en cosas bastantes
sencillas.
Ahora bien, para ahorrar velocidad y facilitar un poco la historia, hay
dos excepciones de momento:
+ Conversion a traves de Macros, esto lo hace ya automaticamente desde C,
no hace falta hacerlo, por ejemplo, esta funcion en C :
GtkWidget * button= gtk_button_new() ;
GtkWidget * checkbox = gtk_check_button_new_with_label( "Check" );
gtk_container_add( GTK_CONTAINER( button ), checkbox );
en harbour quedaria:
button= gtk_button_new()
checkbox = gtk_check_button_new_with_label( "Check" )
gtk_container_add( button , checkbox )
fijese , que la macro GTK_CONTAINER a desaparecido.
+ Por comodidad de transportar el codigo de C, se ha echo el soporte
de dichas funciones, que lo unico que hace es retorna el valor pasado.
+ La function Gtk_Connect_signal permite saltar a una funcion estatica en
Harbour, porque Harbour mete en la tabla dinamica de simbolos las
funciones estaticas, y Xharbour NO!
En xHarbour solamente se puede saltar, por el momento, a funciones
publicas.
Ahora bien, como pueden ver en los ejemplos, el usar funciones, impone
el escribir mucho codigo, para ello, tambien se esta portando a la
programacion de POO, de esta manera, sera mucho mas rapido y ademas
realizar el preprocesado es trivial y aprovecharemos mejor el tiempo.
¿ Como funciona GTK+ y que es eso de los widgets ?
Los widgets son sinonimos de controles en sistema Win32 API.
GTK+ es una libreria que crea y pone a disposicion una seria de controles,
para ello se basa en otro libreria de nivel inferior, GDK, que es la
encargada de dibujarlos, a parte de otras mas.
A nivel mas bajo , se conecta con XLib o Win32, nada mas.
En GTK+ existe el concepto de 'contenedor' de widgets, y solamente puede
contener un solo widget, es decir , un hijo.
Usted se pregunta , ¿ entonces en una ventana como coloco mis botones ?
Como dice el dicho popular, HECHA LA LEY HECHA LA TRAMPA,
pues bien sencillo, un contenedor a su vez puede contener a su vez a
otros contenedores.
Para entendernos, seria equivalente a usar la clase TPanel de Fivewin,
y esta a su vez fuera mas paneles, que contienen los botones.
Hay varios tipo de contenedores, hBox, vBox, paned, table, etc...
A su vez , un boton es un contenedor que contiene una etiqueta, por ejemplo.
A principio, este concepto es muy extraño si lo comparamos con el api win32,
pero es mucho mas potente a efectos practicos, son AUTODIMENSIONABLES, no
tenemos que gestionar su ancho / alto, el solo lo hara y se adaptara segun
le hayamos especificado su comportamiento.
Que de madura esta.
Actualmente esta portado estos widgets :
+ Window
+ Get/Entry ( Partialmente )
+ Notebooks
+ Button
+ Say
+ Radiobutton
+ Checkbox
+ Table
+ Box
+ Tooglebutton
+ Frame
+ Calendar
+ Paned
+ Image
+ Expander
+ Menus ( Parcialemente, falta el checkmenu, imagemenu )
+ Fixed
+ StatusBar
+ Separador
+ ProgressBar
+ Soporte de lenguaje de Marcas.
+ hSeparator
+ vSeparator
+ VBox
+ HBox
+ ToolTips
+ ButtonColor
+ Fonts ( Parcialmente, permite poner fuente a los widgets )
+ Combobox
Prototipo de Clases y control de eventos :
+ TWidget
+ TWindow
+ TButton
Funciones para hace la vida mas simples.
+ MyStyle(). Pon un stylo determinado a un widget concreto.
Explicacion de ejemplos
1.ProgressBar
Este ejemplo sencillamente enseña las distintas maneras de las cual podemos
enseñar una barra de progreso.
2.StatusBar.
Enseña como funciona la barra de status y los comboboxs.
3.Radiobutton
Ejemplo de seleccion por defecto de de unos radiobuttons, el 2.
4.Radiobutton2.
Metiendo un widget entry en el radiobutton.
5.Fixed.
Implementacion de widgets en posiciones fijas, a la win32
6.Notebook.
Sinonimo de Folders, funcionamiento de posiciones, etc..
7.Demotable.
Funcionamiento de tablas de empaquetamiento, imagenes y botones por
defecto, separados por un paned, simil de splitter y Fonts.
8.Demo.
Distintos widgets, calendar, expand, lenguaje de marcas, menus, el mas
completo.
Hola rafa podrias envarme la T-gtk por favor.
actualmente la estoy provando bajo dev-c
saludos.
fernando sandoval ruiz
Buen dia...
En este momento estamos en busqueda de un buen lenguaje de programacion multiplataforma para migrar las applicaciones de la empresa....Una de las opciones php - gtk quisiera conocer su opinion con respecto a la "robustes" que esto nos puede ofrecer en aplicaciones de mision critica..
muchas gracias
Escrito por elkin a las 24 de Noviembre 2004 a las 02:47 PMSoy programador y estoy interesado en la programacion multiplataforma, en estos momentos programo el vb6 pero me interesaria conocer T-gtk.
Que opinion me daria al respecto?
Una aplicacion que haga, corre sobre cualquier plataforma sin necesidad de instalar algun frame?
Gracias
Escrito por Cristian a las 1 de Febrero 2007 a las 06:30 PMHola muy interesante el proyecto me lo puedes mandara mi correo?
Gracias