org.sikuli.basics.PreferencesUser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sikulixapi Show documentation
Show all versions of sikulixapi Show documentation
... for visual testing and automation
/*
* Copyright 2010-2014, Sikuli.org, sikulix.com
* Released under the MIT License.
*
* modified RaiMan 2013
*/
package org.sikuli.basics;
import java.awt.Dimension;
import java.awt.Event;
import java.awt.Point;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Arrays;
import java.util.Date;
import java.util.Locale;
import java.util.prefs.PreferenceChangeListener;
import java.util.prefs.Preferences;
import org.sikuli.script.Sikulix;
public class PreferencesUser {
public final static int yes = 1;
public final static int no = 0;
public final static int AUTO_NAMING_TIMESTAMP = 0;
public final static int AUTO_NAMING_OCR = 1;
public final static int AUTO_NAMING_OFF = 2;
public final static int HORIZONTAL = 0;
public final static int VERTICAL = 1;
public final static int UNKNOWN = -1;
public final static int NEWBEE = 0;
public final static int SCRIPTER = 1;
public final static int SIKULI_USER = 2;
public final static int THUMB_HEIGHT = 50;
public final static String DEFAULT_CONSOLE_CSS =
"body { font-family:serif; font-size: 12px; }"
+ ".normal{ color: black; }"
+ ".debug { color:#505000; }"
+ ".info { color: blue; }"
+ ".log { color: #09806A; }"
+ ".error { color: red; }";
static PreferencesUser _instance = null;
Preferences pref = Preferences.userNodeForPackage(Sikulix.class);
public static PreferencesUser getInstance() {
if (_instance == null) {
_instance = new PreferencesUser();
}
return _instance;
}
private PreferencesUser() {
Debug.log(2, "init user preferences");
}
public boolean exportPrefs(String path) {
try {
FileOutputStream pout = new FileOutputStream(new File(path)); ;
pref.exportSubtree(pout);
pout.close();
} catch (Exception ex) {
Debug.error("UserPrefs: export: did not work\n" + ex.getMessage());
return false;
}
return true;
}
public boolean importPrefs(String path) {
try {
Preferences.importPreferences(new FileInputStream(new File(path)));
} catch (Exception ex) {
Debug.error("UserPrefs: import: did not work\n" + ex.getMessage());
return false;
}
return true;
}
public void remove(String key) {
pref.remove(key);
}
public void removeAll(String prefix) {
try {
for (String item : pref.keys()) {
if (!item.startsWith(prefix)) {
continue;
}
pref.remove(item);
}
} catch (Exception ex) {
Debug.error("Prefs.removeAll: prefix (%s) did not work", prefix);
}
}
public void addPreferenceChangeListener(PreferenceChangeListener pcl) {
pref.addPreferenceChangeListener(pcl);
}
// ***** user type
public void setUserType(int typ) {
pref.putInt("USER_TYPE", typ);
}
public int getUserType() {
return pref.getInt("USER_TYPE", UNKNOWN);
}
// ***** capture hot key
public void setCaptureHotkey(int hkey) {
pref.putInt("CAPTURE_HOTKEY", hkey);
}
public int getCaptureHotkey() {
return pref.getInt("CAPTURE_HOTKEY", 50); // default: '2'
}
public void setCaptureHotkeyModifiers(int mod) {
if (mod < 0) {
}
pref.putInt("CAPTURE_HOTKEY_MODIFIERS", mod);
}
public int getCaptureHotkeyModifiers() {
return pref.getInt("CAPTURE_HOTKEY_MODIFIERS", defaultCaptureHotkeyModifiers());
}
private int defaultCaptureHotkeyModifiers() {
int mod = Event.SHIFT_MASK + Event.META_MASK;
if (!Settings.isMac()) {
mod = Event.SHIFT_MASK + Event.CTRL_MASK;
}
return mod;
}
public void setCaptureDelay(double v) {
pref.putDouble("CAPTURE_DELAY", v);
}
public double getCaptureDelay() {
return pref.getDouble("CAPTURE_DELAY", 1.0);
}
// ***** abort key
public void setStopHotkey(int hkey) {
pref.putInt("STOP_HOTKEY", hkey);
}
public int getStopHotkey() {
return pref.getInt("STOP_HOTKEY", 67); // default: 'c'
}
public void setStopHotkeyModifiers(int mod) {
pref.putInt("STOP_HOTKEY_MODIFIERS", mod);
}
public int getStopHotkeyModifiers() {
return pref.getInt("GET_HOTKEY_MODIFIERS", defaultStopHotkeyModifiers());
}
private int defaultStopHotkeyModifiers() {
int mod = Event.SHIFT_MASK + Event.META_MASK;
if (!Settings.isMac()) {
mod = Event.SHIFT_MASK + Event.ALT_MASK;
}
return mod;
}
// ***** indentation support
public void setExpandTab(boolean flag) {
pref.putBoolean("EXPAND_TAB", flag);
}
public boolean getExpandTab() {
return pref.getBoolean("EXPAND_TAB", true);
}
public void setTabWidth(int width) {
pref.putInt("TAB_WIDTH", width);
}
public int getTabWidth() {
return pref.getInt("TAB_WIDTH", 4);
}
public String getTabWhitespace() {
if (getExpandTab()) {
char[] blanks = new char[getTabWidth()];
Arrays.fill(blanks, ' ');
return new String(blanks);
} else {
return "\t";
}
}
// ***** font settings
public void setFontSize(int size) {
pref.putInt("FONT_SIZE", size);
}
public int getFontSize() {
return pref.getInt("FONT_SIZE", 18);
}
public void setFontName(String font) {
pref.put("FONT_NAME", font);
}
public String getFontName() {
return pref.get("FONT_NAME", "Monospaced");
}
// ***** locale support
public void setLocale(Locale l) {
pref.put("LOCALE", l.toString());
}
public Locale getLocale() {
String locale = pref.get("LOCALE", Locale.getDefault().toString());
String[] code = locale.split("_");
if (code.length == 1) {
return new Locale(code[0]);
} else if (code.length == 2) {
return new Locale(code[0], code[1]);
} else {
return new Locale(code[0], code[1], code[2]);
}
}
// ***** image capture and naming
public void setAutoNamingMethod(int m) {
pref.putInt("AUTO_NAMING", m);
}
public int getAutoNamingMethod() {
return pref.getInt("AUTO_NAMING", AUTO_NAMING_OCR);
}
public void setDefaultThumbHeight(int h) {
pref.putInt("DEFAULT_THUMB_HEIGHT", h);
}
public void resetDefaultThumbHeight() {
pref.putInt("DEFAULT_THUMB_HEIGHT", THUMB_HEIGHT);
}
public int getDefaultThumbHeight() {
return pref.getInt("DEFAULT_THUMB_HEIGHT", THUMB_HEIGHT);
}
// ***** command bar
public void setPrefMoreCommandBar(boolean flag) {
pref.putInt("PREF_MORE_COMMAND_BAR", flag ? 1 : 0);
}
public boolean getPrefMoreCommandBar() {
return pref.getInt("PREF_MORE_COMMAND_BAR", 1) != 0;
}
public void setAutoCaptureForCmdButtons(boolean flag) {
pref.putInt("AUTO_CAPTURE_FOR_CMD_BUTTONS", flag ? 1 : 0);
}
public boolean getAutoCaptureForCmdButtons() {
return pref.getInt("AUTO_CAPTURE_FOR_CMD_BUTTONS", 1) != 0;
}
// ***** save options
public void setAtSaveMakeHTML(boolean flag) {
pref.putBoolean("AT_SAVE_MAKE_HTML", flag);
}
public boolean getAtSaveMakeHTML() {
return pref.getBoolean("AT_SAVE_MAKE_HTML", false);
}
public void setAtSaveCleanBundle(boolean flag) {
pref.putBoolean("AT_SAVE_CLEAN_BUNDLE", flag);
}
public boolean getAtSaveCleanBundle() {
return pref.getBoolean("AT_SAVE_CLEAN_BUNDLE", true);
}
// ***** script run options
public void setPrefMoreRunSave(boolean flag) {
pref.putBoolean("PREF_MORE_RUN_SAVE", flag);
}
public boolean getPrefMoreRunSave() {
return pref.getBoolean("PREF_MORE_RUN_SAVE", false);
}
public void setPrefMoreHighlight(boolean flag) {
pref.putBoolean("PREF_MORE_HIGHLIGHT", flag);
}
public boolean getPrefMoreHighlight() {
return pref.getBoolean("PREF_MORE_HIGHLIGHT", false);
}
// ***** auto update support
public void setCheckUpdate(boolean flag) {
pref.putBoolean("CHECK_UPDATE", flag);
}
public boolean getCheckUpdate() {
return pref.getBoolean("CHECK_UPDATE", true);
}
public void setWantBeta(boolean flag) {
pref.putBoolean("WANT_BETA", flag);
}
public boolean getWantBeta() {
return pref.getBoolean("WANT_BETA", false);
}
public void setLastSeenUpdate(String ver) {
pref.put("LAST_SEEN_UPDATE", ver);
}
public String getLastSeenUpdate() {
return pref.get("LAST_SEEN_UPDATE", "0.0");
}
public void setCheckUpdateTime() {
pref.putLong("LAST_CHECK_UPDATE", (new Date()).getTime());
}
public long getCheckUpdateTime() {
return pref.getLong("LAST_CHECK_UPDATE", (new Date()).getTime());
}
// ***** IDE general support
public void setIdeSize(Dimension size) {
String str = (int) size.getWidth() + "x" + (int) size.getHeight();
pref.put("IDE_SIZE", str);
}
public Dimension getIdeSize() {
String str = pref.get("IDE_SIZE", "1024x700");
String[] w_h = str.split("x");
return new Dimension(Integer.parseInt(w_h[0]), Integer.parseInt(w_h[1]));
}
public void setIdeLocation(Point p) {
String str = p.x + "," + p.y;
pref.put("IDE_LOCATION", str);
}
public Point getIdeLocation() {
String str = pref.get("IDE_LOCATION", "0,0");
String[] x_y = str.split(",");
return new Point(Integer.parseInt(x_y[0]), Integer.parseInt(x_y[1]));
}
// ***** IDE Editor options
public void setPrefMoreImageThumbs(boolean flag) {
pref.putBoolean("PREF_MORE_IMAGE_THUMBS", flag);
}
public boolean getPrefMoreImageThumbs() {
return pref.getBoolean("PREF_MORE_IMAGE_THUMBS", true);
}
public void setPrefMorePlainText(boolean flag) {
pref.putBoolean("PREF_MORE_PLAIN_TEXT", flag);
}
public boolean getPrefMorePlainText() {
return pref.getBoolean("PREF_MORE_PLAIN_TEXT", false);
}
// currently: last open filenames
public void setIdeSession(String session_str) {
pref.put("IDE_SESSION", session_str);
}
public String getIdeSession() {
return pref.get("IDE_SESSION", null);
}
// support for IDE image path
public void setPrefMoreImages(boolean flag) {
pref.putBoolean("PREF_MORE_IMAGES", flag);
}
public boolean getPrefMoreImages() {
return pref.getBoolean("PREF_MORE_IMAGES", false);
}
public void setPrefMoreImagesPath(String path) {
pref.put("PREF_MORE_IMAGES_PATH", path);
}
public String getPrefMoreImagesPath() {
return pref.get("PREF_MORE_IMAGES_PATH", null);
}
// ***** message area settings
public void setPrefMoreMessage(int typ) {
pref.putInt("PREF_MORE_MESSAGE", typ);
}
public int getPrefMoreMessage() {
return pref.getInt("PREF_MORE_MESSAGE", HORIZONTAL);
}
public void setPrefMoreLogActions(boolean flag) {
pref.putBoolean("PREF_MORE_LOG_ACTIONS", flag);
}
public boolean getPrefMoreLogActions() {
return pref.getBoolean("PREF_MORE_LOG_ACTIONS", true);
}
public void setPrefMoreLogInfo(boolean flag) {
pref.putBoolean("PREF_MORE_LOG_INFO", flag);
}
public boolean getPrefMoreLogInfo() {
return pref.getBoolean("PREF_MORE_LOG_INFO", true);
}
public void setPrefMoreLogDebug(boolean flag) {
pref.putBoolean("PREF_MORE_LOG_INFO", flag);
}
public boolean getPrefMoreLogDebug() {
return pref.getBoolean("PREF_MORE_LOG_DEBUG", true);
}
public void setConsoleCSS(String css) {
pref.put("CONSOLE_CSS", css);
}
public String getConsoleCSS() {
return pref.get("CONSOLE_CSS", DEFAULT_CONSOLE_CSS);
}
// ***** text search and OCR
public void setPrefMoreTextSearch(boolean flag) {
pref.putBoolean("PREF_MORE_TEXT_SEARCH", flag);
}
public boolean getPrefMoreTextSearch() {
return pref.getBoolean("PREF_MORE_TEXT_SEARCH", false);
}
public void setPrefMoreTextOCR(boolean flag) {
pref.putBoolean("PREF_MORE_TEXT_OCR", flag);
}
public boolean getPrefMoreTextOCR() {
return pref.getBoolean("PREF_MORE_TEXT_OCR", false);
}
// ***** general setter getter
public void put(String key, String val) {
pref.put(key, val);
}
public String get(String key, String default_) {
return pref.get(key, default_);
}
public void setDefaults(int typ) {
// ***** capture hot key
if (NEWBEE == typ) {
setCaptureHotkey(50);
setCaptureHotkeyModifiers(defaultCaptureHotkeyModifiers());
setCaptureDelay(1.0);
}
// ***** abort key
setStopHotkey(67);
setStopHotkeyModifiers(defaultStopHotkeyModifiers());
// ***** indentation support
if (NEWBEE == typ) {
setExpandTab(true);
setTabWidth(4);
}
// ***** font settings
if (NEWBEE == typ) {
setFontSize(14);
setFontName("Monospaced");
}
// ***** locale support
if (NEWBEE == typ) {
setLocale(Locale.getDefault());
}
// ***** image capture and naming
if (NEWBEE == typ) {
setAutoNamingMethod(AUTO_NAMING_TIMESTAMP);
}
if (getPrefMoreImageThumbs()) {
setDefaultThumbHeight(THUMB_HEIGHT);
} else {
setDefaultThumbHeight(0);
}
// ***** command bar
if (NEWBEE == typ) {
setPrefMoreCommandBar(true);
setAutoCaptureForCmdButtons(true);
} else {
setPrefMoreCommandBar(false);
}
// ***** save options
if (NEWBEE == typ) {
setAtSaveMakeHTML(true);
} else {
setAtSaveMakeHTML(false);
}
setAtSaveCleanBundle(true);
// ***** script run options
setPrefMoreRunSave(false);
setPrefMoreHighlight(false);
// ***** auto update support
setCheckUpdate(false);
setLastSeenUpdate("0.0.0");
setCheckUpdateTime();
// ***** IDE general support
if (NEWBEE == typ) {
setIdeSize(new Dimension(0, 0));
setIdeLocation(new Point(0, 0));
}
setPrefMoreImages(false);
setPrefMoreImagesPath("");
// ***** message area settings
if (NEWBEE == typ) {
setPrefMoreMessage(HORIZONTAL);
} else {
setPrefMoreMessage(VERTICAL);
}
setPrefMoreLogActions(true);
setPrefMoreLogInfo(true);
setPrefMoreLogDebug(true);
setConsoleCSS(DEFAULT_CONSOLE_CSS);
// ***** text search and OCR
setPrefMoreTextSearch(false);
setPrefMoreTextOCR(false);
}
}