resize resize behavior for SCView and its subclasses

resize takes nine different arguments defining the behavior when window is resized. Each view responds relatively to the stretches of its parent view.

1 2 3

4 5 6

7 8 9

1 - fixed to left, fixed to top

2 - horizontally elastic, fixed to top

3 - fixed to right, fixed to top

4 - fixed to left, vertically elastic

5 - horizontally elastic, vertically elastic

6 - fixed to right, vertically elastic

7 - fixed to left, fixed to bottom

8 - horizontally elastic, fixed to bottom

9 - fixed to right, fixed to bottom

Examples

// resize behaviours

// use the PopUpMenus to mix resize modes

(

var a;

a = { |i|

var w, b, x,k,t,p;

k=i;

i = i + 1;

w = Window("resize:"+i, Rect(10 + (k%3 * 220), Window.screenBounds.height- [250,460,670].at(k/3), 200, 180));

b = w.view.bounds;

x = CompositeView(w, w.view.bounds.insetBy(20,20))

.background_(Color.rand)

.resize_(i);

y = CompositeView(x, x.bounds.moveTo(0,0).insetBy(20,20))

.background_(Color.rand)

.resize_(i);

y.decorator = FlowLayout(y.bounds).gap_(0.0 @ 0.0);

t = StaticText(y, Rect(0, 0, 40, 40))

.background_(Color.rand.alpha_(0.8))

.resize_(i)

.string_(i)

.font_(Font("Helvetica", 26));

p=PopUpMenu(y,40@40).items_((1..9).collect(_.asString)).value_(i-1).resize_(i)

.action_{|m| t.string_((m.value+1).asString); [p,t].do(_.resize_(m.value+1))};

w.front;

w.onClose = {a.do(_.close) };

} ! 9;

)

// the popupmenu contains the various modes

(

w = Window("soundfile test", Rect(200, 200, 720, 250));

p = PopUpMenu(w, Rect(10,10,80,24))

.items_( Array.fill(9, {arg i; (i+1).asString;}) )

.action_({ arg sbs;

a.resize_(sbs.value+1);

});

f = SoundFile.new;

f.openRead("sounds/a11wlk01.wav".absolutePath);

a = SoundFileView(w, Rect(10,40, 700, 180))

.soundfile_(f)

.readWithTask(0, f.numFrames, showProgress: false )

.resize_(1);

w.front;

)