Thread View: es.comp.os.linux.programacion
7 messages
7 total messages
Started by Gorka Olaizola
Fri, 15 Jul 2005 10:25
[gtk] ¿Conocer ancho de la barra de scroll de una ScrolledWindow?
Author: Gorka Olaizola
Date: Fri, 15 Jul 2005 10:25
Date: Fri, 15 Jul 2005 10:25
27 lines
2358 bytes
2358 bytes
En un programa que usa gtk2-perl tengo una ventana de scroll Gtk2::ScrolledWindow con pol�tica de ocultamiento autom�tica. Necesito saber el tama�o de la ventana cliente que es la que est� dentro de las barras de desplazamiento. Como la pol�tica es autom�tica cuando llamo, para para sacar el tama�o, a Gtk2::ScrolledWindow->child->get_hadjustment->page_size me saca el tama�o que se ve, sin la barra de desplazamiento. Pero cuando amplio la imagen que hay en la ventana cliente al ancho de la p�gina, la ScrolledWindow me saca la barra vertical y como la imagen se pasa unos p�xeles debajo de la barra, autom�ticamente me saca la horizontal, fastidiandome. �Hay alguna forma de saber el tama�o de la barra de scroll o al menos si est� oculta o visible? Por m�s que miro la docu no parece haber forma. La idea que tengo es restarle al "page_size" el tama�o de la barra si �sta no est� visible. Por ahora lo he solucionado poniendo que las barras sean siempre visibles, pero quedar�a mejor que salgan las barras s�lo cuando toca. --
Re: [gtk] ¿Conocer ancho de la barra de scroll de una ScrolledWindow?
Author: Pere Pujal i Carabantes
Date: Fri, 15 Jul 2005 17:22
Date: Fri, 15 Jul 2005 17:22
34 lines
2113 bytes
2113 bytes
Hola Gorka! El 15-07-2005 Gorka Olaizola va escriure en es.comp.os.linux.programacion: > En un programa que usa gtk2-perl tengo una ventana de scroll > Gtk2::ScrolledWindow con pol�tica de ocultamiento autom�tica. > Necesito saber el tama�o de la ventana cliente que es la que est� dentro de > las barras de desplazamiento. Como la pol�tica es autom�tica cuando llamo, > para para sacar el tama�o, a Establece la pol�tica de ocultamiento a ALWAYS antes de sacar el tama�o, Sacas el tama�o con barras incluidas > Gtk2::ScrolledWindow->child->get_hadjustment->page_size y ya puedes ponerla en auto. Ni idea de como se hace en perl. > Por ahora lo he solucionado poniendo que las barras sean siempre visibles, > pero quedar�a mejor que salgan las barras s�lo cuando toca. Pues eso, las pones a auto despu�s de haber pillado el tama�o con barras incluidas. Salut Pere
Re: [gtk] ¿Conocer ancho de la barra de scroll de una ScrolledWindow?
Author: Gorka Olaizola
Date: Sat, 16 Jul 2005 11:03
Date: Sat, 16 Jul 2005 11:03
12 lines
2074 bytes
2074 bytes
El d�a Fri, 15 Jul 2005 17:22:30 +0000 (UTC), Pere Pujal i Carabantes <"ppujal A R R O B A"@airtel.net> escribi�: > > Establece la pol�tica de ocultamiento a ALWAYS antes de sacar el tama�o, > Buena idea, aunque le veo el problema de que al ponerla en always las barras salen y van a parpadear. Tambi�n si se cambia el tama�o de la ventana hay que poner la barra a always y saldr�n aunque sea un momento. Curiosamente en la documentaci�n del API 2.x de GTK hay un m�todo para sacar el objeto de la barra de la ScrolledWindow, pero en la API 2.6.2 ha desaparecido. Parece que en gtk2-perl no han incluido ese m�todo. Quiz�s lo hayan quitado.
Re: [gtk] ¿Conocer ancho de la barra de scroll de una ScrolledWindow?
Author: Pere Pujal i Carabantes
Date: Sat, 16 Jul 2005 19:22
Date: Sat, 16 Jul 2005 19:22
39 lines
2618 bytes
2618 bytes
Hola Gorka! El 16-07-2005 Gorka Olaizola va escriure en es.comp.os.linux.programacion: > El d�a Fri, 15 Jul 2005 17:22:30 +0000 (UTC), Pere Pujal i Carabantes <"ppujal A R R O B A"@airtel.net> escribi�: > > > > Establece la pol�tica de ocultamiento a ALWAYS antes de sacar el tama�o, > > > Buena idea, aunque le veo el problema de que al ponerla en always las barras > salen y van a parpadear. Si es para ajustar al ancho, la barra horizontal la puedes dejar en auto. en cuanto a la vertical s�lo va a parpadear si no es necesaria, y por lo que leo de tu primer mensaje s� lo es. En cualquier caso podr�as controlar el ratio de la imagen original x/y, contrastarlo con el de la ventana y actuar en consecuencia. > Tambi�n si se cambia el tama�o de la ventana hay > que poner la barra a always y saldr�n aunque sea un momento. Aqu� me pierdo, quieres que la imagen se reescale autom�ticamente al cambiar el tama�o de la pantalla? Pensaba que el escalado lo provocaba el usuario al activar un bot�n o men�... > Curiosamente en la documentaci�n del API 2.x de GTK hay un m�todo para sacar > el objeto de la barra de la ScrolledWindow, pero en la API 2.6.2 ha > desaparecido. > Parece que en gtk2-perl no han incluido ese m�todo. Quiz�s lo hayan quitado. En pygtk tampoco lo veo. Salut Pere
Re: [gtk] ¿Conocer ancho de la barra de scroll de una ScrolledWindow?
Author: Gorka Olaizola
Date: Sun, 17 Jul 2005 01:14
Date: Sun, 17 Jul 2005 01:14
28 lines
3194 bytes
3194 bytes
El d�a Sat, 16 Jul 2005 19:22:15 +0000 (UTC), Pere Pujal i Carabantes <"ppujal A R R O B A"@airtel.net> escribi�: > > Si es para ajustar al ancho, la barra horizontal la puedes dejar en auto. > en cuanto a la vertical s�lo va a parpadear si no es necesaria, y por lo > que leo de tu primer mensaje s� lo es. > Eso es lo que estoy planteando ahora. Como una barra casi siempre va a ser imprescindible la pongo en always y la otra en never. As� parece ir bien en casi todos los casos y es mejor que poner las dos en modo always. > En cualquier caso podr�as controlar el ratio de la imagen original x/y, > contrastarlo con el de la ventana y actuar en consecuencia. > El problema es que al calcular el ratio se calcula sin el tama�o de la barra, con el tama�o total de la ventana, y al ampliar la imagen siempre queda por debajo de la barra y como est� en autom�tico, la barra sale para poder desplazarse a esos pocos p�xeles de m�s. Necesitar�a saber el tama�o de la ventana sin los p�xeles que ocupar�a la barra para que no salga, pero no puedo saberlos ya que no tengo acceso al objeto de la barra y tampoco s� si la barra est� activa o no. Si la barra est� activa el tama�o de "page_size" ya contiene la resta del tama�o de la barra. Si no est� activa "page_size" es el tama�o total de la ventana sin la resta del tama�o de la barra. Otra posibilidad que creo que tengo es sacar el ancho de la ventana que me da el tama�o sin la resta del tama�o de las barras, y restarle un n�mero fijo, por ejemplo 32, que seguramente es m�s que el tama�o que adquiere la barra. No es una salida �ptima pero puede servir.
Re: [gtk] ¿Conocer ancho de la barra de scroll de una ScrolledWindow?
Author: Pere Pujal i Carabantes
Date: Sun, 17 Jul 2005 10:36
Date: Sun, 17 Jul 2005 10:36
84 lines
5033 bytes
5033 bytes
Hola Gorka! El 17-07-2005 Gorka Olaizola va escriure en es.comp.os.linux.programacion: > El d�a Sat, 16 Jul 2005 19:22:15 +0000 (UTC), Pere Pujal i Carabantes <"ppujal A R R O B A"@airtel.net> escribi�: > > > > Si es para ajustar al ancho, la barra horizontal la puedes dejar en auto. > > en cuanto a la vertical s�lo va a parpadear si no es necesaria, y por lo > > que leo de tu primer mensaje s� lo es. > > > Eso es lo que estoy planteando ahora. Como una barra casi siempre va a ser > imprescindible la pongo en always y la otra en never. As� parece ir bien en > casi todos los casos y es mejor que poner las dos en modo always. > > En cualquier caso podr�as controlar el ratio de la imagen original x/y, > > contrastarlo con el de la ventana y actuar en consecuencia. > > > El problema es que al calcular el ratio se calcula sin el tama�o de la > barra, con el tama�o total de la ventana, y al ampliar la imagen siempre > queda por debajo de la barra y como est� en autom�tico, la barra sale para > poder desplazarse a esos pocos p�xeles de m�s. Necesitar�a saber el tama�o > de la ventana sin los p�xeles que ocupar�a la barra para que no salga, pero > no puedo saberlos ya que no tengo acceso al objeto de la barra y tampoco s� > si la barra est� activa o no. Creo que no me he explicado bi�n: Supongamos que tienes una imagen cargada en la ventana que haga Xancho por Yalto. Si la ventana mide menos en alguna de las dos dimensiones y las barras estan en auto, tendr�s una o las dos barras. Sabiendo esto, ya sabes qu� barra tienes en la pantalla. Ahora cargemos una imagen nueva: Si tienes una imagen de 800 de ancho por 600 de alto el ratio ser�a 800/600=1,3333 Supongamos que la barra hace 32 como dices m�s abajo, aunque en el tema que uso hacen 19. Ahora supongamos que tenemos las barras en auto y que sabemos cuales estan visibles, por lo que podemos restarlas o no a las medidas que nos d� la ventana. Nota tambi�n que para ventanas grandes el valor de las barras afecta poco en la relaci�n anchoxalto 1) Si la ventana hace 1032X900 y sabemos que la barra vertical est� visible el ratio ser� 1,1111 (1032-32)/19 1,1111<1,33333 Sabes que si escalas la imagen al ancho de la ventana no va a salir la barra vertical porque la relaci�n ancho/alto es menor, por tanto puedes poner la barra vertical en never y la horizontal en auto. 2) Si hace 1032x700 ser� 1,42857 1,42857>1,33333 Caso inverso, si ajustas al ancho saldr� la barra vertical, por tanto pones la barra vertical en always y la horizontal en auto. > Si la barra est� activa el tama�o de "page_size" ya contiene la resta del > tama�o de la barra. Si no est� activa "page_size" es el tama�o total de la > ventana sin la resta del tama�o de la barra. > Otra posibilidad que creo que tengo es sacar el ancho de la ventana que me > da el tama�o sin la resta del tama�o de las barras, y restarle un n�mero > fijo, por ejemplo 32, que seguramente es m�s que el tama�o que adquiere la > barra. No es una salida �ptima pero puede servir. Mucho m�s sencillo s� lo es, ya conoces eso de keep it simple :) Si quieres saber el tama�o de las barras, una simpla resta entre el ancho de la ventana con la barra vertical en never y el ancho con la barra en always te lo da. Con que lo hagas una vez al inicio del programa te llega, adem�s tiene la ventaja de que es el ancho real del tema que se est� usando en esos momentos Salut Pere
Re: [gtk] ¿Conocer ancho de la barra de scroll de una ScrolledWindow?
Author: Pere Pujal i Carabantes
Date: Sun, 17 Jul 2005 13:53
Date: Sun, 17 Jul 2005 13:53
21 lines
1851 bytes
1851 bytes
> 1) Si la ventana hace 1032X900 y sabemos que la barra vertical est� visible
> el ratio ser� 1,1111 (1032-32)/19
^^^
900
> 1,1111<1,33333
Obviamente estoy equivocado: Si sabemos que la barra est� no hay que restarla
sino sumarla.
(1032+32)/900=1,1822
1,1822<1,333
> 2) Si hace 1032x700 ser� 1,42857
> 1,42857>1,33333
(1032+32)/700=1,5200
1,520>1,3333
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads