[sikuli] 295/385: revised/fixed the stout redirect to IDE message area

Gilles Filippini pini at moszumanska.debian.org
Sun Jun 29 19:26:25 UTC 2014


This is an automated email from the git hooks/post-receive script.

pini pushed a commit to tag upstream/1.1.0_beta1
in repository sikuli.

commit 59e422a2eac1aaf4e0d52078f1754af1cfdc8473
Author: Raimund Hocke <info at its-me-raiman.de>
Date:   Mon Feb 24 17:53:18 2014 +0100

    revised/fixed the stout redirect to IDE message area
---
 .../java/org/sikuli/ide/EditorConsolePane.java     | 42 ++++++++++++----------
 .../org/sikuli/scriptrunner/JRubyScriptRunner.java | 13 ++++---
 .../sikuli/scriptrunner/JythonScriptRunner.java    |  7 ++--
 3 files changed, 33 insertions(+), 29 deletions(-)

diff --git a/IDE/src/main/java/org/sikuli/ide/EditorConsolePane.java b/IDE/src/main/java/org/sikuli/ide/EditorConsolePane.java
index 3d53234..a6ea9cc 100755
--- a/IDE/src/main/java/org/sikuli/ide/EditorConsolePane.java
+++ b/IDE/src/main/java/org/sikuli/ide/EditorConsolePane.java
@@ -26,6 +26,7 @@ import javax.swing.*;
 import javax.swing.text.*;
 import javax.swing.text.html.*;
 import org.sikuli.basics.Debug;
+import org.sikuli.basics.IScriptRunner;
 import org.sikuli.basics.SikuliX;
 
 public class EditorConsolePane extends JPanel implements Runnable {
@@ -39,11 +40,11 @@ public class EditorConsolePane extends JPanel implements Runnable {
       ENABLE_IO_REDIRECT = false;
     }
   }
-  final static int NUM_PIPES = 2;
+  private int NUM_PIPES;
   private JTextPane textArea;
-  private Thread[] reader = new Thread[NUM_PIPES];
+  private Thread[] reader;
   private boolean quit;
-  private final PipedInputStream[] pin = new PipedInputStream[NUM_PIPES];
+  private PipedInputStream[] pin;
   Thread errorThrower; // just for testing (Throws an Exception at this Console
 
   public EditorConsolePane() {
@@ -59,26 +60,31 @@ public class EditorConsolePane extends JPanel implements Runnable {
     add(new JScrollPane(textArea), BorderLayout.CENTER);
 
     if (ENABLE_IO_REDIRECT) {
+			int npipes = 2;
+			NUM_PIPES = npipes * SikuliIDE.scriptRunner.size();
+			pin = new PipedInputStream[NUM_PIPES];
+			reader = new Thread[NUM_PIPES];
       for (int i = 0; i < NUM_PIPES; i++) {
         pin[i] = new PipedInputStream();
       }
 
-      if (SikuliX.getScriptRunner("jython", null, null).doSomethingSpecial("redirect", pin)) {
-        Debug.log(2, "EditorConsolePane: init: stdout/stderr redirected to console");
-        quit = false; // signals the Threads that they should exit
-
-        // Starting two seperate threads to read from the PipedInputStreams
-        for (int i = 0; i < NUM_PIPES; i++) {
-          reader[i] = new Thread(this);
-          reader[i].setDaemon(true);
-          reader[i].start();
-        }
-      } else {
-        Debug.error("EditorConsolePane: init: Redirect to console not posssible");
-      }
-
+			int irunner = 0;
+			for (IScriptRunner srunner : SikuliIDE.scriptRunner.values()) {
+				if (srunner.doSomethingSpecial("redirect", pin)) {
+					Debug.log(2, "EditorConsolePane: stdout/stderr redirected to console"
+									+ " for " + srunner.getName());
+					quit = false; // signals the Threads that they should exit
+
+					// Starting two seperate threads to read from the PipedInputStreams
+					for (int i = irunner * npipes; i < irunner * npipes + npipes; i++) {
+						reader[i] = new Thread(this);
+						reader[i].setDaemon(true);
+						reader[i].start();
+					}
+					irunner++;
+				}
+			}
     }
-
   }
 
   private void appendMsg(String msg) {
diff --git a/JRuby/src/main/java/org/sikuli/scriptrunner/JRubyScriptRunner.java b/JRuby/src/main/java/org/sikuli/scriptrunner/JRubyScriptRunner.java
index e854494..8138554 100755
--- a/JRuby/src/main/java/org/sikuli/scriptrunner/JRubyScriptRunner.java
+++ b/JRuby/src/main/java/org/sikuli/scriptrunner/JRubyScriptRunner.java
@@ -178,8 +178,7 @@ public class JRubyScriptRunner implements IScriptRunner {
 	@Override
 	public boolean doSomethingSpecial(String action, Object[] args) {
 		if ("redirect".equals(action)) {
-			doRedirect((PipedInputStream[]) args);
-			return true;
+			return doRedirect((PipedInputStream[]) args);
 		} else {
 			return false;
 		}
@@ -319,11 +318,11 @@ public class JRubyScriptRunner implements IScriptRunner {
 					errorLine = line.getLineNumber();
 					errorClass = PY_RUNTIME;
 					this.errorText = thr.getMessage();
-                                        
-                                        Pattern sikType = 
+
+                                        Pattern sikType =
                                                 Pattern.compile(
                                                         "(?<=org.sikuli.script.)(.*)(?=:)");
-                                        Matcher mSikType = 
+                                        Matcher mSikType =
                                                 sikType.matcher(this.errorText);
 
 					if (mSikType.find()) {
@@ -479,7 +478,7 @@ public class JRubyScriptRunner implements IScriptRunner {
 			System.setOut(ps);
 			interpreter.setOutput(ps);
 		} catch (Exception e) {
-			log(-1, "doRedirect: Couldn't redirect STDOUT\n%s", e.getMessage());
+			log(-1, "%s: redirect STDOUT: %s", getName(), e.getMessage());
 			return false;
 		}
 		try {
@@ -488,7 +487,7 @@ public class JRubyScriptRunner implements IScriptRunner {
 			System.setErr(ps);
 			interpreter.setError(ps);
 		} catch (Exception e) {
-			log(-1, "doRedirect: Couldn't redirect STDERR\n%s", e.getMessage());
+			log(-1, "%s: redirect STDERR: %s", getName(), e.getMessage());
 			return false;
 		}
 		return true;
diff --git a/Jython/src/main/java/org/sikuli/scriptrunner/JythonScriptRunner.java b/Jython/src/main/java/org/sikuli/scriptrunner/JythonScriptRunner.java
index 978e154..7f8b222 100644
--- a/Jython/src/main/java/org/sikuli/scriptrunner/JythonScriptRunner.java
+++ b/Jython/src/main/java/org/sikuli/scriptrunner/JythonScriptRunner.java
@@ -499,8 +499,7 @@ public class JythonScriptRunner implements IScriptRunner {
   @Override
   public boolean doSomethingSpecial(String action, Object[] args) {
     if ("redirect".equals(action)) {
-      doRedirect((PipedInputStream[]) args);
-      return true;
+      return doRedirect((PipedInputStream[]) args);
     } else if ("convertSrcToHtml".equals(action)) {
       convertSrcToHtml((String) args[0]);
       return true;
@@ -606,7 +605,7 @@ public class JythonScriptRunner implements IScriptRunner {
       System.setOut(ps);
       py.setOut(ps);
     } catch (Exception e) {
-      log(-1, "doRedirect: Couldn't redirect STDOUT\n%s", e.getMessage());
+      log(-1, "%s: redirect STDOUT: %s", getName(), e.getMessage());
       return false;
     }
     try {
@@ -615,7 +614,7 @@ public class JythonScriptRunner implements IScriptRunner {
       System.setErr(ps);
       py.setErr(ps);
     } catch (Exception e) {
-      log(-1, "doRedirect: Couldn't redirect STDERR\n%s", e.getMessage());
+      log(-1, "%s: redirect STDERR: %s", getName(), e.getMessage());
       return false;
     }
     return true;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/sikuli.git



More information about the pkg-java-commits mailing list