]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiProgress.cpp
Set a maximum value to zoom level
[lyx.git] / src / frontends / qt4 / GuiProgress.cpp
index aec058cf8e66110787aa9fe23ce71a0882b90308..a21baf338c3042426f2429c4dc2c5bdbd989cab4 100644 (file)
@@ -17,6 +17,8 @@
 
 #include "qt_helpers.h"
 
+#include "frontends/alert.h"
+
 #include "support/debug.h"
 #include "support/Systemcall.h"
 
@@ -30,6 +32,10 @@ namespace lyx {
 namespace frontend {
 
 
+// This dialog is only a fallback for Qt < 5.2, which does not feature
+// QMessageBox::setCheckBox() yet. Note that it has issues with line
+// breaking and size, in particular with html.
+#if QT_VERSION < 0x050200
 class GuiToggleWarningDialog : public QDialog, public Ui::ToggleWarningUi
 {
 public:
@@ -39,6 +45,7 @@ public:
                QDialog::setModal(true);
        }
 };
+#endif
 
 
 GuiProgress::GuiProgress()
@@ -48,14 +55,14 @@ GuiProgress::GuiProgress()
        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()));
-       
+
        // Alert interface
        connect(this, SIGNAL(warning(QString const &, QString const &)),
                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()),
@@ -67,6 +74,14 @@ GuiProgress::GuiProgress()
 }
 
 
+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");
@@ -159,6 +174,9 @@ void GuiProgress::doToggleWarning(QString const & title, QString const & msg, QS
        if (settings.value("hidden_warnings/" + msg, false).toBool())
                        return;
 
+// Qt < 5.2 does not feature QMessageBox::setCheckBox() yet,
+// so we roll our own dialog.
+#if QT_VERSION < 0x050200
        GuiToggleWarningDialog * dlg =
                new GuiToggleWarningDialog(qApp->focusWidget());
 
@@ -170,12 +188,28 @@ void GuiProgress::doToggleWarning(QString const & title, QString const & msg, QS
                if (dlg->dontShowAgainCB->isChecked())
                        settings.setValue("hidden_warnings/"
                                + msg, true);
+#else
+       QCheckBox * dontShowAgainCB = new QCheckBox();
+       dontShowAgainCB->setText(qt_("&Do not show this warning again!"));
+       dontShowAgainCB->setToolTip(qt_("If you check this, LyX will not warn you again in the given case."));
+       QMessageBox box(QMessageBox::Warning, title, formatted,
+                       QMessageBox::Ok, qApp->focusWidget());
+       box.setCheckBox(dontShowAgainCB);
+       if (box.exec() == QMessageBox::Ok)
+               if (dontShowAgainCB->isChecked())
+                       settings.setValue("hidden_warnings/"
+                               + msg, true);
+#endif
 }
 
 
-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();
 }