PDF de programación - Programación en C moderno

Imágen de pdf Programación en C moderno

Programación en C modernográfica de visualizaciones

Publicado el 27 de Mayo del 2021
310 visualizaciones desde el 27 de Mayo del 2021
110,0 KB
60 paginas
Creado hace 9a (20/03/2015)
Programación en C moderno

Álvaro Neira Ayuso <[email protected]>

1

GTK: Biblioteca para crear la
interfaz gráfica de una aplicación.
● - Introducción: Historia y software necesario
● - Ejemplo 1: Creación de widgets, ventanas,

botones, etiquetas y contenedores

● - Ejemplo 2: Creación de widget con uso de

menús. Uso de menus. Uso de Toolbars

2

Introducción: Historia y software

necesario

● GTK "GIMP Tool Kit" es una biblioteca del

equipo GTK+

● Para crear la interfaz gráfica de usuario
● Maneja widgets como ventanas, botones,
menús, etiquetas, deslizadores, pestañas...

3

GTK+

● Biblioteca desarrolladas por la GNOME

Foundation el 14 de Abril de 1998

● Programada en C
● Con licencia GNU LGPL

4

GTK+

● GTK+ o The GIMP Toolkit es un conjunto de
bibliotecas multiplataforma para desarrollar
interfaces gráficas de usuario (GUI)

● Principalmente para los entornos gráficos

GNOME, XFCE y ROX.

● Aunque también se puede usar en el escritorio

de Windows, Mac OS y otros.

5

GTK+

● Inicialmente fueron creadas para desarrollar el

programa de edición de imagen GIMP

● Junto a Qt es una de las bibliotecas más

populares

6

Bibliotecas de GTK+

● GLib. Proporciona manejo de estructura de

datos para C, portabilidad, interfaces para
funcionalidades de tiempo de ejecución como
ciclos, hilos, carga dinámica o un sistema de
objetos.

● GTK. Biblioteca la cual realmente contiene los

objetos y funciones para crear la interfaz de
usuario.

7

Bibliotecas de GTK+

● GDK. Biblioteca que actúa como intermediario entre gráficos

de bajo nivel y gráficos de alto nivel.

● ATK. Biblioteca para crear interfaces con características de

una gran accesibilidad muy importante para personas
discapacitadas o minusválidos.

● Pango. Biblioteca para el diseño y renderizado de texto.
● Cairo. Biblioteca de renderizado avanzado de controles de

aplicación.

8

Entornos que utilizan GTK+

● GNOME
● Xfce está basado en GTK+
● LXDE "Lightweight X11 Desktop Environment"

9

Aplicaciones que utilizan GTK+

● Evolution - Cliente de correo electrónico.
● Firefox - Navegador web.
● GIMP - Editor de gráficos.
● Inkscape - Editor de gráficos vectoriales SVG.
● Nero Linux - Un programa para la edición de discos.
● Pidgin - Cliente de mensajería instantánea.
● VMware Player - Maquina virtual.
● Wireshark - Capturador y analizador de paquetes de

redes computacionales.

10

Biblioteca disponible en

● C
● C++ (gtkmm)
● C# (Gtk Sharp)
● Java (java-gnome)
● Python (PyGTK)
● Javascript

11

Bibliotecas necesarias en

Debian/Ubuntu

● GCC
● Pkg-config, necesario para mostrar

información de las bibliotecas de desarrollo

● Paquetes de desarrollo de GLib
● Paquetes de desarrollo de GTK+

12

Bibliotecas a instalar

● gcc
● libc6-dev
● pkg-config
● libglib2.0-dev
● libgtk2.0-dev

13

Compilar programas que tienen

GTK

● CFLAGS=`pkg-config --libs --cflags gtk+-2.0 `
● export CFLAGS
● gcc $CFLAGS -o programa programa.c

14

Métodos principales GTK

gtk_init(&argc, &argv);

● Con esta función, se inicializa el subsistema

de GTK+.

15

Métodos principales GTK

gtk_widget_show(ventana);

● Esta función permite que el widget sea

visible.

16

Métodos principales GTK

gtk_main();

● Esta función inicializa el loop principal de

GTK+, donde se dibujarían todos los
controles.

17

Widgets Básicos

● En informática, un widget o artilugio1 es una

pequeña aplicación o programa

● Usualmente presentado en archivos o ficheros

pequeños que son ejecutados por un motor
de widgets o Widget Engine

● Entre sus objetivos están dar fácil acceso a
funciones frecuentemente usadas y proveer
de información visual

18

Ventanas

● La ventana es el mas necesario de los

Widgets en GTK+. La función
gtk_window_new() devuelve un widget de tipo
ventana. El argumento de la función es:
– GTK_WINDOW_TOPLEVEL : generalmente
usado, es para crear una ventana nueva que
informe al Window Manager

– GTK_WINDOW_POPUP : en caso de querer usar

un pop-up, no manejado por el Window Manager

19

Ventanas

GtkWidget *ventana;
ventana = gtk_window_new(GTK_WINDOW_TOPLEVEL);

20

Etiquetas

● Una etiqueta es un control de texto. Es uno de
los controles mas simples. No emiten señales
si no están asociados a una ventana.

● La función gtk_label_new() crea un widget de

tipo etiqueta.

● GtkWidget * gtk_label_new( const char *string);

21

Etiquetas

GtkWidget *etiqueta;
etiqueta = gtk_label_new("Es una etiqueta");

22

Botones

● Este widget es para comunicación de usuario
● En algunos casos puede tener una imagen

asociada.

● La función gtk_button_new(void) crea un

widget de tipo botón

● Genera un evento de tipo "Clicked"

23

Botones

GtkWidget *boton;
boton = gtk_button_new();

24

Botones con etiquetas

● La función gtk_button_new_with_label() crea

un widget de tipo botón, con una etiqueta
contenida en el botón.

● gtk_button_new_with_label(char *etiqueta)

25

Botones con etiquetas

GtkWidget *boton_con_etiqueta;

boton_con_etiqueta = gtk_button_new_with_label("Estoy
dentro de un boton");

26

Contenedores

● Un widget puede contener a otro. El mas

común es la ventana, que puede encapsular a
otros widgets.

● Para contener un widget en otro se utiliza la

funcion gtk_container_add.
gtk_container_add((GtkContainer *)
widget_contenedor, widget_a_contener);

27

Contenedor

GtkWidget *boton;
GtkWidget *etiqueta;
GtkWidget *ventana;

boton = gtk_button_new();
etiqueta = gtk_label_new("Etiqueta 1");
ventana = gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_container_add ((GtkContainer *) ventana, boton);
gtk_container_add ((GtkContainer *) boton, etiqueta);

28

Ejemplo

29

Métodos de un Widget

● GtkWidget hereda las propiedades y métodos

de la clase GObject. Además, posee sus
propios métodos y propiedades.

● Cualquier control que sea hijo de la clase

GtkWidget hereda sus propiedades y métodos

30

Métodos de un Widget

● gtk_widget_show((GtkWidget *) widget);
● g_object_set_property((GObject *) ventana,

"title", "Titulo de la ventana");

31

Widgets de Empaquetamiento

● Algunos de estos widgets "invisibles" son
usados para empaquetamiento. Es decir,
pueden contener mas widgets dentro de el.

● El widget mas conocido para

empaquetamiento es el GtkBox (o caja de
empaquetamiento). Lo hay en dos versiones,
horizontal (GtkHBox) y vertical (GtkVBox).

32

Widgets de Empaquetamiento

hbox = gtk_hbox_new(homogeneidad, distancia);

● La función gtk_hbox_new() crea un widget de tipo HBox.

Los parámetros que recibe esta función son:
– homogeneidad : (gboolean) si es verdadero, todos los widgets

que contiene ocuparan el mismo espacio

– distancia : (gint) numero de píxeles de espacio entre widgets.

33

Widgets de Empaquetamiento

gtk_box_pack_start((GtkBox *) hbox, widget, expandir,
llenar, margen);

– hbox : el widget empaquetador de tipo GtkBox
– widget : el widget a insertar al principio
– expandir : (gboolean) si es verdadero, se le da espacio extra al
siguiente hijo. Este espacio se reparte equitativamente entre los
widgets ya insertados

– llenar : (gboolean) si es verdadero, el widget hijo se expandira.
– margen : (gint) espacios extras en pixeles entre el widget

insertado y sus vecinos.

34

Widgets de Empaquetamiento

gtk_box_pack_end((GtkBox *) hbox, widget, expandir,
llenar, margen);

– hbox : el widget empaquetador de tipo GtkBox
– widget : el widget a insertar al final
– expandir : (gboolean) si es verdadero, se le da espacio extra al
siguiente hijo. Este espacio se reparte equitativamente entre los
widgets ya insertados

– llenar : (gboolean) si es verdadero, el widget hijo se expandirá
– margen : (gint) espacios extras en píxeles entre el widget

insertado y sus vecinos.

35

Ejemplo

36

●Toggle (Botón de dos estados)

● Los botones de tipo toggle o de dos estados,
son botones los cuales pueden estar en dos
estados: Pulsado o no pulsado.

toggle = gtk_toggle_button_new();

37

Ejemplo

38

Señales

● Es posible definir funciones arbitrarias al

momento de recibir algunos eventos.
● La programación gráfica requiere de

interacción con el usuario

● GTK+ recibe y emite señales al momento de

comunicarse con la capa gráfica (X11).

● En el caso del botón, al momento de hacer

click en el se genera la señal "clicked".

39

Señales: Definición de funciones

"clicked" void user_function (GtkButton *
button, gpointer user_data);

40

Señales: Conectar las funciones

con los widgets

g_signal_connect((GObject *) widget, const gchar signal,
(GCallback *) function, gpointer data);

– widget : es el widget que origina la señal
– const gchar signal : es el nombre de la señal a recibir
– function : la función que se va a conectar a la señal
– data : puntero arbitrario de envío de datos de la función

41

Ejemplo

42

GtkEntry

● Como el nombre lo indica, sirve para ingresar

texto.

GtkWidget *entrada;
entrada = gtk_entry_new();

43

Ejemplo

44

ComboBox

● En un combo box, el usuario selecciona una de varias

opciones.

GtkWidget *combo;
combo = gtk_combo_new();

printf("valor del activo %d\n",
gtk_combo_box_get_active((GtkComboBox
*)combo));

45

Ejemplo

46

Spinners

● Estos controles seleccionan un valor, el que
se modifica por dos flechas pequeñas (hacia
arriba y abajo).

● Para usar un spinner, es necesario hablar de

un control llamado GtkAdjustment.

47

Spinners

● Este control permite representar en un control valores de

"borde" o limite. Por ejemplo, para los scrollbars.
● Para crear un GtkAdjustment, se usa la función

gtk_adjustment_new() con los siguientes parámetros:
– Valor inicial
– Valor mínimo
– Valor máximo
– Incremento
– Incremento por página (saltos)
– Tamaño de página

48

Spinners

● gtk_spin_button_new (GtkAdjustment

*adjustment, gdouble climb_rate, guint digits);

– adjustment = Objeto GTK con los ajustes
– climb_rate = Cuanto cambia el spin por cada

pulsación de las flechas

– digits = Número de d
  • Links de descarga
http://lwp-l.com/pdf19241

Comentarios de: Programación en C moderno (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad