From f391988ee5f85789d525caf09381f15a88d3f4d3 Mon Sep 17 00:00:00 2001
From: Leandro Melo <leandro.melo@nokia.com>
Date: Wed, 8 Sep 2010 16:35:50 +0200
Subject: [PATCH] Add option for the word-wrap mode of the application output.

Task-number: QTCREATORBUG-2190
Reviewed-by: dt
---
 src/plugins/projectexplorer/outputwindow.cpp        | 13 +++++++++++++
 src/plugins/projectexplorer/outputwindow.h          |  3 +++
 src/plugins/projectexplorer/projectexplorer.cpp     |  2 ++
 .../projectexplorer/projectexplorersettings.h       |  7 +++++--
 .../projectexplorer/projectexplorersettingspage.cpp |  2 ++
 .../projectexplorer/projectexplorersettingspage.ui  |  9 ++++++++-
 6 files changed, 33 insertions(+), 3 deletions(-)

diff --git a/src/plugins/projectexplorer/outputwindow.cpp b/src/plugins/projectexplorer/outputwindow.cpp
index 9e2d728df77..3304912f7c7 100644
--- a/src/plugins/projectexplorer/outputwindow.cpp
+++ b/src/plugins/projectexplorer/outputwindow.cpp
@@ -482,6 +482,8 @@ OutputWindow::OutputWindow(QWidget *parent)
     //setCenterOnScroll(false);
     setFrameShape(QFrame::NoFrame);
     setMouseTracking(true);
+    if (!ProjectExplorerPlugin::instance()->projectExplorerSettings().wrapAppOutput)
+        setWordWrapMode(QTextOption::NoWrap);
 
     static uint usedIds = 0;
     Core::ICore *core = Core::ICore::instance();
@@ -520,6 +522,9 @@ OutputWindow::OutputWindow(QWidget *parent)
     redoAction->setEnabled(false);
     cutAction->setEnabled(false);
     copyAction->setEnabled(false);
+
+    connect(ProjectExplorerPlugin::instance(), SIGNAL(settingsChanged()),
+            this, SLOT(updateWordWrapMode()));
 }
 
 OutputWindow::~OutputWindow()
@@ -738,5 +743,13 @@ void OutputWindow::enableUndoRedo()
     setUndoRedoEnabled(true);
 }
 
+void OutputWindow::updateWordWrapMode()
+{
+    if (ProjectExplorerPlugin::instance()->projectExplorerSettings().wrapAppOutput)
+        setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
+    else
+        setWordWrapMode(QTextOption::NoWrap);
+}
+
 } // namespace Internal
 } // namespace ProjectExplorer
diff --git a/src/plugins/projectexplorer/outputwindow.h b/src/plugins/projectexplorer/outputwindow.h
index b9a59f7104a..ad6999ea1dd 100644
--- a/src/plugins/projectexplorer/outputwindow.h
+++ b/src/plugins/projectexplorer/outputwindow.h
@@ -176,6 +176,9 @@ protected:
     virtual void mouseReleaseEvent(QMouseEvent *e);
     virtual void mouseMoveEvent(QMouseEvent *e);
 
+private slots:
+    void updateWordWrapMode();
+
 private:
     void enableUndoRedo();
     QString doNewlineEnfocement(const QString &out);
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index 8ee1d474756..5b0ba9b89ac 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -797,6 +797,7 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
         d->m_projectExplorerSettings.saveBeforeBuild = s->value("ProjectExplorer/Settings/SaveBeforeBuild", false).toBool();
         d->m_projectExplorerSettings.showCompilerOutput = s->value("ProjectExplorer/Settings/ShowCompilerOutput", false).toBool();
         d->m_projectExplorerSettings.cleanOldAppOutput = s->value("ProjectExplorer/Settings/CleanOldAppOutput", false).toBool();
+        d->m_projectExplorerSettings.wrapAppOutput = s->value("ProjectExplorer/Settings/WrapAppOutput", true).toBool();
         d->m_projectExplorerSettings.useJom = s->value("ProjectExplorer/Settings/UseJom", true).toBool();
         d->m_projectExplorerSettings.environmentId = QUuid(s->value("ProjectExplorer/Settings/EnvironmentId").toString());
         if (d->m_projectExplorerSettings.environmentId.isNull())
@@ -1050,6 +1051,7 @@ void ProjectExplorerPlugin::savePersistentSettings()
         s->setValue("ProjectExplorer/Settings/SaveBeforeBuild", d->m_projectExplorerSettings.saveBeforeBuild);
         s->setValue("ProjectExplorer/Settings/ShowCompilerOutput", d->m_projectExplorerSettings.showCompilerOutput);
         s->setValue("ProjectExplorer/Settings/CleanOldAppOutput", d->m_projectExplorerSettings.cleanOldAppOutput);
+        s->setValue("ProjectExplorer/Settings/WrapAppOutput", d->m_projectExplorerSettings.wrapAppOutput);
         s->setValue("ProjectExplorer/Settings/UseJom", d->m_projectExplorerSettings.useJom);
         s->setValue("ProjectExplorer/Settings/EnvironmentId", d->m_projectExplorerSettings.environmentId.toString());
     }
diff --git a/src/plugins/projectexplorer/projectexplorersettings.h b/src/plugins/projectexplorer/projectexplorersettings.h
index 256f4ef2639..26b50a31e75 100644
--- a/src/plugins/projectexplorer/projectexplorersettings.h
+++ b/src/plugins/projectexplorer/projectexplorersettings.h
@@ -37,14 +37,16 @@ namespace Internal {
 
 struct ProjectExplorerSettings
 {
-    ProjectExplorerSettings() : buildBeforeDeploy(true), deployBeforeRun(true), saveBeforeBuild(false),
-                                showCompilerOutput(false), cleanOldAppOutput(false), useJom(true) {}
+    ProjectExplorerSettings() : buildBeforeDeploy(true), deployBeforeRun(true),
+                                saveBeforeBuild(false), showCompilerOutput(false),
+                                cleanOldAppOutput(false), wrapAppOutput(true), useJom(true) {}
 
     bool buildBeforeDeploy;
     bool deployBeforeRun;
     bool saveBeforeBuild;
     bool showCompilerOutput;
     bool cleanOldAppOutput;
+    bool wrapAppOutput;
     bool useJom;
     // Add a UUid which is used to identify the development environment.
     // This is used to warn the user when he is trying to open a .user file that was created
@@ -59,6 +61,7 @@ inline bool operator==(const ProjectExplorerSettings &p1, const ProjectExplorerS
             && p1.saveBeforeBuild == p2.saveBeforeBuild
             && p1.showCompilerOutput == p2.showCompilerOutput
             && p1.cleanOldAppOutput == p2.cleanOldAppOutput
+            && p1.wrapAppOutput == p2.wrapAppOutput
             && p1.useJom == p2.useJom;
 }
 
diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.cpp b/src/plugins/projectexplorer/projectexplorersettingspage.cpp
index 71f6ed60d9e..ec8a1419940 100644
--- a/src/plugins/projectexplorer/projectexplorersettingspage.cpp
+++ b/src/plugins/projectexplorer/projectexplorersettingspage.cpp
@@ -70,6 +70,7 @@ ProjectExplorerSettings ProjectExplorerSettingsWidget::settings() const
     pes.saveBeforeBuild = m_ui.saveAllFilesCheckBox->isChecked();
     pes.showCompilerOutput = m_ui.showCompileOutputCheckBox->isChecked();
     pes.cleanOldAppOutput = m_ui.cleanOldAppOutputCheckBox->isChecked();
+    pes.wrapAppOutput = m_ui.wrapAppOutputCheckBox->isChecked();
     pes.useJom = m_ui.jomCheckbox->isChecked();
     return pes;
 }
@@ -81,6 +82,7 @@ void ProjectExplorerSettingsWidget::setSettings(const ProjectExplorerSettings  &
     m_ui.saveAllFilesCheckBox->setChecked(pes.saveBeforeBuild);
     m_ui.showCompileOutputCheckBox->setChecked(pes.showCompilerOutput);
     m_ui.cleanOldAppOutputCheckBox->setChecked(pes.cleanOldAppOutput);
+    m_ui.wrapAppOutputCheckBox->setChecked(pes.wrapAppOutput);
     m_ui.jomCheckbox->setChecked(pes.useJom);
 }
 
diff --git a/src/plugins/projectexplorer/projectexplorersettingspage.ui b/src/plugins/projectexplorer/projectexplorersettingspage.ui
index dc0c30526d1..020f53f7d38 100644
--- a/src/plugins/projectexplorer/projectexplorersettingspage.ui
+++ b/src/plugins/projectexplorer/projectexplorersettingspage.ui
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>437</width>
-    <height>343</height>
+    <height>389</height>
    </rect>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout_3">
@@ -90,6 +90,13 @@
         </property>
        </widget>
       </item>
+      <item>
+       <widget class="QCheckBox" name="wrapAppOutputCheckBox">
+        <property name="text">
+         <string>Word-wrap application output</string>
+        </property>
+       </widget>
+      </item>
       <item>
        <layout class="QVBoxLayout" name="verticalLayout">
         <property name="spacing">
-- 
GitLab