]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiProgressView.cpp
Fix the tab ordering of GuiDocument components.
[lyx.git] / src / frontends / qt4 / GuiProgressView.cpp
index 0e137c89c480dc9a2f0312a1d9cf20d07494c205..2665e46f21fb997d708a0ae007dfaa4c2a446717 100644 (file)
@@ -49,13 +49,13 @@ GuiProgressView::~GuiProgressView()
 
 GuiProgressView::GuiProgressView(GuiView & parent, Qt::DockWidgetArea area, 
        Qt::WindowFlags flags)
-       : DockView(parent, "progress", "Debug/Progress window", area, flags)
+       : DockView(parent, "progress", qt_("Progress/Debug Messages"), area, flags)
 {
+       eol_last_ = true;
        widget_ = new ProgressViewWidget();
-#if QT_VERSION < 0x040400
-       widget_->scrollArea->setWidget(widget_->scrollAreaWidgetContents);
-#endif
        widget_->setMinimumHeight(150);
+       widget_->debugMessagesTW->setSizePolicy(QSizePolicy::Ignored,
+                                               QSizePolicy::Expanding);
        widget_->adjustSize();
        setWidget(widget_);
 
@@ -80,15 +80,16 @@ GuiProgressView::GuiProgressView(GuiView & parent, Qt::DockWidgetArea area,
        QTreeWidgetItem * item = 0;
        widget_->debugMessagesTW->setColumnCount(2);
        widget_->debugMessagesTW->headerItem()->setText(0, qt_("Debug Level"));
-       widget_->debugMessagesTW->headerItem()->setText(1, qt_("Display"));
+       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, toqstr(Debug::description(level)));
+               item->setText(0, qt_(Debug::description(level)));
                item->setData(0, Qt::UserRole, int(level));
                item->setText(1, qt_("No"));
        }
        widget_->debugMessagesTW->resizeColumnToContents(0);
+       widget_->debugMessagesTW->resizeColumnToContents(1);
        connect(widget_->debugMessagesTW,
                SIGNAL(itemActivated(QTreeWidgetItem *, int)),
                this, SLOT(debugMessageActivated(QTreeWidgetItem *, int)));
@@ -104,7 +105,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()));
@@ -151,6 +152,12 @@ void GuiProgressView::debugSelectionChanged()
                levelChanged();
                return;
        }
+       QTreeWidgetItemIterator it(widget_->debugMessagesTW);
+       while (*it) {
+               (*it)->setText(1, level == Debug::NONE ?
+                               qt_("No") : qt_("Yes"));
+               ++it;
+       }
        widget_->debugMessagesTW->setEnabled(false);
        dispatch(FuncRequest(LFUN_DEBUG_LEVEL_SET, convert<string>(level)));
 }
@@ -158,22 +165,29 @@ void GuiProgressView::debugSelectionChanged()
 
 void GuiProgressView::clearText()
 {
-       if (widget_->autoClearCB->isChecked())
+       if (widget_->autoClearCB->isChecked()){
                widget_->outTE->clear();
+               eol_last_ = true;
+       }
 }
 
 
 void GuiProgressView::appendLyXErrText(QString const & text)
 {
+       widget_->outTE->moveCursor(QTextCursor::End);
        widget_->outTE->insertPlainText(text);
        widget_->outTE->ensureCursorVisible();
-
+       eol_last_ = false;
        // Give the user a chance to disable debug messages because
        // showing Debug::ANY messages completely blocks the GUI.
        // Text is not always send as the whole line, so we must be
        // careful about eolns.
-       if (text.endsWith("\n"))
+       // WARNING: processing events could cause crashes!
+       // TODO: find a better solution
+       if (text.endsWith("\n")) {
+               eol_last_ = true;
                QApplication::processEvents();
+       }
 }
 
 
@@ -181,11 +195,13 @@ void GuiProgressView::appendText(QString const & text)
 {
        if (text.isEmpty() || !widget_->sbarCB->isChecked())
                return;
-       QString str = QTime::currentTime().toString();
+       QString str = GuiProgress::currentTime();
        str += ": " + text;
-       if (!text.endsWith("\n"))
-               str += "\n";
+       if (!eol_last_)
+               str = "\n" + str;
+       eol_last_ = text.endsWith("\n");
 
+       widget_->outTE->moveCursor(QTextCursor::End);
        widget_->outTE->insertPlainText(str);
        widget_->outTE->ensureCursorVisible();
 }
@@ -227,11 +243,7 @@ void GuiProgressView::hideEvent(QHideEvent*)
 
 Dialog * createGuiProgressView(GuiView & guiview)
 {
-#ifdef Q_WS_MACX
-       return new GuiProgressView(guiview, Qt::RightDockWidgetArea, Qt::Drawer);
-#else
        return new GuiProgressView(guiview, Qt::BottomDockWidgetArea);
-#endif
 }