package jalview.ext.pymol;
+import java.awt.Color;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
import jalview.structure.AtomSpecModel;
import jalview.structure.StructureCommand;
import jalview.structure.StructureCommandI;
import jalview.structure.StructureCommandsBase;
-import java.awt.Color;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* A class that generates commands to send to PyMol over its XML-RPC interface.
* <p>
@Override
public StructureCommandI openCommandFile(String path)
{
- // where is this documented by PyMol?
- // todo : xml-rpc answers 'method "@" is not supported'
- return new StructureCommand("@" + path); // should be .pml
+ // https://pymolwiki.org/index.php/Run
+ return new StructureCommand("run", path); // should be .pml
}
@Override
return new StructureCommand("load", file);
}
+ /**
+ * Overrides the default implementation (which generates concatenated
+ * commands) to generate one per colour (because the XML-RPC interface to
+ * PyMOL only accepts one command at a time)
+ *
+ * @param colourMap
+ * @return
+ */
+ @Override
+ public List<StructureCommandI> colourBySequence(
+ Map<Object, AtomSpecModel> colourMap)
+ {
+ List<StructureCommandI> commands = new ArrayList<>();
+ for (Object key : colourMap.keySet())
+ {
+ Color colour = (Color) key;
+ final AtomSpecModel colourData = colourMap.get(colour);
+ commands.add(getColourCommand(colourData, colour));
+ }
+
+ return commands;
+ }
+
}