changeset 18610:6e81b59d657c gui-release

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)
author Ahsan Ali Shahid <ahsan.ali.shahid@gmail.com>
date Thu, 06 Mar 2014 03:56:59 +0500
parents 40dce9423baa
children 086093fbdc1a
files libgui/qterminal/libqterminal/QTerminal.cc libgui/qterminal/libqterminal/QTerminal.h libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.cpp libgui/qterminal/libqterminal/unix/QUnixTerminalImpl.h libgui/qterminal/libqterminal/win32/QWinTerminalImpl.cpp libgui/qterminal/libqterminal/win32/QWinTerminalImpl.h libgui/src/settings-dialog.cc libgui/src/settings-dialog.ui
diffstat 8 files changed, 96 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- 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<QColor> ());
+  setScrollBufferSize (settings->value ("terminal/history_buffer",1000).toInt() );
 }
--- 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&);
--- 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()
 {
--- 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:
--- 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)
--- 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 ();
 
--- 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;
--- 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 @@
       </size>
      </property>
      <property name="currentIndex">
-      <number>1</number>
+      <number>3</number>
      </property>
      <widget class="QWidget" name="tab_general">
       <property name="enabled">
@@ -1255,6 +1255,62 @@
                  </item>
                 </layout>
                </item>
+              <item row="2" column="2">
+                <layout class="QHBoxLayout" name="horizontalLayout_5">
+                 <property name="topMargin">
+                  <number>0</number>
+               </property>
+                 <item>
+                  <widget class="QSpinBox" name="terminal_history_buffer">
+                   <property name="minimum">
+                    <number>0</number>
+                   </property>
+                   <property name="maximum">
+                    <number>5000</number>
+                   </property>
+                   <property name="singleStep">
+                    <number>20</number>
+                   </property>
+                   <property name="value">
+                    <number>1000</number>
+                   </property>
+                 </widget>
+                 </item>
+                 <item>
+                  <widget class="QLabel" name="label_20">
+                   <property name="text">
+                    <string>(Changing buffer size clears history)</string>
+                   </property>
+                  </widget>
+                 </item>
+                 <item>
+                  <spacer name="horizontalSpacer_16">
+                   <property name="orientation">
+                    <enum>Qt::Horizontal</enum>
+                   </property>
+                   <property name="sizeHint" stdset="0">
+                    <size>
+                     <width>40</width>
+                     <height>20</height>
+                    </size>
+                   </property>
+                  </spacer>
+                 </item>
+                </layout>
+               </item>
+               <item row="2" column="0">
+                <widget class="QLabel" name="label_19">
+                 <property name="minimumSize">
+                  <size>
+                   <width>100</width>
+                   <height>20</height>
+                  </size>
+                 </property>
+                 <property name="text">
+                  <string>History buffer Size</string>
+                 </property>
+                </widget>
+               </item>
                <item row="0" column="1">
                 <spacer name="horizontalSpacer_28">
                  <property name="orientation">
@@ -1271,19 +1327,12 @@
                  </property>
                 </spacer>
                </item>
-               <item row="1" column="3">
-                <spacer name="horizontalSpacer_26">
-                 <property name="orientation">
-                  <enum>Qt::Horizontal</enum>
-                 </property>
                  <property name="sizeHint" stdset="0">
                   <size>
                    <width>40</width>
                    <height>20</height>
                   </size>
                  </property>
-                </spacer>
-               </item>
               </layout>
              </item>
              <item>
@@ -1340,6 +1389,9 @@
              <property name="orientation">
               <enum>Qt::Vertical</enum>
              </property>
+             <property name="sizeType">
+              <enum>QSizePolicy::Expanding</enum>
+             </property>
              <property name="sizeHint" stdset="0">
               <size>
                <width>20</width>