Development/Tutorials/Kross/ActionCollections

Basics

Kross::ActionCollections, much like KActionCollections, represent a group of actions. A Kross::ActionCollections is used to group KRoss::Actions together and collectively give them an icon, description, name and display text.

You can create a new Kross::ActionCollection like this:
actionCollection = new Kross::ActionCollection("actioncollection",Kross::Manager::self().actionCollection());
The first parameter, "actioncollection" in the example above, can be replaced by any name you want and should be useful and reasonably chosen. Passing in the collection returned by Kross::Manager::self()->actionCollection() defines that this is a toplevel collection. This is usefull if you want to have sub collections for different types of Kross::Actions.

Using it

Now that we created a Kross::ActionCollection its time to populate it with Kross::Actions. Therefore we create some actions which can all have different code and interpreters for them selfs.
Kross::Action *action1 = new Kross::Action(actionCollection,QUrl("path/to/some/snippet.py"));
Kross::Action *action2 = new Kross::Action(actionCollection,QUrl("path/to/some/snippet.js"));
Kross::Action *action3 = new Kross::Action(actionCollection,QUrl("path/to/some/snippet.rb"));
Each time we declared these Actions we gave it as first Argument the Kross::ActionCollection this Action is a child of and a path to a file.
NOTE: It doesn't need to be a valid file since you can set the code content later on any way.

Once we have declared the Kross::Actions we can either access them by their fully qualified name (the second Argument in the constructor) :
actioncollection->action("path/to/some/snippet.js");
or iterate through all Kross::Actions and trigger those that match a pattern for example:
foreach(Kross::Action* myAction, actioncollection->actions()) {