2012-10-04 2 views
5

Ich habe eine Anwendung, die ihre gesamte GUI in einem Morph hat. Pharo und Squeak haben ein Fenster im Host-Betriebssystem.Wie man eine schöne Ein-Fenster-Anwendung mit Pharo oder Squeak einsetzt?

Jetzt möchte ich diese eine Morph mit dem einen Pharo/Squeak-Fenster so verbinden, dass sie das gesamte Pharo/Squeak-Fenster ausfüllt, die Größe ändert (und das Morph-Layout aktualisiert), wenn das Pharo/Squeak-Fenster verkleinert wird in einer Weise, dass es keine (zufällige) Möglichkeit für den Benutzer gibt, auf etwas jenseits des Morphs zuzugreifen (es geht nur um Usability, nicht um Sicherheit!).

Wie kann ich das erreichen?

Antwort

6

Passen Sie Ihre Morph die Grenzen in seiner step Methode:

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

Möglicherweise möchten Sie diese Bedingung auf einem „Einsatz“ Flagge machen, die Sie nur aktivieren, wenn der Benutzer Bild speichern. Dies ist zum Beispiel wie Scratch (http://info.scratch.mit.edu/Scratch_1.4_Download) es tut.

+1

ist es nicht besser, Layouts zu verwenden? Morph hResizing: #spaceFill; vResizing: #spaceFill. ? Sie können auch direkt in #checkForNewScreenSize einhaken. Siehe Absender/Implementatoren davon. –

+0

Ein Layout würde versuchen, auf allen Kindern der Welt zu operieren. Wahrscheinlich keine gute Idee. checkForNewScreenSize findet sowieso bei jedem Anzeigezyklus statt, ist also einer Schrittmethode ähnlich, aber Sie müssen sie nicht fest codieren. –

Verwandte Themen