2012-10-04 18 views
5

Tengo una aplicación que tiene toda su GUI en un solo Morph. Pharo y Squeak tienen una ventana en el sistema operativo host.¿Cómo implementar una buena aplicación One-Window con Pharo o Squeak?

Ahora quiero atar este Morph a la ventana de Pharo/Squeak de forma que ocupe toda la ventana de Pharo/Squeak, cambie el tamaño (y actualice el diseño de Morph), cuando la ventana de Pharo/Squeak cambie de tamaño y de una manera que no hay posibilidad (accidental) para el usuario de acceder a nada más allá de ese Morph (sin embargo, se trata de usabilidad, ¡no de seguridad!).

¿Cómo puedo lograrlo?

Respuesta

6

Ajustar los límites de su morph en su método step:

step 
    (self position = (0 @ 0) and: [self extent = owner extent]) ifFalse: [ 
     self position: 0 @ 0. 
     self extent: owner extent]. 

es posible que desee hacer esta condicionada a un "despliegue" de la bandera, que sólo se habilita cuando se guarda la imagen del usuario. Esto es, por ejemplo, cómo lo hace Scratch (http://info.scratch.mit.edu/Scratch_1.4_Download).

+1

¿No sería mejor usar diseños? morph hResizing: #spaceFill; vResizing: #spaceFill. ? También podría enganchar directamente en #checkForNewScreenSize. Ver remitentes/implementadores de la misma. –

+0

Un diseño intentaría operar en todos los niños del mundo. Probablemente no es una buena idea. checkForNewScreenSize ocurre en todos los ciclos de visualización de todos modos, por lo que es similar a un método de paso, pero no tendrá que codificarlo. –

Cuestiones relacionadas