Changeset 772

Show
Ignore:
Timestamp:
08/31/05 09:23:29 (3 years ago)
Author:
antont
Message:

resurrected notebook reconstruction from xml. must be tested more but seems to work in nbshell.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • nbdoc/trunk/notabene/notebook.py

    r769 r772  
    6363    #to check from logid & number if already exists 
    6464     
    65     def __init__(self, parent, number): 
     65    def __init__(self, parent, number, element=None): 
    6666        #note: parent is a Log object, which has the 'root' as .element 
    67         self.element = ET.SubElement(parent.element, 'cell') 
    68         self.number = number #sets the xml too via the property 
     67        if element is None: 
     68            self.element = ET.SubElement(parent.element, 'cell') 
     69            self.number = number #sets the xml too via the property 
     70        else: 
     71            self.element = element 
     72            assert self.number == number 
    6973 
    7074    input  = property(SubelemGetter('input'),  SubelemSetter('input')) 
     
    99103    #one on the nbshell side there's IPythonLog 
    100104    #and we've talked about moving (parts of it) here 
    101     def __init__(self, parent, logid): 
     105    def __init__(self, parent, logid, element=None): 
    102106        #note: parent is a Notebook object, which has the 'root' as .root 
    103107        self.id = logid 
    104         self.element = ET.SubElement(parent.root, 'ipython-log', id=logid) 
    105108        self._cells = [] #it is not safe to manipulate this from outside 
    106         #'cause of removals, this may end up sparse - might make sense to use 
     109        #'cause of removals, may end up sparse - might make sense to use 
    107110        #something like http://inamidst.com/code/listdict.py 
    108  
    109     def add(self, number): 
     111        if element is None: 
     112            self.element = ET.SubElement(parent.root, 'ipython-log', id=logid) 
     113 
     114        else: 
     115            self.element = element 
     116            for cellelem in self.element: 
     117                self.add(int(cellelem.get('number')), cellelem) 
     118 
     119             
     120    def add(self, number, element=None): 
    110121        if number == len(self._cells): #is to be put at the end 
    111             cell = Cell(self, number
     122            cell = Cell(self, number, element
    112123            self._cells.append(cell) #always adds to end 
    113124            #self.element.append(cell.element) #already became a subelement 
     
    199210            self.head = ET.SubElement(self.root, 'head') 
    200211            self.add_log() 
    201         else: 
     212        else: #reconstruct object structure from given xml 
    202213            self.root = root 
    203214            self.head = root.find('head') 
     215            logelem = root.find('ipython-log') 
     216            #dbg 
     217            print logelem, logelem.get('id', 'noid?-o') 
     218            logid = logelem.get('id') 
     219            self.logs[logid] = Log(self, logid, logelem)  
     220            for cellelem in logelem: 
     221                #dbg 
     222                print cellelem, ET.tostring(cellelem) 
    204223 
    205224    def __eq__(self, other): 
     
    218237        return not self.__eq__(other) 
    219238 
     239    #XXX 
    220240    #how do the from* methods actually behave w.r.t to Cells and self.logs? 
    221241    #perhaps some initial processing is needed now, when