X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiProgress.cpp;h=c7b556e4e7ec16e01c591a84afa314c80e406ab9;hb=588d939722f4a516e8e4a932086e574bc3b13065;hp=c43a96922b01e51828ae01b03db830134086ca79;hpb=1dab222d830e76693d118d5eb8d9ab8b9c1ae0d3;p=lyx.git diff --git a/src/frontends/qt4/GuiProgress.cpp b/src/frontends/qt4/GuiProgress.cpp index c43a96922b..c7b556e4e7 100644 --- a/src/frontends/qt4/GuiProgress.cpp +++ b/src/frontends/qt4/GuiProgress.cpp @@ -5,6 +5,7 @@ * Licence details can be found in the file COPYING. * * \author Peter Kümmel + * \author Pavel Sanda * * Full author contact details are available in file CREDITS. */ @@ -16,6 +17,9 @@ #include "qt_helpers.h" +#include "frontends/alert.h" + +#include "support/debug.h" #include "support/Systemcall.h" #include @@ -28,6 +32,9 @@ namespace lyx { namespace frontend { +// FIXME: This dialog has issues with line breaking and size, in particular with +// html. But it could easily be reimplemented as a QMessageBox using +// QMessageBox::setCheckBox() available starting from Qt 5.2 class GuiToggleWarningDialog : public QDialog, public Ui::ToggleWarningUi { public: @@ -39,11 +46,10 @@ public: }; -GuiProgress::GuiProgress(GuiView * view) : view_(view) +GuiProgress::GuiProgress() { connect(this, SIGNAL(processStarted(QString const &)), SLOT(doProcessStarted(QString const &))); - // Don't overwrite other result messages. - //connect(this, SIGNAL(processFinished(QString const &)), SLOT(doProcessFinished(QString const &))); + connect(this, SIGNAL(processFinished(QString const &)), SLOT(doProcessFinished(QString const &))); connect(this, SIGNAL(appendMessage(QString const &)), SLOT(doAppendMessage(QString const &))); connect(this, SIGNAL(appendError(QString const &)), SLOT(doAppendError(QString const &))); connect(this, SIGNAL(clearMessages()), SLOT(doClearMessages())); @@ -53,52 +59,104 @@ GuiProgress::GuiProgress(GuiView * view) : view_(view) SLOT(doWarning(QString const &, QString const &))); connect(this, SIGNAL(toggleWarning(QString const &, QString const &, QString const &)), SLOT(doToggleWarning(QString const &, QString const &, QString const &))); - connect(this, SIGNAL(error(QString const &, QString const &)), - SLOT(doError(QString const &, QString const &))); + connect(this, SIGNAL(error(QString const &, QString const &, QString const &)), + SLOT(doError(QString const &, QString const &, QString const &))); connect(this, SIGNAL(information(QString const &, QString const &)), SLOT(doInformation(QString const &, QString const &))); + connect(this, SIGNAL(triggerFlush()), + SLOT(startFlushing())); + + flushDelay_.setInterval(200); + flushDelay_.setSingleShot(true); + connect(&flushDelay_, SIGNAL(timeout()), this, SLOT(updateWithLyXErr())); +} - support::ProgressInterface::setInstance(this); + +int GuiProgress::prompt(docstring const & title, docstring const & question, + int default_button, int cancel_button, + docstring const & b1, docstring const & b2) +{ + return Alert::prompt(title, question, default_button, cancel_button, b1, b2); +} + + +QString GuiProgress::currentTime() +{ + return QTime::currentTime().toString("hh:mm:ss.zzz"); } void GuiProgress::doProcessStarted(QString const & cmd) { - QString time = QTime::currentTime().toString(); - appendText(time + ": <" + cmd + "> started\n"); + appendText(currentTime() + ": <" + cmd + "> started"); } void GuiProgress::doProcessFinished(QString const & cmd) { - QString time = QTime::currentTime().toString(); - appendText(time + ": <" + cmd + "> done\n"); + appendText(currentTime() + ": <" + cmd + "> done"); } void GuiProgress::doAppendMessage(QString const & msg) { - QString time = QTime::currentTime().toString(); - appendText(time + " : " + msg); + appendText(msg); } void GuiProgress::doAppendError(QString const & msg) { - QString time = QTime::currentTime().toString(); - appendText(time + " : " + msg); + appendText(msg); } void GuiProgress::doClearMessages() { - view_->message(docstring()); + clearMessageText(); +} + + +void GuiProgress::startFlushing() +{ + flushDelay_.start(); +} + + +void GuiProgress::lyxerrFlush() +{ + triggerFlush(); +} + + +void GuiProgress::updateWithLyXErr() +{ + appendLyXErrMessage(toqstr(lyxerr_stream_.str())); + lyxerr_stream_.str(""); +} + + +void GuiProgress::lyxerrConnect() +{ + lyxerr.setSecondStream(&lyxerr_stream_); +} + + +void GuiProgress::lyxerrDisconnect() +{ + lyxerr.setSecondStream(0); +} + + +GuiProgress::~GuiProgress() +{ + lyxerrDisconnect(); } void GuiProgress::appendText(QString const & text) { - view_->updateMessage(text); + if (!text.isEmpty()) + updateStatusBarMessage(text); } @@ -128,9 +186,13 @@ void GuiProgress::doToggleWarning(QString const & title, QString const & msg, QS } -void GuiProgress::doError(QString const & title, QString const & message) +void GuiProgress::doError(QString const & title, QString const & message, QString const & details) { - QMessageBox::critical(qApp->focusWidget(), title, message); + QMessageBox box(QMessageBox::Critical, title, message, QMessageBox::Ok, qApp->focusWidget()); + if (!details.isEmpty()) { + box.setDetailedText(details); + } + box.exec(); }