QGIS/python/plugins/sextante/core/SextanteConfig.py

123 lines
5.0 KiB
Python

from sextante.core.SextanteUtils import SextanteUtils
import os.path
from PyQt4 import QtGui
class SextanteConfig():
TABLE_LIKE_PARAM_PANEL = "TABLE_LIKE_PARAM_PANEL"
OUTPUT_FOLDER = "OUTPUT_FOLDER"
RASTER_STYLE = "RASTER_STYLE"
VECTOR_POINT_STYLE = "VECTOR_POINT_STYLE"
VECTOR_LINE_STYLE = "VECTOR_LINE_STYLE"
VECTOR_POLYGON_STYLE = "VECTOR_POLYGON_STYLE"
SHOW_RECENT_ALGORITHMS = "SHOW_RECENT_ALGORITHMS"
USE_SELECTED = "USE_SELECTED"
USE_FILENAME_AS_LAYER_NAME = "USE_FILENAME_AS_LAYER_NAME"
KEEP_DIALOG_OPEN = "KEEP_DIALOG_OPEN"
USE_THREADS = "USE_THREADS"
settings = {}
settingIcons= {}
@staticmethod
def initialize():
icon = QtGui.QIcon(os.path.dirname(__file__) + "/../images/alg.png")
SextanteConfig.settingIcons["General"] = icon
SextanteConfig.addSetting(Setting("General", SextanteConfig.USE_THREADS, "Run algorithms in a new thread (still unstable)", False))
SextanteConfig.addSetting(Setting("General", SextanteConfig.KEEP_DIALOG_OPEN, "Keep dialog open after running an algorithm", False))
SextanteConfig.addSetting(Setting("General", SextanteConfig.USE_SELECTED, "Use only selected features in external applications", True))
SextanteConfig.addSetting(Setting("General", SextanteConfig.TABLE_LIKE_PARAM_PANEL, "Show table-like parameter panels", False))
SextanteConfig.addSetting(Setting("General", SextanteConfig.USE_FILENAME_AS_LAYER_NAME, "Use filename as layer name", True))
SextanteConfig.addSetting(Setting("General", SextanteConfig.SHOW_RECENT_ALGORITHMS, "Show recently executed algorithms", True))
SextanteConfig.addSetting(Setting("General", SextanteConfig.OUTPUT_FOLDER,
"Output folder", SextanteUtils.tempFolder()))
SextanteConfig.addSetting(Setting("General", SextanteConfig.RASTER_STYLE,"Style for raster layers",""))
SextanteConfig.addSetting(Setting("General", SextanteConfig.VECTOR_POINT_STYLE,"Style for point layers",""))
SextanteConfig.addSetting(Setting("General", SextanteConfig.VECTOR_LINE_STYLE,"Style for line layers",""))
SextanteConfig.addSetting(Setting("General", SextanteConfig.VECTOR_POLYGON_STYLE,"Style for polygon layers",""))
@staticmethod
def setGroupIcon(group, icon):
SextanteConfig.settingIcons[group] = icon
@staticmethod
def getGroupIcon(group):
if group in SextanteConfig.settingIcons:
return SextanteConfig.settingIcons[group]
else:
return QtGui.QIcon(os.path.dirname(__file__) + "/../images/alg.png")
@staticmethod
def addSetting(setting):
SextanteConfig.settings[setting.name] = setting
@staticmethod
def removeSetting(name):
del SextanteConfig.settings[name]
@staticmethod
def getSettings():
settings={}
for setting in SextanteConfig.settings.values():
if not setting.group in settings:
group = []
settings[setting.group] = group
else:
group = settings[setting.group]
group.append(setting)
return settings
@staticmethod
def configFile():
return os.path.join(SextanteUtils.userFolder(), "sextante_qgis.conf")
@staticmethod
def loadSettings():
if not os.path.isfile(SextanteConfig.configFile()):
return
lines = open(SextanteConfig.configFile())
line = lines.readline().strip("\n")
while line != "":
tokens = line.split("=")
if tokens[0] in SextanteConfig.settings.keys():
setting = SextanteConfig.settings[tokens[0]]
if isinstance(setting.value, bool):
setting.value = (tokens[1].strip() == str(True))
else:
setting.value = tokens[1]
SextanteConfig.addSetting(setting)
line = lines.readline().strip("\n")
lines.close()
@staticmethod
def saveSettings():
fout = open(SextanteConfig.configFile(), "w")
for setting in SextanteConfig.settings.values():
fout.write(str(setting) + "\n")
fout.close()
@staticmethod
def getSetting(name):
if name in SextanteConfig.settings.keys():
return SextanteConfig.settings[name].value
else:
return None
@staticmethod
def setSettingValue(name, value):
if name in SextanteConfig.settings.keys():
SextanteConfig.settings[name].value = value
SextanteConfig.saveSettings()
class Setting():
'''A simple config parameter that will appear on the SEXTANTE config dialog'''
def __init__(self, group, name, description, default):
self.group=group
self.name = name
self.description = description
self.default = default
self.value = default
def __str__(self):
return self.name + "=" + str(self.value)