Hi Peter,
I tried to not update the model, when the text change because model can be more that a simple String.
In RTEditableLabel you can find these methods to handle events based on Rubric-events.
*onPressingEnter:* *onKeystroke:*
By other hand you can check the example *editableSearchField.*
Cheers, Milton
2015-02-24 19:36 GMT-03:00 Alexandre Bergel alexandre.bergel@me.com:
Milton?
Alexandre
On Feb 13, 2015, at 9:22 AM, Peter Uhnák i.uhnak@gmail.com wrote:
Yes!
This is exactly what I was looking for... I've already started
integrating it. :)
Few things:
- Text is not updated as expected
v := RTView new.
shape := RTEditableLabel new. shape text: 'Old Text'. el := shape element.
v add: el @ RTDraggable. v open.
el shape text: 'New Text'. "this is not propagated as it would with
RTLabel"
el update. v signalUpdate.
This could be circumvented by RTEditableLabel>>textFor: not making check
whether the text is already set and instead set it always (probably not the best way)
- Model is not updated
This is perhaps broader issue and looking at
RTLabelTest>>testEditableLabel it seems like intended behavior.
Considering that going from shape to model to change the text may not be
straightforward (in the test the model is number, not string, so casting would be required)...
perhaps there could be either callback (whenTextChanged: aBlock,
although that sounds very Spec-y), or using an event -
e.g. "TRShapeEvent subclass: #TRTextChanged". Having a shape event
sounds at least to me much more appropriate.
There are also couple minor things, like the way it is invoked (I would
prefer keyboard shortcuts... e.g. <esc> to cancel, <enter> to confirm (for single-line), <f2> to edit... but that is just my muscle memory from Modelio (GEF Eclipse)).
Speaking of single-line I really like the distinction, since very often
I want to keep labels always single-line.
Thanks!
Peter
On Thu, Feb 12, 2015 at 9:25 PM, milton mamani akevalion@gmail.com
wrote:
Hi Peter,
Can you get the last Roassal Version and try the next piece of code?
.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.= | v shape | v := RTView new. 1 to: 20 do: [ :i | shape := RTEditableLabel new. shape text: 'Red Yellow Green'. v add: shape element@RTDraggable. ]. RTGridLayout on: v elements.
v open
.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=
or simple line
.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=
| v shape | v := RTView new. 1 to: 20 do: [ :i | shape := RTEditableLabel new. shape text: 'Hello World'. v add: shape element@RTDraggable. ]. RTGridLayout on: v elements. v open
.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=.=
Press double-click over one element to edit the text of that shape.
Please, tell me what do you think about this.
Cheers, Milton
2015-02-02 14:19 GMT-03:00 Alexandre Bergel alexandre.bergel@me.com:
Hi Peter!
We will have a look at your code.
Cheers, Alexandre
Le 1 févr. 2015 à 18:21, Peter Uhnák i.uhnak@gmail.com a écrit :
Hi,
is it possible to embed (any) editable text field inside Roassal?
I managed to add the editor morph inside Trachel's athens canvas,
however there is no way I can access it... my guess is that TRMorph takes all the events, or drawing the morph on the canvas destroys something.
I tried it with PluggableTextFieldMorph (shows the border of the edit
field, but no text), and TxTextEditorMorph (shows text).
Is there any way around this? Adding the morph inside AthensWrapMorph
works correctly, so my guess is that TRMorph must be doing something... perhaps I should also add it as a submorph of TRMorph somehow?
My testing code follows:
"opening the canvas and adding custom shape" trCanvas := TRCanvas new.
text := SBEditableTextShape new. trCanvas addShape: text.
trCanvas open.
"content of SBEditableTextShape - same as the attachement" 'From Pharo4.0 of 18 March 2013 [Latest update: #40470] on 1 February
2015 at 10:13:04.069249 pm'!
TRShape subclass: #SBEditableTextShape instanceVariableNames: 'txMorph txModel wrapMorph textMorph' classVariableNames: '' poolDictionaries: '' category: '_Sandbox'!
!SBEditableTextShape methodsFor: 'drawing' stamp: 'PeterUhnak 2/1/2015
22:10'!
drawOn: aCanvas " aCanvas fullDrawMorph: textMorph." aCanvas fullDrawMorph: txMorph.! !
!SBEditableTextShape methodsFor: 'initialization' stamp: 'PeterUhnak
2/1/2015 22:07'!
initialize | string | super initialize. string := 'quick brown fox jumps over the lazy dog'.
txModel := string asTxModel. txMorph := TxTextEditorMorph text: txModel. txMorph extent: 150 @ 50. textMorph := PluggableTextFieldMorph new. textMorph extent: 150 @ 50. textMorph setText: string. textMorph ghostText: 'ghost text'.! !
Any help is appreciated, Peter
<SBEditableTextShape.st> _______________________________________________ Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev