Commands =========== This example covers how to create and manage command in Guerilla. Creating a new command ---------------------- Let's implement a 'print all plugs' command .. code-block:: python from guerilla import Modifier, Document, pwarning from guerilla import command, Node class Printplugs(command): @staticmethod def isenabled(luaObj, window): d = Document() sel = d.selection() return True if sel and list(sel[0].plugs()) else False @staticmethod def action(luaObj, window, x, y, suffix): d = Document() sel = d.selection() if sel: print '%s plugs:' % sel[0].name for c in sel[0].plugs(): print c.name cmd = Printplugs('Print plugs') cmd.install('Help', 'Debug') Defining commands at startup --------------------------- For all users: * Add your py scripts to the Guerilla plugins folder (Ask you system administrator if you don't know its location) For the current user: * Add a folder with your py scripts in Preferences -> Directories -> User Plugins .. note:: Guerilla will print a message before sourcing a script ("Execute file [...]/foo.py") Dealing with commands --------------------- Guerilla already comes with a bunch of commands .. code-block:: python from guerilla import command cdict = command.getshortcommands() for k in sorted(cdict.keys()): print k, cdict[k] Let's use one .. code-block:: python from guerilla import Modifier, command with Modifier() as mod: n1 = mod.createnode('foo'); n2 = mod.createnode('bar') mod.select([n1, n2]) command.executebyshortname('Group') Monkey patching --------------- What about implementing an alternate 'About Guerilla Render' command? .. code-block:: python from guerilla import command, pwarning, lua, version class PrintAbout(command): @staticmethod def action(luaObj, window, x, y, suffix): v = version () pwarning('== Guerilla Render Version %s ==' % v) cmd = PrintAbout('About Guerilla Render') cmd.install('Help') Going further ------------- * Try the next example in :doc:`index` .. seealso:: :class:`guerilla.command` for details