Adding menu options to Omnibrowser

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Adding menu options to Omnibrowser

Rob Rothwell
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
Reply | Threaded
Open this post in threaded view
|

Re: Adding menu options to Omnibrowser

Zulq Alam-2
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