With Spec, it is really easy to make some simple widgets:

"you have a class and a method?"
class:=Morph.
method:=class>>#openInWorld.
"want some textmorp?"
code := TextModel new.
code text:method sourceCode.
"with styling?"
code aboutToStyle:true.
"in context of the class"
code behavior:class.
"do it!"
code openWithSpec.
"more? save on accept..."
code acceptBlock:[:text |
������ class compile:text notifying:nil.
������ ].



Composing models:

class:=Morph.
method:=class>>#openInWorld.
composed:= DynamicComposableModel new.
composed instantiateModels: #(code TextModel method TextInputFieldModel).
composed code text:method sourceCode.
composed method text: method selector asString.
composed code aboutToStyle:true.
composed code behavior:class.
composed code acceptBlock:[:text |
������ class compile:text notifying:nil.
������ ].
composed method acceptBlock:[:text |
������ method:=class methodDict at:text asSymbol.
composed code text:method sourceCode.
������ ].
composed openWithSpecLayout:(
SpecLayout composed
newColumn:[:r | r
add: #method height:25;
add: #code];
yourself).


or search for DynamicComposableModel in this mailing list or
look at some other basic Spec examples in Pharo:
������ | cb |
������ cb := ClassMethodBrowser new.
������ cb openWithSpec.
������ cb classes: Smalltalk allClasses.


������ | si |
������ si := MethodBrowser new.
������ si openWithSpec.
������ si methods: Object methodDict values








2014-05-15 9:29 GMT+02:00 Hilaire Fernandes <hilaire.fernandes@gmail.com>:
Thierry,

I was not aware it could be that short. Yes it will be nice.
All in all:
- one GUI tool to edit an existing script (so no visibility on the other
methods of the class)
- one GUI tool to create a method (with visibility to the other method
of the class, as possible examples)


Hilaire

Le 15/05/2014 09:18, Goubier Thierry a ��crit :

> Have you considered controlling the user experience directly to let him
> focus only on the method to create or edit?
>
> Creating a text editor window in coding mode with the ability to edit or
> create a method in a preset class is not much work; I'd say around 20
> lines with the default menu and an accept which compiles.
>
> If you want complete control on the menu (i.e. a bit more polish than
> the default and control over which shortcuts are active), I can extract
> what I've done for mine: it's a minimal command objects API to couple
> menus and shortcuts inspired by the one of the OmniBrowser (of Pharo
> 1.4). In there, a typical command with its
> shortcut/label/icon/activation status is about five lines long.


--
Dr. Geo http://drgeo.eu