make paste work, fix inserting in wrong lines

This commit is contained in:
Miodrag Milanovic 2018-06-28 20:38:25 +02:00
parent 960c650478
commit 6e11c52dc9
2 changed files with 32 additions and 1 deletions

View File

@ -52,7 +52,8 @@ void PythonConsole::keyPressEvent( QKeyEvent* e )
if ( ! canGoLeft( ) )
return;
}
if (!cursorIsOnInputLine()) return;
if (textCursor().columnNumber() < PythonConsole::PROMPT.size()) return;
QTextEdit::keyPressEvent( e );
}
@ -292,3 +293,30 @@ void PythonConsole::moveCursorToEnd( )
cursor.movePosition( QTextCursor::End );
setTextCursor( cursor );
}
void PythonConsole::insertFromMimeData(const QMimeData *src)
{
if (src->hasText()) {
QStringList list = src->text().split("\n",QString::KeepEmptyParts);
bool lastends = src->text().endsWith("\n");
for (int i=0;i<list.size();i++)
{
QString line = list.at(i);
displayString(line);
if (!lastends && (i==list.size()-1)) break;
m_parseHelper.process( line.toStdString( ) );
if ( m_parseHelper.buffered( ) )
{
append("");
displayPrompt( );
}
if ( line.size( ) )
{
m_historyBuffer.push_back( line.toStdString( ) );
m_historyIt = m_historyBuffer.end();
}
moveCursorToEnd( );
}
}
}

View File

@ -25,6 +25,7 @@ SOFTWARE.
#define PYCONSOLE_H
#include <QColor>
#include <QTextEdit>
#include <QMimeData>
#include "ParseHelper.h"
#include "ParseListener.h"
@ -47,6 +48,8 @@ class PythonConsole : public QTextEdit, ParseListener
virtual void handleReturnKeyPress();
virtual void insertFromMimeData(const QMimeData *src);
/**
Handle a compilable chunk of Python user input.
*/