Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.sikuli.basics.PreferencesUser Maven / Gradle / Ivy
/*
* 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);
}
}