[gedit-latex/doc-prefs: 3/3] drop gross xml document properties
- From: John Stowers <jstowers src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit-latex/doc-prefs: 3/3] drop gross xml document properties
- Date: Tue, 16 Aug 2011 00:27:37 +0000 (UTC)
commit cf190976136c49ebcf91b0ee560fb4b028993fe9
Author: John Stowers <john stowers gmail com>
Date: Tue Aug 16 12:27:09 2011 +1200
drop gross xml document properties
latex/latex/editor.py | 8 +--
latex/preferences/__init__.py | 94 +++++++++++------------------------------
2 files changed, 28 insertions(+), 74 deletions(-)
---
diff --git a/latex/latex/editor.py b/latex/latex/editor.py
index 2673895..3740251 100644
--- a/latex/latex/editor.py
+++ b/latex/latex/editor.py
@@ -336,23 +336,21 @@ class LaTeXEditor(Editor, IIssueHandler):
return master_filename
@property
- # returns(File)
def __master_file(self):
"""
Find the LaTeX master of this child
@return: base.File
"""
- try:
- path = self._preferences.get("document-master-filename")
- # the property file may contain absolute and relative paths
+ path = self._preferences.get("document-master-filename")
+ if path != None:
if File.is_absolute(path):
self._log.debug("Path is absolute")
return File(path)
else:
self._log.debug("Path is relative")
return File.create_from_relative_path(path, self._file.dirname)
- except KeyError:
+ else:
# master filename not found, ask user
master_filename = self.choose_master_file()
if master_filename:
diff --git a/latex/preferences/__init__.py b/latex/preferences/__init__.py
index e380380..c146f34 100644
--- a/latex/preferences/__init__.py
+++ b/latex/preferences/__init__.py
@@ -26,83 +26,38 @@ from gi.repository import GObject, Gio, GLib
import os.path
import logging
+import ConfigParser
from ..util import singleton
-# TODO: use ElementTree
-from xml.dom import minidom
-from xml.parsers.expat import ExpatError
-
-from ..base.file import File
-
LOG = logging.getLogger(__name__)
-class _PropertyFile(dict):
- """
- A property file is a hidden XML file that holds meta data for exactly one file.
- It can be used to store the master file of a LaTeX document fragment.
- """
-
- __log = logging.getLogger("PropertyFile")
+class _LatexConfigParser(ConfigParser.RawConfigParser):
- # TODO: insert value as TEXT node
-
- def __init__(self, file):
- """
- Create or load the property file for a given File
- """
- self.__file = File("%s/.%s.properties.xml" % (file.dirname, file.basename))
+ SECTION = "LATEX"
+ def __init__(self, filename):
+ ConfigParser.RawConfigParser.__init__(self)
+ self._filename = filename
+ self.read(filename)
try:
- self.__dom = minidom.parse(self.__file.path)
-
- for property_node in self.__dom.getElementsByTagName("property"):
- k = property_node.getAttribute("key")
- v = property_node.getAttribute("value")
- self.__setitem__(k, v)
-
- except IOError:
- self.__log.debug("File %s not found, creating empty one" % self.__file)
-
- self.__dom = minidom.getDOMImplementation().createDocument(None, "properties", None)
+ self.add_section(self.SECTION)
+ except ConfigParser.DuplicateSectionError:
+ pass
- except ExpatError, e:
- self.__log.error("Error parsing %s: %s" % (self.__file, e))
-
-
- def __find_node(self, k):
- for node in self.__dom.getElementsByTagName("property"):
- if node.getAttribute("key") == str(k):
- return node
- raise KeyError
-
- def __getitem__(self, k):
- return self.__find_node(k).getAttribute("value")
-
- def __setitem__(self, k, v):
+ def get(self, key):
try:
- self.__find_node(k).setAttribute("value", str(v))
- except KeyError:
- node = self.__dom.createElement("property")
- node.setAttribute("key", str(k))
- node.setAttribute("value", str(v))
- self.__dom.documentElement.appendChild(node)
+ return ConfigParser.RawConfigParser.get(self,self.SECTION, key)
+ except ConfigParser.NoOptionError:
+ return None
- def save(self):
- filename = self.__file.path
-
- if self.__file.exists:
- mode = "w"
- else:
- mode = "a"
+ def set(self,key,value):
+ ConfigParser.RawConfigParser.set(self, self.SECTION, key, value)
- try:
- f = open(filename, mode)
- f.write(self.__dom.toxml())
- f.close()
- self.__log.debug("Saved to %s" % filename)
- except IOError, e:
- self.__log.error("Error saving %s: %s" % (filename, e))
+ def save(self):
+ f = open(self._filename,'w')
+ self.write(f)
+ f.close()
class _Preferences(GObject.GObject):
@@ -155,7 +110,8 @@ class DocumentPreferences(_Preferences):
self._sysprefs = Preferences()
self._sysprefs.connect("preferences-changed", self._on_prefs_changed)
self._file = file
- self._pf = _PropertyFile(file)
+ self._cp = _LatexConfigParser(
+ "%s/.%s.ini" % (file.dirname, file.basename))
def _on_prefs_changed(self, p, key, value):
self.emit("preferences-changed", key, value)
@@ -166,15 +122,15 @@ class DocumentPreferences(_Preferences):
def get(self, key):
if self._is_docpref(key):
LOG.debug("Get document pref")
- return self._pf[key]
+ return self._cp.get(key)
else:
return self._sysprefs.get(key)
def set(self, key, value):
if self._is_docpref(key):
LOG.debug("Set document pref")
- self._pf[key] = value
- self._pf.save()
+ self._cp.set(key,value)
+ self._cp.save()
self.emit("preferences-changed", key, value)
else:
self._sysprefs.set(key, value)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]