lyx_mirror/src/frontends/qt4/Alert_pimpl.C
Abdelrazak Younes 55eae1a7f8 * Gui.h: new closeAll() pure virtual method.
* qt4/Alert_pimpl.C: make sure the proper Qt attributes are set.

* GuiApplication::quitLyx(): add the "force" argument to the funcRequest.

* GuiImplementation:
  - GuiImplementation(): remove the signal connection. This was triggered after the LastWindowClosed signal so was not useful.
  - cleanupViews(): renamed to unregisterView() and handle the WorkAreas as well.
  - closeAll(): new method (from LyXView).

* GuiView.C
  - clean up the includes order.
  - closeEvent(): make sure that theBufferList().quitWriteAll() is called if last window closed.

* lyx_main.C / LyX::quit():
  - remove noAsk argument
  - delete bufferList::quitWriteAll() call (this is handled in the frontend).
  - delete Session stuff (ditto)

* LyXFunc::dispatch()
  - LFUN_LYX_EXIT: close all window before exiting from user command (as opposed to last window closed).



git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@15535 a592a061-630c-0410-9148-cb99ea01b6c8
2006-10-24 15:01:07 +00:00

129 lines
2.7 KiB
C

/**
* \file qt4/Alert_pimpl.C
* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
* \author John Levon
* \author Abdelrazak Younes
*
* Full author contact details are available in file CREDITS.
*/
#include <config.h>
#include "Alert_pimpl.h"
#include "Alert.h"
#include "ui/QAskForTextUi.h"
#include "qt_helpers.h"
#include "gettext.h"
#include <QApplication>
#include <QMessageBox>
#include <QLabel>
#include <QLineEdit>
#include <QDialog>
#include <QInputDialog>
#include <algorithm>
using std::pair;
using std::make_pair;
namespace lyx {
using lyx::support::bformat;
using lyx::docstring;
namespace {
class MessageBox: public QMessageBox
{
public:
MessageBox(QWidget * parent = 0): QMessageBox(parent)
{
setAttribute(Qt::WA_DeleteOnClose, true);
setAttribute(Qt::WA_QuitOnClose, false);
}
};
} // anonymous namespace
int prompt_pimpl(docstring const & tit, docstring const & question,
int default_button, int cancel_button,
docstring const & b1, docstring const & b2, docstring const & b3)
{
docstring const title = bformat(_("LyX: %1$s"), tit);
MessageBox mb;
// FIXME replace that with theApp->gui()->currentView()
int res = mb.information(qApp->focusWidget(),
toqstr(title),
toqstr(formatted(question)),
toqstr(b1),
toqstr(b2),
b3.empty() ? QString::null : toqstr(b3),
default_button, cancel_button);
// Qt bug: can return -1 on cancel or WM close, despite the docs.
if (res == -1)
res = cancel_button;
return res;
}
void warning_pimpl(docstring const & tit, docstring const & message)
{
docstring const title = bformat(_("LyX: %1$s"), tit);
MessageBox mb;
mb.warning(qApp->focusWidget(),
toqstr(title),
toqstr(formatted(message)));
}
void error_pimpl(docstring const & tit, docstring const & message)
{
docstring const title = bformat(_("LyX: %1$s"), tit);
MessageBox mb;
mb.critical(qApp->focusWidget(),
toqstr(title),
toqstr(formatted(message)));
}
void information_pimpl(docstring const & tit, docstring const & message)
{
docstring const title = bformat(_("LyX: %1$s"), tit);
MessageBox mb;
mb.information(qApp->focusWidget(),
toqstr(title),
toqstr(formatted(message)));
}
pair<bool, docstring> const
askForText_pimpl(docstring const & msg, docstring const & dflt)
{
docstring const title = bformat(_("LyX: %1$s"), msg);
bool ok;
QString text = QInputDialog::getText(qApp->focusWidget(),
toqstr(title),
toqstr(lyx::char_type('&') + msg),
QLineEdit::Normal,
toqstr(dflt), &ok);
if (ok && !text.isEmpty())
return make_pair<bool, docstring>(true, qstring_to_ucs4(text));
else
return make_pair<bool, docstring>(false, docstring());
}
} // namespace lyx