Jeff Grimmett with some tweaks and changes from Robin git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24889 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # 12/14/2003 - Jeff Grimmett (grimmtooth@softhome.net)
 | |
| #
 | |
| # o 2.5 compatability update.
 | |
| #
 | |
| 
 | |
| def RestOfLine(sx, width, data, bool):
 | |
|     if len(data) == 0 and sx == 0:
 | |
|         return [('', bool)]
 | |
|     if sx >= len(data):
 | |
|         return []
 | |
|     return [(data[sx:sx+width], bool)]
 | |
| 
 | |
| def Selection(SelectBegin,SelectEnd, sx, width, line, data):
 | |
|     if SelectEnd is None or SelectBegin is None:
 | |
|         return RestOfLine(sx, width, data, False)
 | |
|     (bRow, bCol) = SelectBegin
 | |
|     (eRow, eCol) = SelectEnd
 | |
|     if (eRow < bRow):
 | |
|         (bRow, bCol) = SelectEnd
 | |
|         (eRow, eCol) = SelectBegin
 | |
|     if (line < bRow or eRow < line):
 | |
|         return RestOfLine(sx, width, data, False)
 | |
|     if (bRow < line and line < eRow):
 | |
|         return RestOfLine(sx, width, data, True)
 | |
|     if (bRow == eRow) and (eCol < bCol):
 | |
|         (bCol, eCol) = (eCol, bCol)
 | |
|     # selection either starts or ends on this line
 | |
|     end = min(sx+width, len(data))
 | |
|     if (bRow < line):
 | |
|         bCol = 0
 | |
|     if (line < eRow):
 | |
|         eCol = end
 | |
|     pieces = []
 | |
|     if (sx < bCol):
 | |
|         if bCol <= end:
 | |
|             pieces += [(data[sx:bCol], False)]
 | |
|         else:
 | |
|             return [(data[sx:end], False)]
 | |
|     pieces += [(data[max(bCol,sx):min(eCol,end)], True)]
 | |
|     if (eCol < end):
 | |
|         pieces += [(data[eCol:end], False)]
 | |
|     return pieces
 | |
| 
 | |
| 
 |