wxStyledTextCtrl, добавление текста переменной длины и добавление пустой новой строки - PullRequest
0 голосов
/ 01 июня 2019

Я работаю над интерпретатором командной строки.Ранее я использовал wxRichTextCtrl, где все работало хорошо, но недавно решил перенести его на wxStyledTextCtrl из-за удобства использования дополнительных стилей.

Моя цель - получить что-то вроде следующего:

>>a=3     -- enter pressed, no output
>>a       -- enter pressed, output is 3, print 3 right below this line
3         -- The output length can vary, can be single or several lines  
>>        -- continue accepting input on this line

Я обрабатываю события KeyDown и KeyUp для клавиши Return:

void OnKeyDown(wxKeyEvent& evt);
void OnKeyUp(wxKeyEvent& evt);
Bind(wxEVT_KEY_DOWN, &CommandEditor::OnKeyDown, this);
Bind(wxEVT_KEY_UP, &CommandEditor::OnKeyUp, this);

void CommandEditor::OnKeyDown(wxKeyEvent & evt)
{
    int evtCode = evt.GetKeyCode();

    long int col, line;
    PositionToXY(GetInsertionPoint(), &col, &line);

    if (evtCode == WXK_RETURN)
        OnReturnKeyDown(evt);

    evt.Skip();
}

void CommandEditor::OnReturnKeyDown(wxKeyEvent & evt)
{
    //Lines of code producing output
    AppendText(output);
    NewLine();

    evt.Skip();
}

void CommandEditor::OnReturnKeyUp(wxKeyEvent & evt)
{
    long int col, line;
    PositionToXY(GetInsertionPoint(), &col, &line);


    MarginSetText(line, ">>");


    evt.Skip();
}

Похоже, когда я используюNewLine () после AppendText () происходит следующее:

enter image description here

Также, когда я нажимаю клавишу ввода (в нулевой строке):

long int col, line;
PositionToXY(GetInsertionPoint(), &col, &line);

код все еще сообщает line как ноль;тем не менее, я думаю, что это должно быть 1, что имеет место для wxRichTextCtrl.Кажется, что в wxStyledTextCtrl все выглядит иначе.

Как оставить запись вывода ниже строки, в которой была введена команда, и продолжить с новой пустой строкой приглашения?

Любые идеи приветствуются.

...