Преглед на файлове

ENH: make sure html < > & stuff is escaped for the output window

Bill Hoffman преди 18 години
родител
ревизия
7b1c305d86
променени са 2 файла, в които са добавени 19 реда и са изтрити 2 реда
  1. 18 2
      Source/QtDialog/CMakeSetupDialog.cxx
  2. 1 0
      Source/QtDialog/CMakeSetupDialog.h

+ 18 - 2
Source/QtDialog/CMakeSetupDialog.cxx

@@ -16,7 +16,6 @@
 =========================================================================*/
 
 #include "CMakeSetupDialog.h"
-
 #include <QFileDialog>
 #include <QProgressBar>
 #include <QMessageBox>
@@ -177,7 +176,7 @@ void CMakeSetupDialog::initialize()
 
   QObject::connect(this->CMakeThread->cmakeInstance(),
                    SIGNAL(outputMessage(QString)),
-                   this->Output, SLOT(append(QString)));
+                   this, SLOT(message(QString)));
 
   QObject::connect(this->Advanced, SIGNAL(clicked(bool)), 
                    this->CacheValues, SLOT(setShowAdvanced(bool)));
@@ -467,10 +466,27 @@ void CMakeSetupDialog::error(const QString& message)
   QStringList messages = message.split('\n');
   foreach(QString m, messages)
     {
+    // make sure we escape html tags in the cmake messages
+    m.replace(QString("&"), QString("&amp;"));
+    m.replace(QString("<"), QString("&lt;"));
+    m.replace(QString(">"), QString("&gt;"));
     this->Output->append(QString("<b><font color=red>%1</font></b>").arg(m));
     }
 }
 
+void CMakeSetupDialog::message(const QString& message)
+{
+  QStringList messages = message.split('\n');
+  foreach(QString m, messages)
+    {
+    // make sure we escape html tags in the cmake messages
+    m.replace(QString("&"), QString("&amp;"));
+    m.replace(QString("<"), QString("&lt;"));
+    m.replace(QString(">"), QString("&gt;"));
+    this->Output->append(m);
+    }
+}
+
 void CMakeSetupDialog::setEnabledState(bool enabled)
 {
   // disable parts of the GUI during configure/generate

+ 1 - 0
Source/QtDialog/CMakeSetupDialog.h

@@ -50,6 +50,7 @@ protected slots:
   void finishConfigure(int error);
   void finishGenerate(int error);
   void error(const QString& message);
+  void message(const QString& message);
   
   void doSourceBrowse();
   void doBinaryBrowse();