Example #1
0
    def _read_attr(self, filename, recover=True):
        """Read a node meta data file"""
        
        try:
            tree = ET.ElementTree(file=filename)
        except Exception as e:
            #if recover:
            #    self._recover_attr(filename)
            #    return self._read_attr(filename, recover=False)
            
            raise ConnectionError(
                _(u"Error reading meta data file '%s'" % filename), e)

        # check root
        root = tree.getroot()
        if root.tag != "node":
            raise ConnectionError(_("Root tag is not 'node'"))
        
        # iterate children
        attr = {}
        version = None
        for child in root:
            if child.tag == "dict":
                attr = plist.load_etree(child)
            if child.tag == "version":
                version = int(child.text)

        if version:
            attr["version"] = version
        
        return attr
Example #2
0
def read_extension_info(filename):
    """Reads an extensions info"""
    tree = ET.ElementTree(file=get_extension_info_file(filename))

    # parse xml
    # check tree structure matches current version
    root = tree.getroot()
    if root.tag != "extension":
        raise keepnote.KeepNotePreferenceError("bad extension info format")

    p = root.find("dict")
    if p is None:
        raise keepnote.KeepNotePreferenceError("bad extension info format")

    return plist.load_etree(p)
Example #3
0
def read_extension_info(filename):
    """Reads an extensions info"""
    tree = ET.ElementTree(file=get_extension_info_file(filename))

    # parse xml
    # check tree structure matches current version
    root = tree.getroot()
    if root.tag != "extension":
        raise keepnote.KeepNotePreferenceError("bad extension info format")

    p = root.find("dict")
    if p is None:
        raise keepnote.KeepNotePreferenceError("bad extension info format")

    return plist.load_etree(p)
Example #4
0
    def read(self):
        """Read preferences from file"""

        # ensure preference file exists
        if not os.path.exists(get_user_pref_file(self._pref_dir)):
            # write default
            try:
                init_user_pref_dir(self._pref_dir)
                self.write()
            except Exception as e:
                raise KeepNotePreferenceError("Cannot initialize preferences",
                                              e)

        try:
            # read preferences xml
            tree = ElementTree.ElementTree(
                file=get_user_pref_file(self._pref_dir))

            # parse xml
            # check tree structure matches current version
            root = tree.getroot()
            if root.tag == "keepnote":
                p = root.find("pref")
                if p is None:
                    # convert from old preference version
                    import keepnote.compat.pref as old
                    old_pref = old.KeepNotePreferences()
                    old_pref.read(get_user_pref_file(self._pref_dir))
                    data = old_pref._get_data()
                else:
                    # get data object from xml
                    d = p.find("dict")
                    if d is not None:
                        data = plist.load_etree(d)
                    else:
                        data = orderdict.OrderDict()

                # set data
                self._data.clear()
                self._data.update(data)
        except Exception as e:
            raise KeepNotePreferenceError("Cannot read preferences", e)

        # notify listeners
        self.changed.notify()
Example #5
0
                return self._read_attr(filename, recover=False)
            
            raise ConnectionError(
                _(u"Error reading meta data file '%s'" % filename), e)

        # check root
        root = tree.getroot()
        if root.tag != "node":
            raise ConnectionError(_("Root tag is not 'node'"))
        
        # iterate children
        attr = {}
        version = None
        for child in root:
            if child.tag == "dict":
                attr = plist.load_etree(child)
            if child.tag == "version":
                version = int(child.text)

        if version:
            attr["version"] = version
        
        return attr


    def _recover_attr(self, filename):
        
        if os.path.exists(filename):
            self._move_to_lostdir(filename)
        try:
            out = open(filename, "w")
Example #6
0
class KeepNotePreferences(Pref):
    """Preference data structure for the KeepNote application"""
    def __init__(self, pref_dir=None):
        Pref.__init__(self)
        if pref_dir is None:
            self._pref_dir = get_user_pref_dir()
        else:
            self._pref_dir = pref_dir

        # listener
        self.changed = Listeners()
        self.changed.add(self._on_changed)

    def get_pref_dir(self):
        """Returns preference directory"""
        return self._pref_dir

    def _on_changed(self):
        """Listener for preference changes"""
        self.write()

    #=========================================
    # Input/Output

    def read(self):
        """Read preferences from file"""

        # ensure preference file exists
        if not os.path.exists(get_user_pref_file(self._pref_dir)):
            # write default
            try:
                init_user_pref_dir(self._pref_dir)
                self.write()
            except Exception, e:
                raise KeepNotePreferenceError("Cannot initialize preferences",
                                              e)

        try:
            # read preferences xml
            tree = ET.ElementTree(file=get_user_pref_file(self._pref_dir))

            # parse xml
            # check tree structure matches current version
            root = tree.getroot()
            if root.tag == "keepnote":
                p = root.find("pref")
                if p is None:
                    # convert from old preference version
                    import keepnote.compat.pref as old
                    old_pref = old.KeepNotePreferences()
                    old_pref.read(get_user_pref_file(self._pref_dir))
                    data = old_pref._get_data()
                else:
                    # get data object from xml
                    d = p.find("dict")
                    if d is not None:
                        data = plist.load_etree(d)
                    else:
                        data = orderdict.OrderDict()

                # set data
                self._data.clear()
                self._data.update(data)
        except Exception, e:
            raise KeepNotePreferenceError("Cannot read preferences", e)
Example #7
0
        tree = ET.ElementTree(file=filename)
    except Exception, e:
        raise ConnectionError(
            _(u"Error reading meta data file '%s'" % filename), e)

    # check root
    root = tree.getroot()
    if root.tag != "node":
        raise ConnectionError(_("Root tag is not 'node'"))

    # iterate children
    attr = {}
    extra = {}
    for child in root:
        if child.tag == "dict":
            attr = plist.load_etree(child)
        elif child.tag == "version":
            extra['version'] = int(child.text)
        elif child.tag == "id":
            extra['nodeid'] = child.text

    # For backward-compatibility, use attr nodeid to set extra if needed.
    if 'nodeid' not in extra:
        extra['nodeid'] = attr['nodeid']

    if set_extra:
        for key, value in extra.items():
            attr[key] = value

    return attr, extra