[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

RE: Programando en GTK



Hola Luis..
perdona, pero no entendi bin tu pregunta...
o bueno.. es por la razón que diste despues que me confundi....
Lo que quieres saber, es qu tamaño va a tener el texto adentro del label
para añadirle barras en caso de necesidad ???
o bien es efectivamente el Label completo que estas poniendo en un container
que quieres
proveer de barras para ver el Label completo ?

Supongamos que se trata del primer caso. Que  o es tan sencillo....
necesitas saber la font que usa el Label...
para obtenerla usas GTK_WIDGET(label)->style->font
y podras conocer el tamaño de la string que vas a usar con
gdk_string_width(font, "my text");
o sea
gdk_string_width(GTK_WIDGET(label)->style->font, "my string")
Pero es solamente una aproximación porque ademas de esto,
el GtkLabel pondrá una margen a la izquierda y a la derecha del texto.
que son el xpad de su padre GtkMisc.
o sea que el ancjo total deberia ser de algo asi como
gdk_string_width(...)+2*label->misc.xpad;
Pero aqui no tomo en cuenta que posiblemente estes usando
la opcion WordWrap... en este caso las cosas son diferentes y se vuelven mas
complicadas...
Como no estoy bien seguro de que esto sea realmente tu necesidad, mejor no
le sigo mas :)

En el otro caso, creo que no hay una respuesta que se pueda dar, ya que el
tamaño
va a depender mas del padre del Label que del Label mismo. al final de
cuenta,
va a ocupar el espacio disponible y ya. entonces, mas bien deberias de
preguntar a su padre que espacio hay para un hijo adicional... Pero lo veo
complicado..
son llamadas al gtk_widget_request_size.. child_size.. no recuerdo que
ni estoy seguro del "protocolo" para pedir espacio a la hora de añadir un
Widget en su container..

En cualquier caso, como bien dices, una vez que pusiste el Label... ya sabes
su tamaño, entonces porque no le pones las barras en este momento si
necesarias ???
O si te parece que no se ve muy bien asi, entonces podrias, en lugar de poer
el Label en donde
quieres ponerlo, pon primero una GtkScrolledWindow...
quisaz algo asi te solucionaria tu problema...
GtkWidget *parent;
GtkWidget *label;
GtkWidget *scroll;

/* tu init normal donde creas el parent */
/* ...... */
/* aqui ya quieres añadir el Label en el parent... */
scroll=gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_add(GTK_CONTAINER(parent), scroll);
gdk_container_add(GTK_CONTAINER(scroll), label);
solo que el primer container_add es posiblemente distinto en tu caso..
depende realmente de cual sea el container...
no livdes los gtk_widget_show(..); y esto a lo mejor es lo que querias
hacer.. (??)

Repito.. no estoy seguro de haber entendido tu punto... entonces trate de
darte una pista para las dos interpretaciones posiblesque se me ocurieron...
nada mas...

Espero que te sirva de algo...

Saludos
Olivier.

-----Mensaje original-----
De: Luis Rodrigo Gallardo Cruz <rodrigo en lisa dyndns org>
Para: Lista de ayuda de Linux <ayuda en linux org mx>
Fecha: Miércoles, 08 de Diciembre de 1999 12:46 a.m.
Asunto: Programando en GTK


¿Alguien sabe si hay manera de saber que tamaño va a tener un GtkLabel
antes de mostrarlo? Lo único que he logrado es obtener el tamaño que va a
pedir (0 x 0), o el tamaño que tiene después de mostrarla.

Lo que quiero es, si pasa de determinado tamaño, ponerle barras de
desplazamiento, pero que si es más pequeña, simplemente tome su tamaño
natural. No puedo solo ponerla dentro de las barras, por que entonces todo
va a tener el tamaño natural de estas, no de la etiqueta.

Luis Rodrigo Gallardo Cruz

-----BEGIN GEEK CODE BLOCK-----
GM/CS d- s-: a-- C++ UL+>++ P L++>+++ E W+ ?o K- !w
?V PS+ PE- Y+ t+@ ?5 X(+) R+ tv b++ D+ G e+>++ h! r++ y+
------END GEEK CODE BLOCK------


--
Para desuscribirse, mande correo a: ayuda-unsubscribe en linux org mx
Para comandos adicionales, envíelo a: ayuda-help en linux org mx


-- 
Para desuscribirse, mande correo a: ayuda-unsubscribe en linux org mx
Para comandos adicionales, envíelo a: ayuda-help en linux org mx



[Hilos de Discusión] [Fecha] [Tema] [Autor]