Example #1
0
 def readTreepad(self, fileRef, errors='strict'):
     """Read Treepad text-node file"""
     try:
         f = self.getEncodedFileObj(fileRef, globalref.localTextEncoding,
                                    errors)
         filePath = unicode(f.name, sys.getfilesystemencoding())
         textList = f.read().split('<end node> 5P9i0s8y19Z')
         f.close()
     except UnicodeError:  # error common - broken unicode on windows
         print 'Warning - bad unicode characters were replaced'
         if errors == 'strict':
             self.readTreepad(fileRef, 'replace')
         else:
             f.close()
         return
     self.treeFormats = TreeFormats()
     format = nodeformat.NodeFormat(TreeFormats.formatDefault)
     titleFieldName = _('Title', 'title field name')
     format.addNewField(titleFieldName)
     format.addLine(u'{*%s*}' % titleFieldName)
     numLines = globalref.options.intData('MaxEditLines', 1,
                                          optiondefaults.maxNumLines)
     format.addNewField(TreeFormats.textFieldName,
                        {'lines': repr(numLines)})
     format.addLine(u'{*%s*}' % TreeFormats.textFieldName)
     self.treeFormats[format.name] = format
     itemList = []
     for text in textList:
         text = text.strip()
         if text:
             try:
                 text = text.split('<node>', 1)[1].lstrip()
                 lines = text.split('\n')
                 title = lines[0]
                 level = int(lines[1])
                 lines = lines[2:]
             except (ValueError, IndexError):
                 print 'Error - bad file format in %s' % \
                       filePath.encode(globalref.localTextEncoding)
                 raise ReadFileError(_('Bad file format in %s') % filePath)
             item = TreeItem(None, format.name)
             item.data[titleFieldName] = title
             item.data[TreeFormats.textFieldName] = '\n'.join(lines)
             item.level = level
             itemList.append(item)
     self.root = itemList[0]
     parentList = []
     for item in itemList:
         if item.level != 0:
             parentList = parentList[:item.level]
             item.parent = parentList[-1]
             parentList[-1].childList.append(item)
         parentList.append(item)
     self.root = itemList[0]
     self.fileName = filePath
Example #2
0
 def readTreepad(self, fileRef, errors='strict'):
     """Read Treepad text-node file"""
     try:
         f = self.getEncodedFileObj(fileRef, globalref.localTextEncoding,
                                    errors)
         filePath = unicode(f.name, sys.getfilesystemencoding())
         textList = f.read().split('<end node> 5P9i0s8y19Z')
         f.close()
     except UnicodeError:  # error common - broken unicode on windows
         print 'Warning - bad unicode characters were replaced'
         if errors == 'strict':
             self.readTreepad(fileRef, 'replace')
         else:
             f.close()
         return
     self.treeFormats = TreeFormats()
     format = nodeformat.NodeFormat(TreeFormats.formatDefault)
     titleFieldName = _('Title', 'title field name')
     format.addNewField(titleFieldName)
     format.addLine(u'{*%s*}' % titleFieldName)
     numLines = globalref.options.intData('MaxEditLines', 1,
                                          optiondefaults.maxNumLines)
     format.addNewField(TreeFormats.textFieldName,
                        {'lines': repr(numLines)})
     format.addLine(u'{*%s*}' % TreeFormats.textFieldName)
     self.treeFormats[format.name] = format
     itemList = []
     for text in textList:
         text = text.strip()
         if text:
             try:
                 text = text.split('<node>', 1)[1].lstrip()
                 lines = text.split('\n')
                 title = lines[0]
                 level = int(lines[1])
                 lines = lines[2:]
             except (ValueError, IndexError):
                 print 'Error - bad file format in %s' % \
                       filePath.encode(globalref.localTextEncoding)
                 raise ReadFileError(_('Bad file format in %s') % filePath)
             item = TreeItem(None, format.name)
             item.data[titleFieldName] = title
             item.data[TreeFormats.textFieldName] = '\n'.join(lines)
             item.level = level
             itemList.append(item)
     self.root = itemList[0]
     parentList = []
     for item in itemList:
         if item.level != 0:
             parentList = parentList[:item.level]
             item.parent = parentList[-1]
             parentList[-1].childList.append(item)
         parentList.append(item)
     self.root = itemList[0]
     self.fileName = filePath