]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiProgressView.cpp
QDialogButtonBox for the remaining dialogs.
[lyx.git] / src / frontends / qt4 / GuiProgressView.cpp
index 9bcbad01fe8ac08ed7381cb6498f1c9e3f036856..486fdaf54ecd7552281f0c41476864b27db213e1 100644 (file)
@@ -16,6 +16,7 @@
 #include "GuiProgressView.h"
 
 #include "GuiApplication.h"
+#include "GuiProgress.h"
 #include "qt_helpers.h"
 
 #include "FuncRequest.h"
@@ -23,6 +24,8 @@
 #include "support/convert.h"
 #include "support/debug.h"
 
+#include <algorithm>
+
 #include <QCheckBox>
 #include <QDebug>
 #include <QSettings>
@@ -47,23 +50,30 @@ GuiProgressView::~GuiProgressView()
 }
 
 
-GuiProgressView::GuiProgressView(GuiView & parent, Qt::DockWidgetArea area, 
+namespace{
+typedef pair<int, QString> DebugMap;
+typedef vector<DebugMap> DebugVector;
+
+bool DebugSorter(DebugMap const & a, DebugMap const & b)
+{
+       return a.second < b.second;
+}
+} // namespace
+
+
+GuiProgressView::GuiProgressView(GuiView & parent, Qt::DockWidgetArea area,
        Qt::WindowFlags flags)
        : DockView(parent, "progress", qt_("Progress/Debug Messages"), area, flags)
 {
        eol_last_ = true;
-       widget_ = new ProgressViewWidget();
+       widget_ = new ProgressViewWidget;
        widget_->setMinimumHeight(150);
        widget_->debugMessagesTW->setSizePolicy(QSizePolicy::Ignored,
                                                QSizePolicy::Expanding);
        widget_->adjustSize();
        setWidget(widget_);
 
-       QFont font(guiApp->typewriterFontName());
-       font.setKerning(false);
-       font.setFixedPitch(true);
-       font.setStyleHint(QFont::TypeWriter);
-       widget_->outTE->setFont(font);
+       widget_->outTE->setFont(guiApp->typewriterSystemFont());
        widget_->tabWidget->widget(0)->setContentsMargins(-5, -7, 0, -7);
 
        connect(widget_->debugNoneRB, SIGNAL(clicked()),
@@ -77,15 +87,26 @@ GuiProgressView::GuiProgressView(GuiView & parent, Qt::DockWidgetArea area,
 
        // ignore Debug::NONE and Debug::ANY
        int const level_count = Debug::levelCount() - 1;
-       QTreeWidgetItem * item = 0;
+       DebugVector dmap;
+       for (int i = 1 ; i < level_count; i++) {
+               Debug::Type const level = Debug::value(i);
+               QString const desc =
+                       toqstr(from_ascii(Debug::name(level) + " - "))
+                       + qt_(Debug::description(level));
+               dmap.push_back(DebugMap(level, desc));
+       }
+       sort(dmap.begin(), dmap.end(), DebugSorter);
+
        widget_->debugMessagesTW->setColumnCount(2);
        widget_->debugMessagesTW->headerItem()->setText(0, qt_("Debug Level"));
        widget_->debugMessagesTW->headerItem()->setText(1, qt_("Set"));
-       for (int i = 1 ; i < level_count; i++) {
-               item = new QTreeWidgetItem(widget_->debugMessagesTW);
-               Debug::Type const level = Debug::value(i);
-               item->setText(0, qt_(Debug::description(level)));
-               item->setData(0, Qt::UserRole, int(level));
+
+       DebugVector::const_iterator dit = dmap.begin();
+       DebugVector::const_iterator const den = dmap.end();
+       for (; dit != den; ++dit) {
+               QTreeWidgetItem * item = new QTreeWidgetItem(widget_->debugMessagesTW);
+               item->setText(0, dit->second);
+               item->setData(0, Qt::UserRole, int(dit->first));
                item->setText(1, qt_("No"));
        }
        widget_->debugMessagesTW->resizeColumnToContents(0);
@@ -93,7 +114,7 @@ GuiProgressView::GuiProgressView(GuiView & parent, Qt::DockWidgetArea area,
        connect(widget_->debugMessagesTW,
                SIGNAL(itemActivated(QTreeWidgetItem *, int)),
                this, SLOT(debugMessageActivated(QTreeWidgetItem *, int)));
-  
+
        GuiProgress * progress =
                dynamic_cast<GuiProgress *>(ProgressInterface::instance());
 
@@ -105,7 +126,7 @@ GuiProgressView::GuiProgressView(GuiView & parent, Qt::DockWidgetArea area,
                connect(progress, SIGNAL(appendMessage(QString const &)),
                        this, SLOT(appendText(QString const &)));
                connect(progress, SIGNAL(appendLyXErrMessage(QString const &)),
-                       this, SLOT(appendLyXErrText(QString const &)));
+                       this, SLOT(appendLyXErrText(QString const &)), Qt::QueuedConnection);
                connect(progress, SIGNAL(appendError(QString const &)),
                        this, SLOT(appendText(QString const &)));
                connect(progress, SIGNAL(clearMessages()), this, SLOT(clearText()));
@@ -131,7 +152,7 @@ void GuiProgressView::debugMessageActivated(QTreeWidgetItem * item, int)
 
 void GuiProgressView::levelChanged()
 {
-       int level = Debug::NONE;
+       unsigned int level = Debug::NONE;
        QTreeWidgetItemIterator it(widget_->debugMessagesTW);
        while (*it) {
                if ((*it)->text(1) == qt_("Yes"))
@@ -144,7 +165,7 @@ void GuiProgressView::levelChanged()
 
 void GuiProgressView::debugSelectionChanged()
 {
-       int level = Debug::NONE;
+       Debug::Type level = Debug::NONE;
        if (widget_->debugAnyRB->isChecked())
                level = Debug::ANY;
        else if (widget_->debugSelectedRB->isChecked()) {
@@ -159,7 +180,7 @@ void GuiProgressView::debugSelectionChanged()
                ++it;
        }
        widget_->debugMessagesTW->setEnabled(false);
-       dispatch(FuncRequest(LFUN_DEBUG_LEVEL_SET, convert<string>(level)));
+       dispatch(FuncRequest(LFUN_DEBUG_LEVEL_SET, convert<string>((int)level)));
 }
 
 
@@ -174,6 +195,10 @@ void GuiProgressView::clearText()
 
 void GuiProgressView::appendLyXErrText(QString const & text)
 {
+       // Skip verbose messages meant for the terminal
+       if (text.startsWith("\nRunning:"))
+               return;
+
        widget_->outTE->moveCursor(QTextCursor::End);
        widget_->outTE->insertPlainText(text);
        widget_->outTE->ensureCursorVisible();
@@ -207,10 +232,9 @@ void GuiProgressView::appendText(QString const & text)
 }
 
 
-void GuiProgressView::saveSession() const
+void GuiProgressView::saveSession(QSettings & settings) const
 {
-       Dialog::saveSession();
-       QSettings settings;
+       Dialog::saveSession(settings);
        settings.setValue(
                sessionKey() + "/autoclear", widget_->autoClearCB->isChecked());
        settings.setValue(