Merge branch 'develop' into feature/JAL-3390hideUnmappedStructure
[jalview.git] / src / jalview / ext / pymol / PymolManager.java
index e3b913b..26c780d 100644 (file)
@@ -108,17 +108,6 @@ public class PymolManager
     return launched;
   }
 
-  public void exitPymol()
-  {
-    if (isPymolLaunched() && pymolProcess != null)
-    {
-      sendCommand(new StructureCommand("quit"), false);
-    }
-    pymolProcess = null;
-    // currentModelsMap.clear();
-    this.pymolXmlRpcPort = 0;
-  }
-
   /**
    * Sends the command to Pymol; if requested, tries to get and return any
    * replies, else returns null
@@ -211,13 +200,13 @@ public class PymolManager
     return sb.toString();
   }
 
-  public boolean launchPymol()
+  public Process launchPymol()
   {
     // todo pull up much of this
     // Do nothing if already launched
     if (isPymolLaunched())
     {
-      return true;
+      return pymolProcess;
     }
 
     String error = "Error message: ";
@@ -244,20 +233,28 @@ public class PymolManager
         break;
       } catch (Exception e)
       {
-        // pPymol could not be started using this path
+        // Pymol could not be started using this path
         error += e.getMessage();
       }
     }
-    if (error.length() == 0)
+
+    if (pymolProcess != null)
     {
       this.pymolXmlRpcPort = getPortNumber();
-      System.out.println(
-              "PyMOL XMLRPC started on port " + pymolXmlRpcPort);
-      return (pymolXmlRpcPort > 0);
+      if (pymolXmlRpcPort > 0)
+      {
+        Cache.log.info("PyMOL XMLRPC started on port " + pymolXmlRpcPort);
+      }
+      else
+      {
+        error += "Failed to read PyMOL XMLRPC port number";
+        Cache.log.error(error);
+        pymolProcess.destroy();
+        pymolProcess = null;
+      }
     }
 
-    // logger.warn(error);
-    return false;
+    return pymolProcess;
   }
 
   private int getPortNumber()
@@ -295,9 +292,8 @@ public class PymolManager
       }
     } catch (Exception e)
     {
-      System.err.println(
-              "Failed to get REST port number from " + responses + ": "
-              + e.getMessage());
+      Cache.log.error("Failed to get REST port number from " + responses
+              + ": " + e.getMessage());
       // logger.error("Failed to get REST port number from " + responses + ": "
       // + e.getMessage());
     } finally
@@ -311,10 +307,10 @@ public class PymolManager
     }
     if (port == 0)
     {
-      System.err.println("Failed to start PyMOL with XMLRPC, response was: "
+      Cache.log.error("Failed to start PyMOL with XMLRPC, response was: "
               + responses);
     }
-    System.err.println("PyMOL started with XMLRPC on port " + port);
+    Cache.log.error("PyMOL started with XMLRPC on port " + port);
     return port;
   }