Hi Hernán,
Your code is now in Roassal. Thanks!
Cheers,
Alexandre
--
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel
On Sep 1, 2018, at 2:31 AM, Hernán Morales Durand
<hernan.morales(a)gmail.com> wrote:
Hi Alex,
I didn't posted yet because my workaround is unfinished, it needs more
work, but is a start (didn't tested for other cases, etc).
Note that it works connecting multiple edges:
| view shapes myElems |
view := RTView new.
myElems := 1 to: 7.
shapes := RTCompositeShape new
add: (RTText new text: 'Long text message');
add: (RTSVGPath new
path: 'm 3.96875,9.2604167 h 31.75 V 25.135417 C 22.489583,23.8125
17.197917,34.395833 3.96875,27.78125 Z';
fillColor: Color red;
borderColor: Color black;
borderWidth: 1.2;
scale: 1.4);
alignCenter;
elementsOn: myElems.
RTEdgeBuilder new
view: view;
shape: (RTArrowedLine new
color: Color white;
yourself);
elements: shapes;
connectFrom: 2 to: 4;
connectFrom: 2 to: 5;
connectFrom: 2 to: 7;
connectFrom: 1 to: 2;
connectFrom: 3 to: 2;
connectFrom: 6 to: 2.
RTTreeLayout new
verticalGap: 30;
horizontalGap: 30;
applyOn: shapes.
view addAll: shapes.
view inspect.
But it doesn't work for connecting two composites:
| view shapes myElems |
view := RTView new.
view @ RTDraggableView.
myElems := 1 to: 2.
shapes := RTCompositeShape new
add: (RTLabel new text: 'Test');
add: (RTSVGPath new
path: 'm 3.96875,9.2604167 h 31.75 V 25.135417 C
22.489583,23.8125 17.197917,34.395833 3.96875,27.78125 Z';
fillColor: Color red;
borderColor: Color black;
borderWidth: 1.2;
scale: 1.4);
alignCenter;
elementsOn: myElems.
RTEdgeBuilder new
view: view;
shape: (RTArrowedLine new
color: Color white;
yourself);
elements: shapes;
connectFrom: 1 to: 2.
RTTreeLayout new
verticalGap: 30;
horizontalGap: 10;
applyOn: shapes.
view addAll: shapes.
view inspect.
Doing some experiments the following frightening modification aligns
the two labeled composites, obviously destroying all other cases:
>> alignFromCenterUsing: anElement
| topX newX topY newY |
topX := anElement encompassingRectangle center x.
topY := anElement encompassingRectangle center y.
elements do: [ :s |
newX := topX + (s encompassingRectangle width / 2).
newY := topY + (s encompassingRectangle height / 2).
(s isKindOf: TRLabelShape)
ifTrue: [ s translateTo: newX @ newY ]
ifFalse: [ s translateTo: (topX / 2) @ (newY) ]
]
I would love to have more time to learn RTAlignment, but unfortunately
I'm on a deadline.
You may find the coded attached to this mail.
Cheers,
Hernán
2018-08-31 22:03 GMT-03:00 Alexandre Bergel <alexandre.bergel(a)me.com>:
> Hi!
>
> Just to make sure I have not missed anything. You told me on discord that you fixed
the problem, don’t you? What is your solution?
>
> Cheers,
> Alexandre
>
>
>> On Aug 29, 2018, at 10:35 PM, Hernán Morales Durand
<hernan.morales(a)gmail.com> wrote:
>>
>> Hi Alex,
>>
>> My problem using labeled elements is that adding another box, labeled text gets
overlaped:
>>
>> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>> | view shapes myElems |
>> view := RTView new.
>> myElems := 1 to: 3.
>> shapes := (RTSVGPath new
>> path: 'm 3.96875,9.2604167 h 31.75 V 25.135417 C 22.489583,23.8125
>> 17.197917,34.395833 3.96875,27.78125 Z';
>> fillColor: Color red;
>> borderColor: Color black;
>> borderWidth: 1.2;
>> scale: 1.4) elementsOn: myElems.
>> view addAll: shapes.
>> shapes @ (RTLabeled new text: 'Long text message').
>> RTEdgeBuilder new
>> view: view;
>> shape: (RTArrowedLine new
>> color: Color black;
>> yourself);
>> elements: shapes;
>> connectFrom: 1 to: 3.
>> RTTreeLayout new
>> verticalGap: 30;
>> horizontalGap: 30;
>> applyOn: shapes.
>> view inspect.
>> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>>
>> Maybe another suggestion?
>>
>> Cheers,
>>
>> Hernán
>>
>>
>> 2018-08-29 22:09 GMT-03:00 Alexandre Bergel <alexandre.bergel(a)me.com>:
>> Hi!
>>
>> An easy thing to do, is to make the elements labeled. Which is different than
creating a composite shape (I can detail why there are two ways to label elements).
>>
>> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>> | view shapes myElems |
>> view := RTView new.
>> myElems := 1 to: 2.
>> shapes := (RTSVGPath new
>> path: 'm 3.96875,9.2604167 h 31.75 V 25.135417 C 22.489583,23.8125
>> 17.197917,34.395833 3.96875,27.78125 Z';
>> fillColor: Color red;
>> borderColor: Color black;
>> borderWidth: 1.2;
>> scale: 1.4) elementsOn: myElems.
>> view addAll: shapes.
>> shapes @ (RTLabeled new text: 'hello').
>> RTEdgeBuilder new
>> view: view;
>> shape: (RTArrowedLine new
>> color: Color black;
>> yourself);
>> elements: shapes;
>> connectFrom: 1 to: 2.
>> RTTreeLayout new
>> verticalGap: 30;
>> horizontalGap: 30;
>> applyOn: shapes.
>> view inspect.
>> -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
>>
>> Here is the result
>> <Screenshot 2018-08-28 15.32.19.png>
>>
>>
>> Cheers,
>> Alexandre
>>
>>
>>> On Aug 23, 2018, at 2:31 PM, Hernán Morales Durand
<hernan.morales(a)gmail.com> wrote:
>>>
>>> Hi,
>>>
>>> When connecting two composite shapes with RTEdgeBuilder, the connector
>>> position loose its center over the connecting shapes.
>>>
>>> It's easier to explain with two scripts:
>>>
>>> This one looks good, the connector (RTArrowedLine) is centered:
>>>
>>> | view shapes myElems |
>>> view := RTView new.
>>> myElems := 1 to: 2.
>>> shapes := (RTSVGPath new
>>> path: 'm 3.96875,9.2604167 h 31.75 V 25.135417 C 22.489583,23.8125
>>> 17.197917,34.395833 3.96875,27.78125 Z';
>>> fillColor: Color red;
>>> borderColor: Color black;
>>> borderWidth: 1.2;
>>> scale: 1.4) elementsOn: myElems.
>>> view addAll: shapes.
>>> RTEdgeBuilder new
>>> view: view;
>>> shape: (RTArrowedLine new
>>> color: Color white;
>>> yourself);
>>> elements: shapes;
>>> connectFrom: 1 to: 2.
>>> RTTreeLayout new
>>> verticalGap: 30;
>>> horizontalGap: 30;
>>> applyOn: shapes.
>>> view inspect.
>>>
>>> However when adding a label in a composite, both label and arrow looks
shifted:
>>>
>>> | view shape shapes myElems |
>>> view := RTView new.
>>> myElems := 1 to: 2.
>>> shape := RTCompositeShape new
>>> add: (RTLabel new text: 'Test');
>>> add: (RTSVGPath new
>>> path: 'm 3.96875,9.2604167 h 31.75 V 25.135417 C
>>> 22.489583,23.8125 17.197917,34.395833 3.96875,27.78125 Z';
>>> fillColor: Color red;
>>> borderColor: Color black;
>>> borderWidth: 1.2;
>>> scale: 1.4);
>>> vertical;
>>> yourself.
>>> shapes := shape elementsOn: myElems.
>>> view addAll: shapes.
>>> RTEdgeBuilder new
>>> view: view;
>>> shape: (RTArrowedLine new
>>> color: Color white;
>>> yourself);
>>> elements: shapes;
>>> connectFrom: 1 to: 2.
>>> RTTreeLayout new
>>> verticalGap: 30;
>>> horizontalGap: 30;
>>> applyOn: shapes.
>>> view inspect.
>>>
>>> Any idea how to align these shapes?
>>>
>>> Cheers,
>>>
>>> Hernán
>>> _______________________________________________
>>> Moose-dev mailing list
>>> Moose-dev(a)list.inf.unibe.ch
>>>
https://www.list.inf.unibe.ch/listinfo/moose-dev
>>
>>
>> _______________________________________________
>> Moose-dev mailing list
>> Moose-dev(a)list.inf.unibe.ch
>>
https://www.list.inf.unibe.ch/listinfo/moose-dev
>>
>>
>> <Align_Test2.png>_______________________________________________
>> Moose-dev mailing list
>> Moose-dev(a)list.inf.unibe.ch
>>
https://www.list.inf.unibe.ch/listinfo/moose-dev
>
> _______________________________________________
> Moose-dev mailing list
> Moose-dev(a)list.inf.unibe.ch
>
https://www.list.inf.unibe.ch/listinfo/moose-dev
<TRCompositeShape-alignCenter.st><RTCompositeShape-#RT-Extensions.st><RTAlignment-#RT-Extensions.st><Multiple_Composites.png><Two_Composites.png>_______________________________________________
Moose-dev mailing list
Moose-dev(a)list.inf.unibe.ch
https://www.list.inf.unibe.ch/listinfo/moose-dev