summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/asymptote/GUI/xasyOptions.py
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/asymptote/GUI/xasyOptions.py')
-rwxr-xr-xMaster/texmf-dist/asymptote/GUI/xasyOptions.py126
1 files changed, 126 insertions, 0 deletions
diff --git a/Master/texmf-dist/asymptote/GUI/xasyOptions.py b/Master/texmf-dist/asymptote/GUI/xasyOptions.py
new file mode 100755
index 00000000000..4406687cbf4
--- /dev/null
+++ b/Master/texmf-dist/asymptote/GUI/xasyOptions.py
@@ -0,0 +1,126 @@
+#!/usr/bin/env python
+###########################################################################
+#
+# xasyOptions provides a mechanism for storing and restoring a user's
+# preferences.
+#
+#
+# Author: Orest Shardt
+# Created: June 29, 2007
+#
+###########################################################################
+
+import pickle
+import sys,os
+import errno
+
+defaultOptions = {
+ 'asyPath':'asy',
+ 'showDebug':False,
+ 'showGrid':False,
+ 'gridX':10,
+ 'gridY':10,
+ 'gridColor':'#eeeeee',
+ 'showAxes':True,
+ 'axisX':10,
+ 'axisY':10,
+ 'axesColor':'#cccccc',
+ 'tickColor':'#eeeeee',
+ 'defPenOptions':'',
+ 'defPenColor':'#000000',
+ 'defPenWidth':1.0,
+ 'externalEditor':''
+ }
+
+if sys.platform[:3] == "win":
+ defaultOptions['externalEditor'] = "notepad.exe"
+else:
+ defaultOptions['externalEditor'] = "emacs"
+
+
+options = defaultOptions.copy()
+
+def settingsFileLocation():
+ folder = ""
+ try:
+ folder = os.path.expanduser("~/.asy/")
+ except:
+ pass
+ return os.path.normcase(os.path.join(folder,"xasy.conf"))
+
+def setAsyPathFromWindowsRegistry():
+ try:
+ import _winreg as registry
+ #test both registry locations
+ try:
+ key = registry.OpenKey(registry.HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Asymptote")
+ options['asyPath'] = registry.QueryValueEx(key,"Path")[0]+"\\asy.exe"
+ registry.CloseKey(key)
+ except:
+ key = registry.OpenKey(registry.HKEY_LOCAL_MACHINE,"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Asymptote")
+ options['asyPath'] = registry.QueryValueEx(key,"InstallLocation")[0]+"\\asy.exe"
+ registry.CloseKey(key)
+ except:
+ #looks like asy is not installed or this isn't Windows
+ pass
+
+def setDefaults():
+ global options
+ options = defaultOptions.copy()
+ if sys.platform[:3] == 'win': #for windows, wince, win32, etc
+ setAsyPathFromWindowsRegistry()
+ save()
+
+def load():
+ global options
+ fileName = settingsFileLocation()
+ if not os.path.exists(fileName):
+ #make folder
+ thedir = os.path.dirname(fileName)
+ if not os.path.exists(thedir):
+ try:
+ os.makedirs(thedir)
+ except:
+ raise Exception,"Could not create configuration folder"
+ if not os.path.isdir(thedir):
+ raise Exception,"Configuration folder path does not point to a folder"
+ setDefaults()
+ try:
+ f = open(fileName,"rb")
+ newOptions = pickle.load(f)
+ for key in options.keys():
+ if type(newOptions[key]) != type(options[key]):
+ raise Exception,"Bad type for entry in xasy settings"
+ options = newOptions
+ except:
+ setDefaults()
+
+def save():
+ global options
+ fileName = settingsFileLocation()
+ try:
+ f = open(fileName,"wb")
+ pickle.dump(options,f)
+ f.close()
+ except:
+ raise Exception,"Error saving preferences"
+
+load()
+
+if __name__=='__main__':
+ print settingsFileLocation()
+ print "Current content"
+ load()
+ print "Setting defaults"
+ setDefaults()
+ save()
+ load()
+ options['showAxes'] = options['showGrid'] = False
+ save()
+ print "Set to False"
+ load()
+ options['showAxes'] = options['showGrid'] = True
+ save()
+ print "Set to True"
+ load()
+ print options