On Sun, Mar 24, 2013 at 8:55 PM, Tudor Girba <tudor@tudorgirba.com> wrote:
Hi,

I am trying to redefine shortcuts such as Cmd+s for an instance of PluggableTextMorph, but I cannot find a way.

Now that we have Kemappings in the image, I see that Cmd+s is defined in:
TextMorph>>buildTextEditorKeymapsOn: aBuilder
� � � � <keymap>

� � � � (aBuilder shortcut: #accept)
� � � � � � � � category: #TextMorph
� � � � � � � � default: $s ctrl win | $s ctrl unix | $s command mac
� � � � � � � � do: [ :morph | morph acceptContents ].

� � � � aBuilder attachShortcutCategory: #TextMorph to: TextMorph.


Nice, but this defines a behavior that is global to the TextMorph class.

The Keymappings extensions from Morph do allow some degree of morph specific shortcuts, but it seems that the only thing I can do is:
- create a category with my keymappings; the category must have a name
- registered it the dispatcher
- tell the morph to attach this category by passing the name of the category

I could not get a code that sets this up because I stumbled across too much symbol-based indirection. Can anyone help?

You can also try to do:

aMorph on: $s cmd do: [ "my custom code" ].

The only thing is that PluggableTextmorph+friends are a bit of a mess, so the code that initializes the shortcuts is here:

PluggableTextMorph>>configureTextMorph: aTextMorph
"I prepare a text morph for use"
aTextMorph setEditView: self.
scroller addMorph: aTextMorph.
aTextMorph�
autoAccept: self autoAccept;
selectionColor: self selectionColor.
aTextMorph editor installKeymappingsOn: self.

There you can customize...

Tell me if that helps!
Guille

Cheers,
Doru


--
www.tudorgirba.com

"In a world where everything is moving ever faster,
one might have better chances to win by moving slower."