[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]Ahh.. pues no veo que sea una calamidad :) Creo que con la información que te di sacas exactamente lo que necesitas.... digamos que tu texto es char *mytext; el ancho en pixeles de tu label va a ser exactamente de : gtk_string_width(GTK_WIDGET(label)->style->font, mytext)+2*GTK_MISC(label)->xpad; entonces puedes ver que si este tamaño se pasa de tu limite, le vas poniendo barras de desplazamiento... Pero sigo sin estar muy seguro de que no sea mas conveniente (o al menos mas facil) usar el GtkScrolledWindow... GtkWidget *label=gtk_label_new(mytext); GtkWidget *scrolled=gtk_scrolled_window_new(NULL, NULL); gtk_widget_set_usize(scrolled, MY_XMAX, MY_YMAX); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_container_add(GTK_CONTAINER(scrolled), label); gtk_widget_show_all(scrolled); Creo que eso te daria un control automático de las barras por si tu texto impone un label mas grande que MY_XMAX, MY_YMAX.... La ventaja de este metodo es que ademas controla la altura del label, lo cual no necesariamente necesitas, pero que siempre es bienvenido... (no ?) Si quieres tener mas control, entonces debes de usar el primer metodo... pero tiene un defecto fuerte: Funciona especificamente para el label, y en las condiciones actuales del label... si mañana hacen una versión modificada del label que le permite tener una propia textura de fondo, y que esta textura "mande" sobre el tamaño del label, por ejemplo se podria forzar el tamaño mas grande para que una imagen de fondo aparezca completa, y el texto quedaría alineado adentro de la imagen según especificado.... (bueno no creo que esto vaya a suceder.. es no mas un ejemplo). Bueno.. pues aún si esto llega a suceder, el segundo metodo sigue funcionando bien... porque no tiene aprioris sobre el tamaño hiptético de un widget... lo conoce al momento de recibirlo, y se adapta a el. Talvez lo que podrias hacer es checar bien a bien todo el protocolo de negociación de espacio entre widgets para saber que funciones usa con que parametros para conocer tu mismo antes de insertar un widget cual va a ser su tamaño.... pero no lo veo nada sencillo... además, nada nos garantiza que este protocolo no vaya a evolucionar tambien y a tener sus variaciones que tu no estaría siguiendo por lo mismo. (tambien lo veo improbable pero...) Bueno... Espero que te sirva de algo.. alguna de las dos opciones debe de convenirte (espero) Saludos Olivier. -----Mensaje original----- De: Luis Rodrigo Gallardo Cruz <rodrigo en lisa dyndns org> Para: Olivier Nenert <onenert en condumex com mx> CC: Lista de ayuda de Linux <ayuda en linux org mx> Fecha: Miércoles, 08 de Diciembre de 1999 11:52 p.m. Asunto: RE: Programando en GTK ¡Oh calamidad! Resulta que si es la primera opción la que necesito. Para explicar: Lo que estoy haciendo es algo parecido a lo que sale cuando le picas al pez Wanda. Quiero poner una ventana con un mensaje arbitrario. La ventana no debe ser más grande de lo necesario, eso es simple usando GtkLabel. Pero también quiero que si la ventana es muy grande (digamos 60% de la pantalla) no exceda ese tamaño, y entonces debo poner el mensaje en un ScrolledWindow, para que se pueda ver todo. Y debo calcular todo *antes* de mostrar la ventana, se vería muy feo si la cambio despues. Creo que me voy a tener que fletar a calcularlo a pata, espero que no sea muy tardado. On Wed, 8 Dec 1999, Olivier Nenert wrote: > 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 :) 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