[clam-devel] Network Editor console interaction through Python
David García Garzón
david.garcia at barcelonamedia.org
Wed Nov 3 11:22:31 PDT 2010
On Monday 25 October 2010 00:01:23 Xavier Serra wrote:
> Hi guys,
> the next part of my project is to integrate a console in Network Editor
> that will allow manipulation (and creation) of networks interactively
> through commands. Before starting to code the console I need to decide how
> will the API be so I'm sending here a first proposal to see what you guys
> think (this is mostly for David, but anyone is welcome to say his thing)
>
> Another cool thing we talked about was tab completion, like bash and
> ipython. I tried to show how this function worked in the API example but
> it complicated the whole thing, so I removed it.
>
> Bye!
Follows the resulting python interface after a meeting with Xavi, Natanael and
me. I included last minute not agreed changes for discusion, namely:
port/control.peers, proc.configured flag, the '>' connection among
processings, and the interfaces with "implicit network??".
- General controls
# with an implicit network would be free functions.
network.load("filename.clamnetwork")
network.import("<Network> .... </Network>")
network.save()
network.save("filename")
- Transport
# with an implicit network would be free functions.
network.play()
network.stop()
network.pause()
network.isStopped()
network.isPlaying()
network.isReady()
network.whyIsNotReady # TOREVIEW
- Processings
proc = network.add("ProcessingType")
proc = network.add("name", "ProcessingType")
proc = add("ProcessingType") # implicit network
proc = add("name", "ProcessingType") # implicit network
network.remove("name")
remove(proc) # implicit network alternative
proc.remove() # alternative
ports = proc._outports # connections is an iterable
ports = proc._inports # connections is an iterable
controls = proc._outcontrols # connections is an iterable
controls = proc._incontrols # connections is an iterable
proc.rename("newname")
proc2 = proc.clone()
proc2 = proc.clone("name2")
- Processing Configuration
# Changes on proc._config has no effect on the processing
# until 'reconfigure' is called
config = Config("ProcessingType")
proc.ConfigField = newvalue
proc["ConfigField"] = newvalue
proc._config["ConfigField"] = newvalue
proc._config.ConfigField = newvalue
# analog for getters
proc.updateConfig(
ConfigField = value1,
ConfigField2 = value2,
)
proc.config=config
proc.reconfigure()
proc.configured
- Obtaining ports/controls
proc.Output
proc['Output']
proc._outports['Output']
proc._outports.Output
proc._outports[4] # Zero based to be consistent with python indexing
proc.Output.type # not sure what to return
proc.Output.name
proc.Output.index
proc.Output.peers # returns a list of connected peers
- Connecting
proc._outports.connect(proc2) # Connects all feasible ports
proc._outcontrols.connect(proc2) # Connects all feasible controls
proc > proc2 # shorthand for ._outports.connect
proc.Output.connect(proc2.Input)
proc.Output > proc2.Input # shorthand for .connect
- Disconnect controls/ports
proc.Output.disconnect(proc2.Input)
proc.Output.disconnect() # any connected
proc.Input.disconnect() # any connected
for port in proc._inports : port.disconnect()
More information about the clam-devel
mailing list