[sikuli] 310/385: more for multi scripting support - added a final cleaner for the temp folder in IDE
Gilles Filippini
pini at moszumanska.debian.org
Sun Jun 29 19:26:27 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 3a92e6466b185c5ee945826db89d4192f2cc3aec
Author: Raimund Hocke <rmhdevelop at me.com>
Date: Fri Feb 28 19:04:29 2014 +0100
more for multi scripting support - added a final cleaner for the temp folder in IDE
---
.../src/main/java/org/sikuli/basics/Settings.java | 140 +++++++++++++++------
IDE/src/main/java/org/sikuli/ide/SikuliIDE.java | 63 ++++------
2 files changed, 130 insertions(+), 73 deletions(-)
diff --git a/Basics/src/main/java/org/sikuli/basics/Settings.java b/Basics/src/main/java/org/sikuli/basics/Settings.java
index 09c5db7..a53a0cd 100644
--- a/Basics/src/main/java/org/sikuli/basics/Settings.java
+++ b/Basics/src/main/java/org/sikuli/basics/Settings.java
@@ -7,12 +7,17 @@
package org.sikuli.basics;
import java.io.File;
+import java.io.FilenameFilter;
import java.net.InetAddress;
import java.net.Proxy;
+import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.ServiceLoader;
import java.util.prefs.Preferences;
public class Settings {
@@ -24,6 +29,7 @@ public class Settings {
private static String me = "Settings";
private static int lvl = 3;
+
private static void log(int level, String message, Object... args) {
Debug.logx(level, level < 0 ? "error" : "debug",
me + ": " + message, args);
@@ -77,8 +83,7 @@ public class Settings {
public static String SikuliVersionIDE;
public static String SikuliVersionScript;
public static final String versionMonth = "January 2014";
- public static final String libOpenCV = "libopencv_java248";
-
+ public static final String libOpenCV = "libopencv_java248";
/**
* Resource types to be used with IResourceLoader implementations
@@ -96,28 +101,32 @@ public class Settings {
private static Preferences options = Preferences.userNodeForPackage(SikuliX.class);
- public static Map<String, String> EndingTypes = new HashMap<String, String>();
- public static Map<String, String> TypeEndings = new HashMap<String, String>();
- public static String CPYTHON = "text/python";
- public static String CRUBY = "text/ruby";
- public static String CPLAIN = "text/plain";
- public static String EPYTHON = "py";
- public static String ERUBY = "rb";
- public static String EPLAIN = "txt";
- public static String RPYTHON = "jython";
- public static String RRUBY = "jruby";
- public static String EDEFAULT = EPYTHON;
- public static String TypeCommentToken = "---SikuliX---";
- public static String TypeCommentDefault = "# This script uses %s " + TypeCommentToken + "\n";
-
- static {
+ public static Map<String, IDESupport> ideSupporter = new HashMap<String, IDESupport>();
+ public static Map<String, IScriptRunner> scriptRunner = new HashMap<String, IScriptRunner>();
+ private static List<String> supportedRunner = new ArrayList<String>();
+ public static Map<String, String> EndingTypes = new HashMap<String, String>();
+ public static Map<String, String> TypeEndings = new HashMap<String, String>();
+ public static String CPYTHON = "text/python";
+ public static String CRUBY = "text/ruby";
+ public static String CPLAIN = "text/plain";
+ public static String EPYTHON = "py";
+ public static String ERUBY = "rb";
+ public static String EPLAIN = "txt";
+ public static String RPYTHON = "jython";
+ public static String RRUBY = "jruby";
+ public static String RDEFAULT = "NotDefined";
+ public static String EDEFAULT = EPYTHON;
+ public static String TypeCommentToken = "---SikuliX---";
+ public static String TypeCommentDefault = "# This script uses %s " + TypeCommentToken + "\n";
+
+ static {
Properties props = System.getProperties(); //for debugging
if (System.getProperty("user.name") != null && !"".equals(System.getProperty("user.name"))) {
UserName = System.getProperty("user.name");
}
- BaseTempPath = System.getProperty("java.io.tmpdir") + File.separator + UserName;
+ BaseTempPath = new File(System.getProperty("java.io.tmpdir"), UserName).getAbsolutePath();
// TODO check existence of an extension repository
SikuliRepo = null;
@@ -133,12 +142,75 @@ public class Settings {
SikuliVersionScript = SikuliVersionDefaultScript;
}
- EndingTypes.put("py", CPYTHON );
- EndingTypes.put("rb", CRUBY);
- EndingTypes.put("txt", CPLAIN);
- for (String k : EndingTypes.keySet()) {
- TypeEndings.put(EndingTypes.get(k), k);
- }
+ EndingTypes.put("py", CPYTHON);
+ EndingTypes.put("rb", CRUBY);
+ EndingTypes.put("txt", CPLAIN);
+ for (String k : EndingTypes.keySet()) {
+ TypeEndings.put(EndingTypes.get(k), k);
+ }
+ }
+
+ public static void cleanTemp() {
+ for (File f : new File(System.getProperty("java.io.tmpdir")).listFiles(new FilenameFilter() {
+ @Override
+ public boolean accept(File dir, String name) {
+ if (name.contains("BridJExtractedLibraries")) {
+ return true;
+ }
+ if (name.toLowerCase().contains("sikuli")) {
+ return true;
+ }
+ return false;
+ }}))
+ {
+ Debug.log(4, "cleanTemp: " + f.getName());
+ FileManager.deleteFileOrFolder(f.getAbsolutePath());
+ }
+ FileManager.deleteFileOrFolder(BaseTempPath);
+ }
+
+ public static void initScriptingSupport() {
+ if (scriptRunner.size() == 0) {
+ ServiceLoader<IDESupport> sloader = ServiceLoader.load(IDESupport.class);
+ Iterator<IDESupport> supIterator = sloader.iterator();
+ while (supIterator.hasNext()) {
+ IDESupport current = supIterator.next();
+ try {
+ for (String ending : current.getEndings()) {
+ ideSupporter.put(ending, current);
+ }
+ } catch (Exception ex) {
+ }
+ }
+ ServiceLoader<IScriptRunner> rloader = ServiceLoader.load(IScriptRunner.class);
+ Iterator<IScriptRunner> rIterator = rloader.iterator();
+ while (rIterator.hasNext()) {
+ IScriptRunner current = rIterator.next();
+ String name = current.getName();
+ if (!name.startsWith("Not")) {
+ scriptRunner.put(name, current);
+ }
+ }
+ }
+ if (scriptRunner.size() == 0) {
+ Debug.error("Settings: No scripting support available. Rerun Setup!");
+ SikuliX.popup("No scripting support available. Rerun Setup!", "SikuliX - Fatal Error!");
+ System.exit(1);
+ } else {
+ RDEFAULT = (String) scriptRunner.keySet().toArray()[0];
+ EDEFAULT = scriptRunner.get(RDEFAULT).getFileEndings()[0];
+ for (IScriptRunner r : scriptRunner.values()) {
+ for (String e : r.getFileEndings()){
+ if (!supportedRunner.contains(EndingTypes.get(e))) {
+ supportedRunner.add(EndingTypes.get(e));
+ }
+ }
+ }
+ }
+ }
+
+ public static boolean hasTypeRunner(String type) {
+ return supportedRunner.contains(type);
}
public static final int ISWINDOWS = 0;
@@ -174,11 +246,11 @@ public class Settings {
public static boolean OcrTextRead = false;
/**
- * true = start slow motion mode, false: stop it (default: false) show a visual for
- * SlowMotionDelay seconds (default: 2)
+ * true = start slow motion mode, false: stop it (default: false) show a visual for SlowMotionDelay seconds (default:
+ * 2)
*/
- public static boolean TRUE = true;
- public static boolean FALSE = false;
+ public static boolean TRUE = true;
+ public static boolean FALSE = false;
private static boolean ShowActions = false;
@@ -189,8 +261,7 @@ public class Settings {
public static void setShowActions(boolean ShowActions) {
if (ShowActions) {
MoveMouseDelaySaved = MoveMouseDelay;
- }
- else {
+ } else {
MoveMouseDelay = MoveMouseDelaySaved;
}
Settings.ShowActions = ShowActions;
@@ -201,8 +272,8 @@ public class Settings {
private static float MoveMouseDelaySaved = MoveMouseDelay;
/**
- * true = highlight every match (default: false) (show red rectangle around) for
- * DefaultHighlightTime seconds (default: 2)
+ * true = highlight every match (default: false) (show red rectangle around) for DefaultHighlightTime seconds
+ * (default: 2)
*/
public static boolean Highlight = false;
public static float DefaultHighlightTime = 2f;
@@ -307,14 +378,13 @@ public class Settings {
public static String getVersionShort() {
if (SikuliVersionBetaN > 0 && SikuliVersionBetaN < 99) {
return bversion;
- }
- else {
+ } else {
return sversion;
}
}
public static String getVersionShortBasic() {
- return sversion.substring(0, 3);
+ return sversion.substring(0, 3);
}
public static void setArgs(String[] args, String[] sargs) {
diff --git a/IDE/src/main/java/org/sikuli/ide/SikuliIDE.java b/IDE/src/main/java/org/sikuli/ide/SikuliIDE.java
index 29cbe24..e466a12 100755
--- a/IDE/src/main/java/org/sikuli/ide/SikuliIDE.java
+++ b/IDE/src/main/java/org/sikuli/ide/SikuliIDE.java
@@ -114,40 +114,14 @@ public class SikuliIDE extends JFrame {
private static JFrame splash;
private boolean firstRun = true;
private static long start;
- private static Map<String, IDESupport> ideSupporter = new HashMap<String, IDESupport>();
- public static Map<String, IScriptRunner> scriptRunner = new HashMap<String, IScriptRunner>();
-
- static {
- ServiceLoader<IDESupport> sloader = ServiceLoader.load(IDESupport.class);
- Iterator<IDESupport> supIterator = sloader.iterator();
- while (supIterator.hasNext()) {
- IDESupport current = supIterator.next();
- try {
- for (String ending : current.getEndings()) {
- ideSupporter.put(ending, current);
- }
- } catch (Exception ex) {
- }
- }
- ServiceLoader<IScriptRunner> rloader = ServiceLoader.load(IScriptRunner.class);
- Iterator<IScriptRunner> rIterator = rloader.iterator();
- IScriptRunner current;
- while (rIterator.hasNext()) {
- current = rIterator.next();
- String name = current.getName();
- if (!name.startsWith("Not")) {
- scriptRunner.put(name, current);
- }
- }
- if (scriptRunner.size() == 0) {
- Debug.error("SikuliIDE: No scripting support available. Rerun Setup!");
- }
- current = (IScriptRunner) scriptRunner.values().toArray()[0];
- Settings.EDEFAULT = current.getFileEndings()[0];
- }
+ private static File isRunning;
+ private static FileOutputStream isRunningFile = null;
+
+ static {
+ }
public static IDESupport getIDESupport(String ending) {
- return ideSupporter.get(ending);
+ return Settings.ideSupporter.get(ending);
}
public static String _I(String key, Object... args) {
@@ -173,10 +147,8 @@ public class SikuliIDE extends JFrame {
String[] splashArgs = new String[]{
"splash", "#", "#" + Settings.SikuliVersionIDE, "", "#", "#... starting - please wait ..."};
- File isRunning;
new File(Settings.BaseTempPath).mkdirs();
isRunning = new File(Settings.BaseTempPath, "sikuli-ide-isrunning");
- FileOutputStream isRunningFile = null;
try {
isRunning.createNewFile();
isRunningFile = new FileOutputStream(isRunning);
@@ -190,11 +162,24 @@ public class SikuliIDE extends JFrame {
} catch (Exception ex) {
splashArgs[5] = "Terminating on FatalError: cannot access IDE lock ";
splash = new MultiFrame(splashArgs);
- log(-1, splashArgs[5] + isRunning.getAbsolutePath());
+ log(-1, splashArgs[5] + "\n" + isRunning.getAbsolutePath());
SikuliX.pause(3);
System.exit(1);
}
+ Runtime.getRuntime().addShutdownHook(new Thread() {
+ @Override
+ public void run() {
+ log(lvl, "final cleanup");
+ try {
+ isRunningFile.close();
+ } catch (IOException ex) {
+ }
+ isRunning.delete();
+ Settings.cleanTemp();
+ }
+ });
+
if (System.getProperty("sikuli.FromCommandLine") == null) {
String[] userOptions = SikuliX.collectOptions("IDE", args);
if (userOptions == null) {
@@ -209,6 +194,9 @@ public class SikuliIDE extends JFrame {
}
start = (new Date()).getTime();
+
+ Settings.initScriptingSupport();
+
for (String e : args) {
splashArgs[3] += e + " ";
}
@@ -540,7 +528,7 @@ public class SikuliIDE extends JFrame {
setCurrentFileTabTitle(file);
return true;
}
- Debug.error("Can't load file " + file);
+ Debug.error("Can't load file " + file + " --- check available runners!");
// (new FileAction()).doCloseTab(null);
return false;
}
@@ -2007,8 +1995,7 @@ public class SikuliIDE extends JFrame {
String runnerType = null;
String cType = pane.getContentType();
runnerType = cType.equals(Settings.CPYTHON) ? Settings.RPYTHON : Settings.RRUBY;
- IScriptRunner srunner = SikuliX.getScriptRunner(
- runnerType, null, Settings.getArgs());
+ IScriptRunner srunner = SikuliX.getScriptRunner(runnerType, null, Settings.getArgs());
if (srunner == null) {
Debug.error("Could not load a script runner for: %s (%s)", cType, runnerType);
return;
--
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