Beispiel #1
0
int Document :: retrieveColumn(int row, int disp)
{
   TextBookmark bm = _caret;

   _text->validateBookmark(bm);

   bm.moveTo(0, row);
   bm.moveOn(disp);

   return bm.getColumn();
}
Beispiel #2
0
void Document :: tabbing(text_c space, size_t count, bool indent)
{
   _text->validateBookmark(_caret);

   if (_selection < 0) {
      _caret.moveOn(_selection);
      _selection = abs(_selection);
   }
   TextBookmark end = _caret;

   end.moveOn(_selection);

   // if only part of the line was selected just insert tab
   size_t lastRow = end.getRow();
   if (lastRow == _caret.getRow()) {
      if (indent)
         insertChar(space, count);
   }
   else {
      setCaret(0, _caret.getRow(), true);

      if (end.getColumn() == 0)
         lastRow--;

      TextBookmark start = _caret;
      while (start.getRow() <= lastRow) {
         if (indent) {
            for (size_t i = 0 ; i < count ; i++) {
               _text->insertChar(start, space);
               _selection++;
            }
         }
         else {
            size_t length;
            for (size_t i = 0 ; i < count ; i++) {
               text_t s = _text->getLine(start, length);
               if (length!=0 && (s[0]==' ' || s[0]=='\t')) {
                  bool tab = (s[0]=='\t');

                  _text->eraseChar(start);
                  _selection--;

                  if (tab)
                     break;
               }
               else break;
            }
         }
         if(!start.moveTo(0, start.getRow() + 1))
            break;
      }
   }
}
Beispiel #3
0
void Document :: commentBlock()
{
   int selection = _selection;
   _selection = 0;

   if (selection < 0) {
      _caret.moveOn(selection);
      selection = -selection;
   }
   Point caret = _caret.getCaret();
   TextBookmark end = _caret;
   end.moveOn(selection);

   while ((size_t)caret.y < end.getRow() || ((size_t)caret.y == end.getRow() && end.getColumn() > 0)) {
      if (!_caret.moveTo(0, caret.y))
         return;

      insertLine(_T("//"), 2);
      caret.y++;
   }
}