[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]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