TVision

 view release on metacpan or  search on metacpan

tvision.git/source/tvision/teditor1.cpp  view on Meta::CPAN

    if (encoding == encSingleByte || s.size() == 0)
        {
        ++p;
        ++width;
        }
    else
        {
        size_t p_ = 0, w_ = 0;
        TText::next(s, p_, w_);
        p += p_; width += w_;
        }
}

Boolean TEditor::formatCell( TSpan<TScreenCell> cells, uint &width,
                             TStringView text, uint &p, TColorAttr color )
{
    size_t p_ = 0, w_ = width;
    if (TText::drawOne(cells, w_, text, p_, color))
        {
        p += p_; width = w_;
        return True;
        }
    return False;
}

int TEditor::charPos( uint p, uint target )
{
    uint pos = 0;
    while( p < target )
    {
        TStringView chars = bufChars(p);
        if( chars[0] == '\x9' )
            pos |= 7;
        nextChar(chars, p, pos);
    }
    return pos;
}

uint TEditor::charPtr( uint p, int target )
{
    uint pos = 0;
    uint lastP = p;
    char c;
    TStringView chars;
    while( (int) pos < target && p < bufLen &&
           (c = (chars = bufChars(p))[0]) != '\r' && c != '\n' )
        {
        lastP = p;
        if( c == '\x09' )
            pos |= 7;
        nextChar(chars, p, pos);
        }
    if( (int) pos > target)
        p = lastP;
    return p;
}

Boolean TEditor::clipCopy()
{
    Boolean res = False;
    if( clipboard != this )
        {
        if( clipboard != 0 )
            res = clipboard->insertFrom(this);
        else
            {
            TClipboard::setText( TStringView( buffer + bufPtr(selStart),
                                              selEnd - selStart ) );
            res = True;
            }
        selecting = False;
        update(ufUpdate);
        }
    return res;
}

void TEditor::clipCut()
{
    if( clipCopy() == True )
        deleteSelect();
}

void TEditor::clipPaste()
{
    if( clipboard != this )
        {
        if( clipboard != 0 )
            insertFrom(clipboard);
        else
            TClipboard::requestText();
        }
}

void TEditor::convertEvent( TEvent& event )
{
    if( event.what == evKeyDown )
        {
        if( (event.keyDown.controlKeyState & kbShift) != 0 &&
            event.keyDown.charScan.scanCode >= 0x47 &&
            event.keyDown.charScan.scanCode <= 0x51
          )
            event.keyDown.charScan.charCode = 0;

        ushort key = event.keyDown.keyCode;
        if( keyState != 0 )
            {
            if( (key & 0xFF) >= 0x01 && (key & 0xFF) <= 0x1A )
                key += 0x40;
            if( (key & 0xFF) >= 0x61 && (key & 0xFF) <= 0x7A )
                key -= 0x20;
            }
        key = scanKeyMap(keyMap[keyState], key);
        keyState = 0;
        if( key != 0 )
            {
            if( (key & 0xFF00) == 0xFF00 )
                {
                keyState = (key & 0xFF);
                clearEvent(event);
                }
            else
                {
                event.what = evCommand;
                event.message.command = key;
                }
            }
        }
}

Boolean TEditor::cursorVisible()
{
  return Boolean((curPos.y >= delta.y) && (curPos.y < delta.y + size.y));
}

void TEditor::deleteRange( uint startPtr,
                           uint endPtr,
                           Boolean delSelect
                         )
{
    if( hasSelection() == True && delSelect == True )
        deleteSelect();
    else
        {
        setSelect(curPtr, endPtr, True);
        deleteSelect();
        setSelect(startPtr, curPtr, False);
        deleteSelect();
        }



( run in 0.345 second using v1.01-cache-2.11-cpan-2398b32b56e )