Hi Rob,
I haven't done this in a while but I believe you need to do this:
- Create a subclass of OBCommand. This class will be responsible for
indicating when the menu option should be shown, how it is shown and how
it should be performed. I think there's more, but I don't know what.
- Implement #isActive to indicate when your menu option should be shown.
For example, I think this will limit you to class side methods:
isActive
^ (target isKindOf: OBMethodNode)
and: [(target classNode isKindOf: OBMetaclassNode)
and: [requestor isSelected: target]]
You may want to add a constraint to limit this to unary selectors
otherwise you'll have to prompt for arguments.
- Implement #execute. This will actually do the work. If you're just
dealing with unary methods then something like this is probably what you
need:
execute
target theNonMetaClass perform: target selector
So here you could prompt for arguemnts, inspect the result, do whatever.
- Implement #label, #longDescription, #group, #keystroke to control the
display of your menu. Have a look at the other OBCommand subclasses for
hints.
- Link up your command by adding a cmdXXX method to OBCodeBrowser.
Basically you need a method like:
cmdClassMethodDoIt
^MyCmdClassMethodDoIt
Have a look at the "commands" protocol to see what I mean.
The next browser you open should have your new menu option. There are
many existing OBCommand subclasses you can examine for inspiration.
Hope this helps,
Zulq.
Rob Rothwell wrote:
> I thought it would be nice to add a right click option to class methods
> that "ran" that method...for use with examples and such.
>
> So, for example, instead of typing "MyClass exampleThisOrThat," when
> browsing you could just right click and "run it."
>
> Any tips on where to start? I have no knowledge of OB...
>
> Rob
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Beginners mailing list
>
[hidden email]
>
http://lists.squeakfoundation.org/mailman/listinfo/beginners_______________________________________________
Beginners mailing list
[hidden email]
http://lists.squeakfoundation.org/mailman/listinfo/beginners