# HG changeset patch # User Ahsan Ali Shahid # Date 1394060219 -18000 # Node ID 6e81b59d657c8e875357f1c173ad73fd79adb0be # Parent 40dce9423baa5b52919f68e494f9f812aae01064 Add preference for terminal windows buffer size (bug #41474) * QTerminal.cc (notice_settings): call new function SetScrollBufferSize with the related value from the settings * QTerminal.h: new purely virtual function SetScrollBufferSize * QUnixTerminalImpl.cpp (initialize): corrections of coding style; (setScrollBufferSize): implementation of new function; * QUnixTerminalImpl.h: new function setScrollBufferSize; * QWinTerminalImpl.cpp (class QConsolePrivate): new function (QConsolePrivate::setScrollBufferSize): implementation of new function; (QWinTerminalImpl::setScrollBufferSize): implementation of new function; * QWinTerminalImpl.h: new function setScrollBufferSize; * settings-dialog.cc (constructor): init spinbox with buffer size from settings; (write_changed_settings): write value of spinbox into settings file * settings-dialog.ui: new spinbox for terminals buffer size (terminal tab) diff -r 40dce9423baa -r 6e81b59d657c libgui/qterminal/libqterminal/QTerminal.cc --- a/libgui/qterminal/libqterminal/QTerminal.cc Sun Mar 30 20:18:18 2014 -0400 +++ b/libgui/qterminal/libqterminal/QTerminal.cc Thu Mar 06 03:56:59 2014 +0500 @@ -118,4 +118,5 @@ (cursorUseForegroundColor, settings->value ("terminal/color_c", QVariant (colors.at (3))).value ()); + setScrollBufferSize (settings->value ("terminal/history_buffer",1000).toInt() ); } diff -r 40dce9423baa -r 6e81b59d657c libgui/qterminal/libqterminal/QTerminal.h --- a/libgui/qterminal/libqterminal/QTerminal.h Sun Mar 30 20:18:18 2014 -0400 +++ b/libgui/qterminal/libqterminal/QTerminal.h Thu Mar 06 03:56:59 2014 +0500 @@ -81,6 +81,8 @@ virtual void setCursorColor (bool useForegroundColor, const QColor& color) = 0; + virtual void setScrollBufferSize(int value=1000) = 0; + signals: void report_status_message (const QString&); diff -r 40dce9423baa -r 6e81b59d657c libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp --- a/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp Sun Mar 30 20:18:18 2014 -0400 +++ b/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp Thu Mar 06 03:56:59 2014 +0500 @@ -69,13 +69,23 @@ m_terminalModel = new TerminalModel(m_kpty); m_terminalModel->setAutoClose(true); m_terminalModel->setCodec(QTextCodec::codecForName("UTF-8")); - m_terminalModel->setHistoryType(HistoryTypeBuffer(1000)); + m_terminalModel->setHistoryType(HistoryTypeBuffer (1000)); m_terminalModel->setDarkBackground(true); m_terminalModel->setKeyBindings(""); m_terminalModel->run(); m_terminalModel->addView(m_terminalView); connectToPty(); } +void QUnixTerminalImpl::setScrollBufferSize(int value) +{ + if (value > 0) + { + m_terminalModel->clearHistory (); + m_terminalModel->setHistoryType (HistoryTypeBuffer ( value )); + } + else + m_terminalModel->setHistoryType (HistoryTypeNone ()); +} void QUnixTerminalImpl::connectToPty() { diff -r 40dce9423baa -r 6e81b59d657c libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h --- a/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h Sun Mar 30 20:18:18 2014 -0400 +++ b/libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h Thu Mar 06 03:56:59 2014 +0500 @@ -47,7 +47,7 @@ void setForegroundColor (const QColor& color); void setSelectionColor (const QColor& color); void setCursorColor (bool useForegroundColor, const QColor& color); - + void setScrollBufferSize(int value); QString selectedText(); public slots: diff -r 40dce9423baa -r 6e81b59d657c libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp --- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp Sun Mar 30 20:18:18 2014 -0400 +++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp Thu Mar 06 03:56:59 2014 +0500 @@ -205,6 +205,7 @@ void setForegroundColor (const QColor& color); void setSelectionColor (const QColor& color); void setCursorColor (bool useForegroundColor, const QColor& color); + void setScrollBufferSize (int value); void drawTextBackground (QPainter& p, int cx1, int cy1, int cx2, int cy2, int cw, int ch); @@ -597,6 +598,14 @@ m_cursorColor = useForegroundColor ? QColor () : color; } +void QConsolePrivate::setScrollBufferSize (int value) +{ +// FIXME: not tested code follows +// CONSOLE_SCREEN_BUFFER_INFO sbi; +// GetConsoleScreenBufferInfo (m_stdOut, &sbi); +// m_bufferSize = QSize (sbi.dwSize.X, qMax (sbi.dwSize.Y, (SHORT)value)); +} + void QConsolePrivate::drawTextBackground (QPainter& p, int cx1, int cy1, int cx2, int cy2, int cw, int ch) { @@ -1512,6 +1521,13 @@ d->setCursorColor (useForegroundColor, color); } +void QWinTerminalImpl::setScrollBufferSize(int value) +{ +// FIXME: not tested code follows +// d->setScrollBufferSize (value); +} + + ////////////////////////////////////////////////////////////////////////////// void QWinTerminalImpl::setTerminalFont (const QFont& f) diff -r 40dce9423baa -r 6e81b59d657c libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h --- a/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h Sun Mar 30 20:18:18 2014 -0400 +++ b/libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h Thu Mar 06 03:56:59 2014 +0500 @@ -60,6 +60,7 @@ void setForegroundColor (const QColor& color); void setSelectionColor (const QColor& color); void setCursorColor (bool useForegoundColor, const QColor& color); + void setScrollBufferSize(int value); QString selectedText (); diff -r 40dce9423baa -r 6e81b59d657c libgui/src/settings-dialog.cc --- a/libgui/src/settings-dialog.cc Sun Mar 30 20:18:18 2014 -0400 +++ b/libgui/src/settings-dialog.cc Thu Mar 06 03:56:59 2014 +0500 @@ -191,6 +191,8 @@ settings->value ("terminal/fontName","Courier New").toString ()) ); ui->terminal_fontSize->setValue ( settings->value ("terminal/fontSize", 10).toInt ()); + ui->terminal_history_buffer->setValue ( + settings->value ("terminal/history_buffer",1000).toInt ()); // file browser ui->showFileSize->setChecked ( @@ -626,6 +628,8 @@ ui->terminal_cursorUseForegroundColor->isChecked ()); settings->setValue ("terminal/focus_after_command", ui->terminal_focus_command->isChecked ()); + settings->setValue ("terminal/history_buffer", + ui->terminal_history_buffer->value() ); // the cursor QString cursorType; diff -r 40dce9423baa -r 6e81b59d657c libgui/src/settings-dialog.ui --- a/libgui/src/settings-dialog.ui Sun Mar 30 20:18:18 2014 -0400 +++ b/libgui/src/settings-dialog.ui Thu Mar 06 03:56:59 2014 +0500 @@ -32,7 +32,7 @@ - 1 + 3 @@ -1255,6 +1255,62 @@ + + + + 0 + + + + + 0 + + + 5000 + + + 20 + + + 1000 + + + + + + + (Changing buffer size clears history) + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 100 + 20 + + + + History buffer Size + + + @@ -1271,19 +1327,12 @@ - - - - Qt::Horizontal - 40 20 - - @@ -1340,6 +1389,9 @@ Qt::Vertical + + QSizePolicy::Expanding + 20