80 lines
2.3 KiB
Python
80 lines
2.3 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""novelWriter Options Last State
|
||
|
||
novelWriter – Options Last State
|
||
==================================
|
||
Class holding the last state of GUI options
|
||
|
||
File History:
|
||
Created: 2019-10-21 [0.3.1]
|
||
|
||
"""
|
||
|
||
import logging
|
||
import json
|
||
import nw
|
||
|
||
from os import path
|
||
|
||
from nw.common import checkString, checkBool, checkInt
|
||
|
||
logger = logging.getLogger(__name__)
|
||
|
||
class OptLastState():
|
||
|
||
def __init__(self, theProject, theFile):
|
||
self.theProject = theProject
|
||
self.theFile = theFile
|
||
self.theState = {}
|
||
self.stringOpt = ()
|
||
self.boolOpt = ()
|
||
self.intOpt = ()
|
||
return
|
||
|
||
def loadSettings(self):
|
||
stateFile = path.join(self.theProject.projMeta,self.theFile)
|
||
theState = {}
|
||
if path.isfile(stateFile):
|
||
logger.debug("Loading options file")
|
||
try:
|
||
with open(stateFile,mode="r") as inFile:
|
||
theJson = inFile.read()
|
||
theState = json.loads(theJson)
|
||
except Exception as e:
|
||
logger.error("Failed to load options file")
|
||
logger.error(str(e))
|
||
return False
|
||
for anOpt in theState:
|
||
self.theState[anOpt] = theState[anOpt]
|
||
return True
|
||
|
||
def saveSettings(self):
|
||
stateFile = path.join(self.theProject.projMeta,self.theFile)
|
||
logger.debug("Saving options file")
|
||
try:
|
||
with open(stateFile,mode="w+") as outFile:
|
||
outFile.write(json.dumps(self.theState, indent=2))
|
||
except Exception as e:
|
||
logger.error("Failed to save options file")
|
||
logger.error(str(e))
|
||
return False
|
||
return True
|
||
|
||
def setSetting(self, setName, setValue):
|
||
if setName in self.theState:
|
||
self.theState[setName] = setValue
|
||
else:
|
||
return False
|
||
return True
|
||
|
||
def getSetting(self, setName):
|
||
if setName in self.stringOpt:
|
||
return checkString(self.theState[setName],self.theState[setName],False)
|
||
elif setName in self.boolOpt:
|
||
return checkBool(self.theState[setName],self.theState[setName],False)
|
||
elif setName in self.intOpt:
|
||
return checkInt(self.theState[setName],self.theState[setName],False)
|
||
return None
|
||
|
||
# END Class OptLastState
|