Once wrapped in a more specific class, a workaround will be possible to
maintain
the integrity of the layout.
Regards, Gary
----- Original Message -----
From: "Gary Chambers" <gazzagu...@btinternet.com>
To: <Pharo-project@lists.gforge.inria.fr>
Sent: Tuesday, January 25, 2011 3:40 PM
Subject: Re: [Pharo-project] collapsing panes
Ta, no problem!
Not quite perfect though... expanding after manual resize of an upper one
won't fill properly.
Unfortunately that's the limit with Morphic as it stands.
There's no concept of "desired extent" (which would normally be like
extent when rigid but slightly flexible)...
It would be nice to have layout etc. totally redone, perhaps based on the
Xwindows model... a big job
though that would probably benefit from a new (lowish level) UI
framework... along with
Cairo/Rome etc.
Regards, Gary
----- Original Message -----
From: "Tudor Girba" <tudor.gi...@gmail.com>
To: <Pharo-project@lists.gforge.inria.fr>
Sent: Tuesday, January 25, 2011 3:33 PM
Subject: Re: [Pharo-project] collapsing panes
It's really great working with you :)
Cheers,
Doru
On 25 Jan 2011, at 16:07, Gary Chambers wrote:
I'm working on it... changeset soon...
Regards, Gary
----- Original Message ----- From: "Tudor Girba" <tudor.gi...@gmail.com>
To: <Pharo-project@lists.gforge.inria.fr>
Sent: Tuesday, January 25, 2011 2:15 PM
Subject: Re: [Pharo-project] collapsing panes
Ahh, indeed! My bad. Thanks Gary.
The main issue that seems to be left is the resizing. Currently, resizing
propagates the changes to all the following morphs. This is great when
the table layout is inside a GeneralScrollPane, but it leads to a bit of
an odd behavior when stretching inside a bounded morph. Is there an easy
option to change the behavior of the resizer?
Cheers,
Doru
On 25 Jan 2011, at 12:07, Gary Chambers wrote:
Hi Doru,
The weight should be applied to the expanders themselves...
ex1 := (UITheme builder newExpander: 'Red' for: morph1)
spaceFillWeight: 1;
expanded: true.
ex2 := (UITheme builder newExpander: 'Blue' for: morph2)
spaceFillWeight: 2;
expanded: true.
ex3 := (UITheme builder newExpander: 'Yellow' for: morph3)
spaceFillWeight: 3;
expanded: true.
Regards, Gary
----- Original Message ----- From: "Tudor Girba" <tudor.gi...@gmail.com>
To: <Pharo-project@lists.gforge.inria.fr>
Sent: Monday, January 24, 2011 9:14 PM
Subject: Re: [Pharo-project] collapsing panes
Hi Gary,
On 24 Jan 2011, at 16:16, Gary Chambers wrote:
Hi,
I don't think the layouts can be merged, as such, as they have very
different
approaches.
With the TableLayout, it is possible to assign "weights" to each
spaceFill
section to get what you want, I think. (see #spaceFillWeight:)
I tried to use it, but I get no effect when I use it in your example.
Below is one of my trouts (added spaceFillWeight: 10 to morph2). What am
I doing wrong?
| container morph1 morph2 morph3 ex1 ex2 ex3 sp1 sp2|
morph1 := (PanelMorph new fillStyle: (SolidFillStyle color: Color red))
hResizing: #spaceFill;
vResizing: #spaceFill.
morph2 := (PanelMorph new fillStyle: (SolidFillStyle color: Color blue))
hResizing: #spaceFill;
vResizing: #spaceFill;
spaceFillWeight: 10.
morph3 := (PanelMorph new fillStyle: (SolidFillStyle color: Color
yellow))
hResizing: #spaceFill;
vResizing: #spaceFill.
ex1 := (UITheme builder newExpander: 'Red' for: morph1) expanded: true.
ex2 := (UITheme builder newExpander: 'Blue' for: morph2) expanded:
true.
ex3 := (UITheme builder newExpander: 'Yellow' for: morph3) expanded:
true.
sp1 := EdgeGripMorph new
target: ex1;
edgeName: #bottom;
vResizing: #rigid;
extent: 24 @ ProportionalSplitterMorph splitterWidth;
on: #mouseDown send: #expandedSizingRigid to: ex1.
sp2 := EdgeGripMorph new
target: ex2;
edgeName: #bottom;
vResizing: #rigid;
extent: 24 @ ProportionalSplitterMorph splitterWidth;
on: #mouseDown send: #expandedSizingRigid to: ex2.
container := UITheme builder newColumn: { ex1. sp1. ex2. sp2. ex3}.
container cellInset: 0.
container extent: 400@400.
container openInWindow.
Cheers,
Doru
Regards, Gary
----- Original Message ----- From: "Tudor Girba"
<tudor.gi...@gmail.com>
To: <Pharo-project@lists.gforge.inria.fr>
Sent: Monday, January 24, 2011 2:32 PM
Subject: Re: [Pharo-project] collapsing panes
Thanks a lot, Gary! I gave it a try and it does go in the wanted
direction.
Now, the next question. I see that you are using a TableLayout. Is
there a way to specify a proportion (like in the proportional layout?)
for the initial extent of the inner panes?
If yes, then I suppose we could merge the two layouts into one.
Cheers,
Doru
On 24 Jan 2011, at 14:51, Benjamin wrote:
I love that :)
It could be very useful ^^
Ben
On Jan 24, 2011, at 2:36 PM, Gary Chambers wrote:
Tricky...
Just an experiment, but try the following after filing in attached
change set.
Can make the re-proportioning explicit and maybe fix things to
constrain to
the owner morph if interested...
| container morph1 morph2 morph3 ex1 ex2 ex3 sp1 sp2|
morph1 := (PanelMorph new fillStyle: (SolidFillStyle color: Color
red))
hResizing: #spaceFill;
vResizing: #spaceFill.
morph2 := (PanelMorph new fillStyle: (SolidFillStyle color: Color
blue))
hResizing: #spaceFill;
vResizing: #spaceFill.
morph3 := (PanelMorph new fillStyle: (SolidFillStyle color: Color
yellow))
hResizing: #spaceFill;
vResizing: #spaceFill.
ex1 := (UITheme builder newExpander: 'Red' for: morph1)
expanded: true.
ex2 := (UITheme builder newExpander: 'Blue' for: morph2)
expanded: true.
ex3 := (UITheme builder newExpander: 'Yellow' for: morph3)
expanded: true.
sp1 := EdgeGripMorph new
target: ex1;
edgeName: #bottom;
vResizing: #rigid;
extent: 24 @ ProportionalSplitterMorph splitterWidth;
on: #mouseDown send: #expandedSizingRigid to: ex1.
sp2 := EdgeGripMorph new
target: ex2;
edgeName: #bottom;
vResizing: #rigid;
extent: 24 @ ProportionalSplitterMorph splitterWidth;
on: #mouseDown send: #expandedSizingRigid to: ex2.
container := UITheme builder newColumn: {
ex1.
sp1.
ex2.
sp2.
ex3}.
container cellInset: 0.
container extent: 400@400.
container openInWindow.
Have a play/fun.
Regards, Gary
----- Original Message ----- From: "Tudor Girba"
<tudor.gi...@gmail.com>
To: "Pharo-project@lists.gforge.inria.fr Development"
<pharo-project@lists.gforge.inria.fr>
Sent: Friday, January 21, 2011 11:18 PM
Subject: [Pharo-project] collapsing panes
Hi,
I have a question about how to obtain an effect similar to minimizing
a pane in Eclipse. Let's consider the example from below. I have a
ProportionalLayout because I want to fill the entire space and be
able to resize the inside panes. Now, I would also like to have some
way of collapsing one of the panes and have the rest resize to fill
the rest of the space. It's a bit like I would need some part of a
behavior from the TableLayout.
Can anyone provide me with some hints in this direction? Do I need to
create a new Layout?
| container morph1 morph2 morph3 window |
container := PanelMorph new.
morph1 := PanelMorph new fillStyle: (SolidFillStyle color: Color
red).
morph2 := PanelMorph new fillStyle: (SolidFillStyle color: Color
blue).
morph3 := PanelMorph new fillStyle: (SolidFillStyle color: Color
yellow).
container changeProportionalLayout.
container addMorph: morph1 fullFrame: (LayoutFrame fractions: (0 @ 0
corner: 1 @ 0.33)).
container addMorph: morph2 fullFrame: (LayoutFrame fractions: (0 @
0.33 corner: 1 @ 0.66)).
container addMorph: morph3 fullFrame: (LayoutFrame fractions: (0 @
0.66 corner: 1 @ 1)).
container addPaneSplitters.
container fillStyle: (SolidFillStyle color: Color yellow).
container extent: 400@400.
container openInWindow.
Cheers,
Doru
--
www.tudorgirba.com
"Be rather willing to give than demanding to get."
<ExpanderTweak.1.cs>
--
www.tudorgirba.com
"Every now and then stop and ask yourself if the war you're fighting is
the right one."
--
www.tudorgirba.com
"Problem solving efficiency grows with the abstractness level of problem
understanding."
--
www.tudorgirba.com
"There are no old things, there are only old ways of looking at them."
--
www.tudorgirba.com
"Sometimes the best solution is not the best solution."