chiark / gitweb /
plugins: Support user configuration of default values
[cura.git] / Cura / util / pluginInfo.py
index 7fad6f58e839a9c891eb411e975ea52d534fe49a..9005388882e2fb5272790388c2b920a87777f8b6 100644 (file)
@@ -10,6 +10,7 @@ import traceback
 import platform
 import re
 import tempfile
+import ConfigParser
 import cPickle as pickle
 
 from Cura.util import profile
@@ -52,6 +53,27 @@ class pluginInfo(object):
                                # else:
                                #       print "Unknown item in plugin meta data: %s %s" % (line[0], line[1])
 
+                self._readSettings(os.path.join(profile.getBasePath()))
+                for plugindir in getPluginBasePaths():
+                        self._readSettings(plugindir)
+
+        def _readSettings(self, indir):
+                settings_file = os.path.join(indir, 'plugin_defaults.ini')
+                plugin_basename = re.sub(r'\.pyc?','',os.path.basename(self._filename))
+                if not os.path.exists(settings_file):
+                        return
+                cfg = ConfigParser.ConfigParser()
+                try:
+                        cfg.read(settings_file)
+                except:
+                        traceback.print_exc()
+                if not cfg.has_section(plugin_basename):
+                        return
+                for param in self._params:
+                        name = param['name']
+                        if cfg.has_option(plugin_basename, name):
+                                param['default'] = cfg.get(plugin_basename, name)
+
        def getFilename(self):
                return self._filename