GTK

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 19 de mayo de 2015; las comprobaciones requieren 67 ediciones .
GTK
Tipo de marco de aplicación [d] y biblioteca de widgets [d]
Autor El equipo GTK+,
autores originales:
Peter Mattis,
Spencer Kimball,
Josh MacDonald [1]
Desarrollador Fundación GNOME y el Proyecto GNU [2]
Escrito en C [4]
Sistema operativo GNU/Linux , macOS , sistema operativo similar a Unix , Microsoft Windows y Linux
Idiomas de la interfaz varios idiomas [d]
Primera edición 14 de abril de 1998
plataforma de hardware multiplataforma
ultima versión
Estado activo
Licencia LGPL-2.1 [d] [5][6]yGNU LGPL
Sitio web gtk.org_
 Archivos multimedia en Wikimedia Commons

GTK (anteriormente GTK+ [7] ; abreviatura de GIMP ToolKit ) es una biblioteca de interfaz multiplataforma (marco) con una API fácil de usar , junto con Qt , es una de las dos bibliotecas más populares para Wayland y X Window . Sistema hoy .

Originalmente parte del editor de gráficos GIMP , se ha convertido en un proyecto separado y ganó una notable popularidad. GTK es software libre distribuido bajo los términos de GNU LGPL , que le permite crear software libre y propietario utilizando la biblioteca. GTK es la biblioteca oficial de creación de GUI para el Proyecto GNU . [ocho]

Historia

Número de versión Fecha de lanzamiento de la versión Cambios significativos última versión menor
1.0 14 de abril de 1998 Primera versión estable 1.0.6
1.2 27 de febrero de 1999 Nuevos widgets (GtkFontSelector, GtkPacker, GtkItemFactory, GtkCTree,
GtkInvisible, GtkCalendar, GtkLayout, GtkPlug, GtkSocket)
1.2.10
2.0 11 de marzo de 2002 GObject, Universal Unicode UTF-8 2.0.9
2.2 22 de diciembre de 2002 Soporte multicabezal 2.2.4
2.4 16 de marzo de 2004 Nuevos widgets (GtkFileChooser, GtkComboBox, GtkComboBoxEntry,
GtkExpander, GtkFontButton, GtkColorButton)
2.4.14
2.6 16 de diciembre de 2004 Nuevos widgets (GtkIconView, GtkAboutDialog, GtkCellView);
esta es la última versión compatible con Windows 98 / ME
2.6.10
2.8 13 de agosto de 2005 Integración de El Cairo 2.8.20
2.10 3 de julio de 2006 Nuevos widgets (GtkStatusIcon, GtkAssistant, GtkLinkButton,
GtkRecentChooser) y soporte de impresión (GtkPrintOperation)
2.10.14
2.12 14 de septiembre de 2007 ConstructorGtk 2.12.12
2.14 4 de septiembre de 2008 Soporte de descarga de JPEG 2000 2.14.7
2.16 13 de marzo de 2009 Nuevo GtkOrientable,
se muestra una advertencia en el campo de ingreso de contraseña cuando está habilitado Bloq Mayús ,
mejoras en GtkScale, GtkStatusIcon, GtkFileChooser.
2.16.6
2.18 23 de septiembre de 2009 Nueva GtkInfoBar. Mejoras en diálogo de selección de archivos, impresión.
GDK se ha reescrito para usar 'ventanas del lado del cliente'
2.18.9
2.20 23 de marzo de 2010 Nuevos GtkSpinner y GtkToolPalette, GtkOffscreenWindow.
Mejoras en el diálogo de selección de archivos, manejo del teclado, GDK.
Datos de introspección de GObject incluidos
2.20.1
2.22 23 de septiembre de 2010 gdk-pixbuf separado en un módulo separado,
la mayoría de las funciones de dibujo ahora las realiza Cairo
2.22.1
2.24 30 de enero de 2011 Nuevo widget ComboBox simplificado (GtkComboBoxText), el backend de impresión
CUPS puede enviar trabajos a PDF,
GtkBuilder tiene soporte para etiquetas de texto,
muchas correcciones a los símbolos de introspección
2.24.0
3.0 10 de febrero de 2011 El renderizado ahora está completamente a cargo de Cairo , una abstracción de X11,
usando XInput2, soporte para máscaras tipo CSS
3.0.12
3.2 25 de septiembre de 2011 Nuevos backends experimentales de Wayland y HTML5 , nuevo cuadro de diálogo de selección de fuentes,
nuevos widgets: GtkLockButton y GtkOverlay
3.2.4
3.4 26 de marzo de 2012 Compatibilidad con pantallas táctiles, incluida multitáctil,
compatibilidad con desplazamiento suave, compatibilidad mejorada con Windows, MacOS X, API
ampliada para temas visuales
3.4.4
3.6 24 de septiembre de 2012 Nuevos widgets: GtkSearchEntry, GtkMenuButton, GtkLevelBar.
Los botones de entrada de números GtkSpinButton ahora se pueden colocar verticalmente.
Soporte para animaciones CSS, sombras borrosas.
3.6.5
3.8 13 de mayo de 2013 Compatibilidad con Wayland 1.0, rediseño de backend de Broadway GDK, gestión de geometría y temas mejorados.
Se agregó soporte para ventanas emergentes, se ha realizado un trabajo extenso para mejorar el rendimiento
3.8.9
3.10 23 de septiembre de 2013 Nuevos widgets (GtkHeaderBar, GtkPlacesSidebar, GtkStack, GtkStackSwitcher, GtkRevealer, GtkSearchBar, GtkListBox).
Compatibilidad con Wayland 1.2 (maximización, cursores animados, múltiples monitores, configuraciones, superficies personalizadas y sincronización de cuadros)
3.10.9
3.12 25 de marzo de 2014 Compatibilidad con Wayland 1.5; Nuevos widgets (Popover, GtkActionBar, GtkFlowBox). Soporte de menú global mejorado en OS X. 3.12.2
3.14 22 de septiembre de 2014 Compatibilidad con Wayland 1.6; Integración del depurador interactivo GtkInspector. Se suspendió la compatibilidad con los widgets GdkColor, GtkMisc, GtkArrow, GtkStatusIcon, GtkNumerableIcon y GtkThemingEngine. 3.14.6
3.16 22 de marzo de 2015 Soporte integrado de GDK para dibujar ventanas a través de OpenGL para X11 y Wayland a través de libepoxy usando GLX o EGL, nuevos widgets (GtkGLArea, GtkStackSidebar, GtkModelButton, GtkPopoverMenu), soporte Experimental Mir . 3.16.0
3.18 22 de noviembre de 2015 Diseño de selección de archivos actualizado, soporte eliminado para Windows XP 3.18.5
3.20 21 de marzo de 2016 Sistema de nodos CSS implementado, nuevo widget GtkShortcutsWindow 3.20.3  (enlace no disponible)
3.22 20 de septiembre de 2016 Se agregó la API GtkPadController para manejar gestos desde tabletas, nuevo widget GtkShortcutLabel, tecnología Flatpak integrada 3.22.0
4.0 16 de diciembre de 2020 [9] Lanzamiento del kit de herramientas de gráficos GTK 4.0 4.0.3
4.2 30 de marzo de 2021 [10] Lanzamiento del kit de herramientas de gráficos GTK 4.2 4.2.1
4.4 23 de agosto de 2021 [11] Lanzamiento del kit de herramientas gráficas GTK 4.4 4.4.0
4.6 30 de diciembre de 2021 [12] Kit de herramientas de gráficos GTK 4.6 disponible 4.6.2

Arquitectura

GTK+ está escrito en C , pero sin embargo está orientado a objetos [13] . Una de las razones para elegir C como lenguaje fue el deseo de construir fácilmente interfaces para otros lenguajes de programación . Como resultado, GTK+ se puede escribir en los siguientes lenguajes de programación:

Idioma Nombre Apoyo
ada GtkAda Soporte parcial hasta 2.18
C GTK+ Construido en
C++ gtkmm
C# y otros lenguajes
de programación
.NET
gtk # Soporte parcial hasta 2.20
D gtkD El soporte de GTK2 fue gtkD-1.7.4, después - GTK3 (más Cairo , Gda , Gl , GStreamer )
Erlang gtkNodo Soporte parcial hasta 2.16
Fortran gtk-fortran Soporte parcial hasta 2.24 / 3.0
Vamos ir-gtk Apoyo parcial (33%) [14]
TROZO idiomas escritos para el sistema GObject .
Genio idiomas escritos para el sistema GObject .
Haskell gtk2hs
GratisBÁSICO GTK+tabaco2 Soporte parcial antes de 2.22: También soportado por GTK3
pascual libre (encabezado) integrado en la distribución principal GTK 2.16 con soporte posterior parcial
Java Java-gnomo Soporte parcial hasta 2.20 (no disponible en Windows)
JavaScript semilla / GJS
Lúa lgob Soporta todas las versiones a partir de 2.16
Ceceo cl-cffi-gtk
Lúa LuaGtk Soporte parcial hasta 2.16
Nodo.js nodo-gtk
OCaml EtiquetaGTK Soporte parcial hasta 2.16
Perl Perl-Gtk3
PHP PHP GTK Soporte parcial hasta 2.20
PureBasic gtk2
Pitón GObject : introspección a través de PyGI , anteriormente PyGTK
R RGtk2 Soporte parcial hasta 2.12
rubí ruby-gtk2
Charla Smalltalk GTK GNU Smalltalk , Smalltalk YX , Squeak
tcl Gnocl
Vala idiomas escritos para el sistema GObject .

En realidad, GTK+ consta de dos componentes: GTK y GDK . El primero contiene un conjunto de elementos de interfaz de usuario o " widgets " (como un botón , una lista, un campo de entrada de texto , etc. ) para varias tareas. El GDK es responsable de la salida de pantalla y puede usar las funciones del sistema X Window , Wayland , Linux Framebuffer , WinAPI o Mac OS X para hacer esto . Desde la versión 2.8, GDK ha sido reemplazado en gran medida (pero no completamente) por el sistema de representación de gráficos vectoriales Cairo .

Además de Cairo, GTK+ depende de tres bibliotecas: GLib , Pango y ATK , que se desarrollan junto con GTK+ pero que también se pueden usar por separado. [ocho]

Apariencia

El usuario y/o el programador pueden configurar la apariencia de las GUI creadas con GTK+. En este caso, no solo se configuran los colores y las fuentes, sino también la forma en que se muestran los distintos elementos. Esto se logra mediante el uso de " motores " para la visualización. Al conectar otro motor, puede cambiar radicalmente la apariencia de los programas. Por ejemplo, algunos motores pueden usar una vista pseudo 3D , otros una vista más "plana", etc.

Uso

Los escritorios GNOME y Xfce están basados ​​en GTK+ . Los programas que utilizan GTK+ pueden ejecutarse en otros entornos como KDE y LXQt . Además, GTK+ también puede ejecutarse en sistemas operativos de las familias Microsoft Windows y Mac OS X.

GTK+ también ha sido elegido como la principal biblioteca de creación de interfaz de usuario para Mono (un puerto de Microsoft.NET para Linux). [quince]

La siguiente es una lista incompleta (porque GTK es demasiado popular) de proyectos que usan GTK:

Entornos de escritorio que utilizan GTK+ Administradores de ventanas usando GTK+ Aplicaciones que usan GTK+

GTK+ 3.0

GTK versión 3.0.0 revisó el manejo de dispositivos de entrada, incluyó soporte para temas escritos con sintaxis similar a CSS y agregó la capacidad de obtener información de otras aplicaciones GTK abiertas.

El desarrollo de la próxima versión de GTK+ comenzó en febrero de 2009 en el GTK+ Theming Hackfest en Dublín [16] . El primer borrador del plan de desarrollo fue publicado el 9 de abril de 2009 [17] .

El 10 de febrero de 2011 se lanzó GTK+ 3.0.0.

Ejemplo de programa

¡ Un simple hola mundo! » en GTK+ en Linux

/* Incluir la biblioteca GTK+ */ # incluir <gtk/gtk.h> int principal ( int argc , char * argv []) { /* Declarar widgets */ GtkWidget * etiqueta ; // Etiqueta GtkWidget * ventana ; // Ventana principal /* Inicializar GTK+ */ gtk_init ( & argc , & argv ); /* Crea la ventana principal */ ventana = gtk_window_new ( GTK_WINDOW_TOPLEVEL ); /* Establece el título de la ventana en "¡Hola mundo!" */ gtk_window_set_title ( GTK_WINDOW ( ventana ), "¡Hola mundo!" ); /* Crea una etiqueta con el texto "¡Hola mundo!" */ etiqueta = gtk_label_new ( "¡Hola mundo!" ); /* Insertar una etiqueta en la ventana principal */ gtk_container_add ( GTK_CONTAINER ( ventana ), etiqueta ); /* Mostrar ventana junto con widgets */ gtk_widget_show_all ( ventana ); /* Conectar la señal de terminación a la salida del programa */ g_signal_connect ( G_OBJECT ( ventana ), "destruir" , G_CALLBACK ( gtk_main_quit ), NULL ); /* La aplicación entra en un bucle eterno esperando las acciones del usuario */ gtk_main (); devolver 0 ; }

Para compilar el ejemplo, debe ejecutar el comando:

gcc nombre_archivo.c -o nombre_archivo `pkg-config --cflags --libs gtk+-3.0`

En Windows, puede compilar el ejemplo usando MinGW con el siguiente comando:

i686-pc-mingw32-gcc file_name.c `PKG_CONFIG_LIBDIR=yes PKG_CONFIG_PATH=/usr/i686-pc-mingw32/sys-root/mingw/lib/pkgconfig/ pkg-config --cflags --libs gtk+-3.0`

Véase también

Interfaces para otros lenguajes de programación

Notas

  1. Ver el archivo AUTORES en el archivo fuente de GTK+ .
  2. http://directorio.fsf.org/wiki/gtk+
  3. https://gitlab.gnome.org/GNOME/gtk/-/tags/4.8.2
  4. El proyecto de código abierto gtk en Open Hub: página de idiomas - 2006.
  5. Directorio de software libre
  6. ↑ Descripción general de GTK+ y sus bibliotecas 
  7. El proyecto GTK+ anuncia el cambio de nombre a GTK . Consultado el 10 de abril de 2019. Archivado desde el original el 8 de febrero de 2019.
  8. 1 2 GTK+ 2.18.0 lanzado  (ing.)  (enlace descendente) . Consultado el 23 de septiembre de 2009. Archivado desde el original el 23 de agosto de 2011.
  9. gtk 4.0.0 . Consultado el 27 de octubre de 2021. Archivado desde el original el 28 de octubre de 2021.
  10. gtk 4.2.0 . Consultado el 27 de octubre de 2021. Archivado desde el original el 27 de octubre de 2021.
  11. gtk 4.4.0 . Consultado el 27 de octubre de 2021. Archivado desde el original el 24 de agosto de 2021.
  12. GTK 4.6.0 . Consultado el 31 de marzo de 2022. Archivado desde el original el 23 de enero de 2022.
  13. Tutorial de GTK (enlace descendente) . Consultado el 9 de agosto de 2011. Archivado desde el original el 22 de agosto de 2011. 
  14. Go-GTK . mattn.github.io. Consultado el 20 de noviembre de 2016. Archivado desde el original el 27 de noviembre de 2016.
  15. GtkSharp-Mono . Consultado el 7 de mayo de 2010. Archivado desde el original el 26 de enero de 2021.
  16. Anuncio "GTK+ Theming Hackfest" . Consultado el 25 de abril de 2009. Archivado desde el original el 17 de julio de 2011.
  17. Plan de trabajo de Gtk+ 3.0 . Consultado el 25 de abril de 2009. Archivado desde el original el 12 de abril de 2009.

Enlaces