summaryrefslogtreecommitdiff
path: root/graphics/asymptote/GUI/xasyOptions.py
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-12-28 03:01:00 +0000
committerNorbert Preining <norbert@preining.info>2021-12-28 03:01:00 +0000
commitecdf859b6ce481abfd530425dcf6f0f764bd0001 (patch)
tree13bc161dc046876ac6c92fce5f9f5034ba9aa573 /graphics/asymptote/GUI/xasyOptions.py
parent790995b7e79697514364450bf9c04f1b8d500838 (diff)
CTAN sync 202112280300
Diffstat (limited to 'graphics/asymptote/GUI/xasyOptions.py')
-rw-r--r--graphics/asymptote/GUI/xasyOptions.py104
1 files changed, 75 insertions, 29 deletions
diff --git a/graphics/asymptote/GUI/xasyOptions.py b/graphics/asymptote/GUI/xasyOptions.py
index 1923990fae..458dd9cb3c 100644
--- a/graphics/asymptote/GUI/xasyOptions.py
+++ b/graphics/asymptote/GUI/xasyOptions.py
@@ -10,25 +10,13 @@
#
###########################################################################
-import json
import sys
import io
import os
import platform
import shutil
-
import configs
-
-try:
- import cson
-except ModuleNotFoundError:
- cson = None
-
-try:
- pass
-# import yaml
-except ModuleNotFoundError:
- yaml = None
+import cson
class xasyOptions:
def defaultOptions(self):
@@ -49,12 +37,12 @@ class xasyOptions:
for key in self.options[settingsName]:
self.options[key] = self.options[settingsName][key]
-
-
+
+
def settingsFileLocation(self):
folder = os.path.expanduser("~/.asy/")
- searchOrder = ['.cson', '.yaml', '.json', '']
+ searchOrder = ['.cson', '']
searchIndex = 0
found = False
@@ -64,7 +52,7 @@ class xasyOptions:
if os.path.isfile(currentFile):
found = True
searchIndex += 1
-
+
if found:
return os.path.normcase(currentFile)
else:
@@ -79,7 +67,6 @@ class xasyOptions:
self.options = self.defaultOptions()
self.load()
- self.overrideSettings()
def __getitem__(self, item):
return self.options[item]
@@ -100,16 +87,7 @@ class xasyOptions:
f = io.open(fileName, 'r')
try:
ext = os.path.splitext(fileName)[1]
- if ext == '.cson':
- if cson is None:
- raise ModuleNotFoundError
- newOptions = cson.loads(f.read())
- elif ext in {'.yml', '.yaml'}:
- if yaml is None:
- raise ModuleNotFoundError
- newOptions = yaml.load(f)
- else:
- newOptions = json.loads(f.read())
+ newOptions = cson.loads(f.read())
except (IOError, ModuleNotFoundError):
self.setDefaults()
else:
@@ -121,6 +99,7 @@ class xasyOptions:
self.options = newOptions
finally:
f.close()
+ self.overrideSettings()
def setDefaults(self):
self.options = self.defaultOptions()
@@ -130,7 +109,7 @@ class xasyOptions:
folder = os.path.expanduser("~/.asy/")
defaultPath = os.path.join(folder, self.configName + '.cson')
shutil.copy2(self._defaultOptLocation, defaultPath)
-
+
# TODO: Figure out how to merge this back.
"""
@@ -150,6 +129,72 @@ def setAsyPathFromWindowsRegistry():
registry.CloseKey(key)
"""
+class xasyOpenRecent:
+ def __init__(self, configName, defaultConfigLocation):
+ self.configName = configName
+ self.fileName = self.settingsFileLocation()
+ if not os.path.isfile(self.fileName):
+ f = io.open(self.fileName, 'w')
+ f.write('')
+ f.close()
+
+ def settingsFileLocation(self):
+ folder = os.path.expanduser("~/.asy/")
+
+ currentFile = os.path.join(folder, self.configName + '.txt')
+ return os.path.normcase(currentFile)
+
+ def insert(self, path):
+ if not os.path.exists(self.fileName):
+ # make folder
+ thedir = os.path.dirname(self.fileName)
+ if not os.path.exists(thedir):
+ os.makedirs(thedir)
+ if not os.path.isdir(thedir):
+ raise Exception("Configuration folder path does not point to a folder")
+
+ f = io.open(self.fileName, 'r')
+ lines = f.readlines()
+ f.close()
+
+ f = io.open(self.fileName, 'w')
+ f.write(path.strip() + '\n')
+ for line in lines:
+ if line.strip() != path.strip():
+ f.write(line.strip() + '\n')
+ f.close()
+
+ @property
+ def pathList(self):
+ self.findingPaths=True
+ return self.findPath()
+
+ def findPath(self):
+ f = io.open(self.fileName, 'r')
+ paths = [path.strip() for path in f.readlines()]
+ f.close()
+
+ trueFiles = list(map(lambda path: os.path.isfile(os.path.expanduser(path)), paths))
+ if all(trueFiles):
+ return paths
+ else:
+ if self.findingPaths == False:
+ raise RecursionError
+ self.findingPaths = False
+ self.removeNotFound(list(trueFiles), paths)
+ return self.findPath()
+
+ def removeNotFound(self, trueFiles, paths):
+ f = io.open(self.fileName, 'w')
+ for index, path in enumerate(paths):
+ if trueFiles[index] == True:
+ f.write(path + '\n')
+ f.close()
+
+ def clear(self):
+ f = io.open(self.fileName, 'w')
+ f.write('')
+ f.close()
class BasicConfigs:
_configPath = list(configs.__path__)[0]
@@ -157,3 +202,4 @@ class BasicConfigs:
'xasyconfig', os.path.join(_configPath, 'xasyconfig.cson'))
keymaps = xasyOptions('xasykeymap', os.path.join(
_configPath, 'xasykeymap.cson'))
+ openRecent = xasyOpenRecent('xasyrecents', os.path.join( _configPath, "xasyrecent.txt"))