Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Demonstrates how to list the kits installed in Modo, and query the version numbers. This mostly is a wrapper for the kit.version command.
#python
'''
Demonstrates how to list the kits installed in Modo, and query the version
numbers. This mostly is a wrapper for the kit.version command.
'''
import lx
import lxifc
import lxu
SERVER_NAME = "kit.dump"
class KitList:
def __init__(self):
self.kits = []
'''
Spawn the kit.version command. SpawnFromString returns the
command as a tuple - we care about the third argument which is
the command object.
'''
command = lx.service.Command().SpawnFromString("kit.version")[2]
'''
Query the command for an AttributesUI interface, and read the
ValueHints for the first argument - the name argument.
'''
attributesUI = lx.object.AttributesUI(command)
valueHints = attributesUI.UIValueHints(0)
'''
Query the popup for the value hints object - this returns the
number of elements in the popup, and the name for each one.
We store the name, so we can use it to perform a lookup later.
'''
count = valueHints.PopCount()
for i in range(count):
self.kits.append(valueHints.PopInternalName(i))
def Count(self):
return len(self.kits)
def Name(self, index):
if len(self.kits) <= index:
raise IndexError()
return self.kits[index]
def Version(self, index):
if len(self.kits) <= index:
raise IndexError()
return lx.eval("kit.version name:{%s} version:?" % self.kits[index])
class Command(lxu.command.BasicCommand):
def __init__(self):
lxu.command.BasicCommand.__init__(self)
def cmd_Flags(self):
return 0
def basic_Execute(self, msg, flags):
kits = KitList()
count = kits.Count()
for i in range(count):
print "Name: {} - Version: {}".format(kits.Name(i), kits.Version(i))
lx.bless(Command, SERVER_NAME)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment