'Insert an indent to move the cursor to the next tab position.
Honors the tab size and \'use tabs\' settings.  Assumes the cursor is already at the
position to be indented, and the selection is a single character (ie, not a block)'

def Indent(self):

    (start, end) = self._obj_.GetSel()
    startLine = self._obj_.LineFromChar(start)
    line = self._obj_.GetLine(startLine)
    realCol = (start - self._obj_.LineIndex(startLine))
    curCol = 0
    for ch in line[:realCol]:
        if (ch == ' DCTB '):
            curCol = (((curCol / self.tabSize) + 1) * self.tabSize)
        else:
            curCol = (curCol + 1)
    nextColumn = (((curCol / self.indentSize) + 1) * self.indentSize)
    ins = None
    if self.bSmartTabs:
        if (realCol == 0):
            lookLine = (startLine - 1)
            while (lookLine >= 0):
                check = self._obj_.GetLine(lookLine)[0:1]
                if (check in [' DCTB ', '    ']):
                    ins = check
                    break
                lookLine = (lookLine - 1)
        else:
            check = line[(realCol - 1)]
            if (check in [' DCTB ', '    ']):
                ins = check
    if (ins is None):
        if (self.bUseTabs and ((nextColumn % self.tabSize) == 0)):
            ins = ' DCTB '
        else:
            ins = '    '
    if (ins == '    '):
        ins = (ins * (nextColumn - curCol))
    self._obj_.ReplaceSel(ins)
