Enable hackish support for Argument.count == -1 (by setting it to 3)
authorW. Trevor King <wking@drexel.edu>
Tue, 10 Aug 2010 14:59:24 +0000 (10:59 -0400)
committerW. Trevor King <wking@drexel.edu>
Tue, 10 Aug 2010 14:59:24 +0000 (10:59 -0400)
hooke/ui/gui/__init__.py
hooke/ui/gui/panel/propertyeditor.py

index f09e672..6d17a7c 100644 (file)
@@ -330,11 +330,14 @@ class HookeFrame (wx.Frame):
                 index = int(name[len(arg.name):])
                 args[arg.name][index] = value
             for arg in command.arguments:
-                if arg.count != 1 and arg.name in args:
+                count = arg.count
+                if hasattr(arg, '_display_count'):  # support HACK in props_from_argument()
+                    count = arg._display_count
+                if count != 1 and arg.name in args:
                     keys = sorted(args[arg.name].keys())
-                    assert keys == range(arg.count), keys
+                    assert keys == range(count), keys
                     args[arg.name] = [args[arg.name][i]
-                                      for i in range(arg.count)]
+                                      for i in range(count)]
         self.log.debug('executing %s with %s' % (command.name, args))
         self.inqueue.put(CommandMessage(command, args))
         results = []
index 5cc4469..95233fc 100644 (file)
@@ -43,8 +43,10 @@ def props_from_argument(argument, curves=None, playlists=None):
     type = argument.type
     if type in ['driver']:  # intentionally not handled (yet)
         return None
-    if argument.count == -1:
-        raise NotImplementedError(argument)  # TODO: maybe just set count to 1?
+    count = argument.count
+    if count == -1:
+        count = 3  # HACK: should allow unlimited entries (somehow...)
+        argument._display_count = count  # suport HACK in execute_command()
     kwargs = {
         #'label':argument.name,
         'default':argument.default,
@@ -64,10 +66,10 @@ def props_from_argument(argument, curves=None, playlists=None):
         kwargs['choices'] = choices
     else:
         raise NotImplementedError(argument.type)
-    if argument.count == 1:
+    if count == 1:
         labels = [argument.name]
     else:
-        labels = ['%s %d' % (argument.name, i) for i in range(argument.count)]
+        labels = ['%s %d' % (argument.name, i) for i in range(count)]
     return [(label, _class(label=label, **kwargs)) for label in labels]