| 1 | # 12/14/2003 - Jeff Grimmett (grimmtooth@softhome.net) |
| 2 | # |
| 3 | # o 2.5 compatability update. |
| 4 | # |
| 5 | |
| 6 | def RestOfLine(sx, width, data, bool): |
| 7 | if len(data) == 0 and sx == 0: |
| 8 | return [('', bool)] |
| 9 | if sx >= len(data): |
| 10 | return [] |
| 11 | return [(data[sx:sx+width], bool)] |
| 12 | |
| 13 | def Selection(SelectBegin,SelectEnd, sx, width, line, data): |
| 14 | if SelectEnd is None or SelectBegin is None: |
| 15 | return RestOfLine(sx, width, data, False) |
| 16 | (bRow, bCol) = SelectBegin |
| 17 | (eRow, eCol) = SelectEnd |
| 18 | if (eRow < bRow): |
| 19 | (bRow, bCol) = SelectEnd |
| 20 | (eRow, eCol) = SelectBegin |
| 21 | if (line < bRow or eRow < line): |
| 22 | return RestOfLine(sx, width, data, False) |
| 23 | if (bRow < line and line < eRow): |
| 24 | return RestOfLine(sx, width, data, True) |
| 25 | if (bRow == eRow) and (eCol < bCol): |
| 26 | (bCol, eCol) = (eCol, bCol) |
| 27 | # selection either starts or ends on this line |
| 28 | end = min(sx+width, len(data)) |
| 29 | if (bRow < line): |
| 30 | bCol = 0 |
| 31 | if (line < eRow): |
| 32 | eCol = end |
| 33 | pieces = [] |
| 34 | if (sx < bCol): |
| 35 | if bCol <= end: |
| 36 | pieces += [(data[sx:bCol], False)] |
| 37 | else: |
| 38 | return [(data[sx:end], False)] |
| 39 | pieces += [(data[max(bCol,sx):min(eCol,end)], True)] |
| 40 | if (eCol < end): |
| 41 | pieces += [(data[eCol:end], False)] |
| 42 | return pieces |
| 43 | |
| 44 | |