Changeset 55
- Timestamp:
- Sat Jul 2 05:46:16 2005
- Files:
-
- trunk/transolution/xliffeditor/gtk_documenteditor.py (modified) (diff)
- trunk/transolution/xliffeditor/gtk_documentviewpanel.py (modified) (diff)
- trunk/transolution/xliffeditor/document/document.py (modified) (diff)
- trunk/transolution/xliffeditor/document/tree.py (added)
- trunk/transolution/xliffeditor/document/segments.py (modified) (diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
trunk/transolution/xliffeditor/gtk_documenteditor.py
r2 r55 70 70 self.apply_tag_by_name(tag,iter(o.start),iter_start) 71 71 72 # set insertion point to selected seg 73 self.setInsertionPoint(selected_seg.start) 72 ## # set insertion point to selected seg 73 ## self.setInsertionPoint(selected_seg.start) 74 74 75 75 self.thaw_notify() 76 76 77 77 78 self.setInsertionPoint( selected_seg.start)78 self.setInsertionPoint(doc.tree.getBounds(selected_seg)[0]) 78 78 79 79 self.interactive = org # restore orginal interactive state … … 179 179 buf.remove_tag_by_name('bg_selected',start_iter,end_iter) 180 180 181 iter_start,iter_end = iter(seg.start),iter(seg.end) 181 # get the text span of segment 182 s,e = self.buf.model.getTextSpanOfSeg(seg) 183 iter_start,iter_end = iter(s),iter(e) 184 182 185 buf.move_mark(start_mark,iter_start) 183 186 buf.move_mark(end_mark,iter_end) -
trunk/transolution/xliffeditor/gtk_documentviewpanel.py
r51 r55 311 311 self.open_seg.tu.closeForEdit(commit,approve,state=state,common_state=common_state) 312 312 # Update doc ui to jump to end of closed segment 313 self.document_control.get_buffer().setInsertionPoint(self. open_seg.end)313 self.document_control.get_buffer().setInsertionPoint(self.doc_model.getTextSpanOfSeg(self.open_seg)[1]) 313 313 self.document_control.showInsertPoint() 314 314 … … 484 484 self.openTransUnit(seg) 485 485 # Update doc ui to show open segment 486 self.document_control.get_buffer().setInsertionPoint(seg.start) 486 start,end = self.doc_model.getTextSpanOfSeg(seg) 487 self.document_control.get_buffer().setInsertionPoint(start) 487 488 self.document_control.showInsertPoint() 488 489 … … 661 662 self.openTransUnit(f.seg) 662 663 # update document widget to show open segment 663 self.document_control.get_buffer().setInsertionPoint(f.seg.start) 664 start,end = self.doc_model.getTextSpanOfSeg(f.seg) 665 self.document_control.get_buffer().setInsertionPoint(start) 664 666 # update TU status info in document view window 665 667 self.document_control.xnotify(f.seg) -
trunk/transolution/xliffeditor/document/document.py
r54 r55 3 3 from transolution.xliffeditor.general import Notifier,Observer,EditorException 4 4 from segments import External,TuSegment,FileInfo,TuInfo 5 from bisect import bisect5 from tree import IndexTree 5 5 6 6 class DocumentIndexException(EditorException):pass … … 23 23 Observer.__init__(self) 24 24 self.segs = [] 25 self.segment_end_positions = [] # holds all segments end positions so we can use26 # bisect module to lookup the segment at pos efficiently.27 25 self.documentFormatter = None 26 self.tree = IndexTree() 27 self.getTextSpanOfSeg = self.tree.getBounds 28 self._initTree = True 29 30 def initTree(self): 31 'initialize the lookup tree upon first use' 32 for seg in self.segs: 33 seg.format() 34 # Build the lookup tree 35 self.tree.buildTree(self.segs) 36 self._initTree = False 28 37 29 38 def setFormatter(self,documentFormatter): … … 58 67 #seg.setParent(self) 59 68 60 61 69 def getSegByTextIndex(self,ti): 62 ## for seg in self.segs: 63 ## if seg.end > ti: 64 ## return seg,seg.start,seg.end 65 # bisect used for speed 66 seg = self.segs[bisect(self.segment_end_positions, ti)] 67 return seg,seg.start,seg.end 70 if self._initTree: 71 self.initTree() 72 seg = self.tree.lookup(ti).seg 73 start,end = self.getTextSpanOfSeg(seg) 74 return seg,start,end 68 75 69 76 def getSegUIUpdates(self): 70 77 'get a list of SegUIUpdate with the text span to update and text to update' 71 end = 0 72 segpos = [] 78 if self._initTree: 79 self.initTree() 80 getTextSpanOfSeg = self.getTextSpanOfSeg 73 81 for i,seg in enumerate(self.segs): 74 formatted = seg.format() 75 start = end 76 end += len(seg) 82 seg.format() 77 83 if seg.dirty: 78 84 seg.dirty = False 79 yield SegUIUpdate(seg.styledtext,start,start+seg.oldlen, 85 start,end = getTextSpanOfSeg(seg) 86 yield SegUIUpdate(seg.styledtext,start,end, 80 87 bg_color=seg.bg_color, 81 88 segindex=i) 82 seg.setRange(start,end) 83 segpos.append(end) 84 self.segment_end_positions = segpos 85 89 self.tree.updateSeg(seg) 90 91 86 92 def xupdate(self,seg=None): 87 93 'observer interface' … … 165 171 166 172 def parseXliff(self,xliff=None,use_skeleton=True): 173 self._initTree = True 167 174 self.has_skeleton = False 168 175 … … 186 193 187 194 195 188 196 print "Xliff Done" -
trunk/transolution/xliffeditor/document/segments.py
r2 r55 11 11 self._node = node 12 12 self.dirty = True # flag that tells that ui needs to update 13 self. start,self.end,self.oldlen = 0,0,013 self.oldlen = 0 13 13 self.styledtext = None 14 self.data = None14 self.data = '' 14 14 self.bg_color = None 15 15 16 def setRange(self,start,end):17 self.start,self.end, self.oldlen = start,end,end-start18 16 19 17 def getNode(self): … … 24 22 25 23 def format(self,node=None): 24 self.oldlen = len(self.data) 26 25 if not self.dirty: return 27 26 self.__class__.formatter.format(self)
