#include "support/systemcall.h"
#include "support/lstrings.h"
-#include "BoostFormat.h"
+#include "support/BoostFormat.h"
#include <fstream>
#include <algorithm>
#include <utility>
+#include <cerrno>
using std::vector;
using std::ifstream;
string const & msg2,
string const & msg3)
{
- if (lyxrc.use_gui
+ if (lyx_gui::use_gui
&& buf && buf->getUser() && buf->getUser()->owner()) {
string const str = msg1 + ' ' + msg2 + ' ' + msg3;
buf->getUser()->owner()->message(str);
// Menu callbacks
//
-//
-// File menu
-//
-// should be moved to lyxfunc.C
bool MenuWrite(BufferView * bv, Buffer * buffer)
{
- if (!buffer->save()) {
- if (Alert::askQuestion(_("Save failed. Rename and try again?"),
- MakeDisplayPath(buffer->fileName(), 50),
- _("(If not, document is not saved.)"))) {
- return WriteAs(bv, buffer);
- }
- return false;
- } else
+ if (buffer->save()) {
lastfiles->newFile(buffer->fileName());
- return true;
+ return true;
+ }
+
+ // FIXME: we don't tell the user *WHY* the save failed !!
+
+ string const file = MakeDisplayPath(buffer->fileName(), 30);
+
+#if USE_BOOST_FORMAT
+ boost::format fmt(_("The document %1$s could not be saved.\n\nDo you want to rename the document and try again?"));
+ fmt % file;
+ string text = fmt.str();
+#else
+ string text = _("The document ");
+ text += file + _(" could not be saved.\n\nDo you want to rename the document and try again?");
+#endif
+ int const ret = Alert::prompt(_("Rename and save?"),
+ text, 0, 1, _("&Rename"), _("&Cancel"));
+
+ if (ret == 0)
+ return WriteAs(bv, buffer);
+ return false;
}
-// should be moved to BufferView.C
-// Half of this func should be in LyXView, the rest in BufferView.
bool WriteAs(BufferView * bv, Buffer * buffer, string const & filename)
{
string fname = buffer->fileName();
} else
fname = filename;
- // Same name as we have already?
- if (!buffer->isUnnamed() && fname == oldname) {
- if (!Alert::askQuestion(_("Same name as document already has:"),
- MakeDisplayPath(fname, 50),
- _("Save anyway?")))
- return false;
- // Falls through to name change and save
- }
- // No, but do we have another file with this name open?
- else if (!buffer->isUnnamed() && bufferlist.exists(fname)) {
- if (Alert::askQuestion(_("Another document with same name open!"),
- MakeDisplayPath(fname, 50),
- _("Replace with current document?")))
- {
- bufferlist.close(bufferlist.getBuffer(fname));
-
- // Ok, change the name of the buffer, but don't save!
- buffer->setFileName(fname);
- buffer->markDirty();
-
- ShowMessage(buffer, _("Document renamed to '"),
- MakeDisplayPath(fname), _("', but not saved..."));
- }
- return false;
- } // Check whether the file exists
- else {
- FileInfo const myfile(fname);
- if (myfile.isOK() && !Alert::askQuestion(_("Document already exists:"),
- MakeDisplayPath(fname, 50),
- _("Replace file?")))
+ FileInfo const myfile(fname);
+ if (myfile.isOK()) {
+ string const file = MakeDisplayPath(fname, 30);
+
+#if USE_BOOST_FORMAT
+ boost::format fmt(_("The document %1$s already exists.\n\nDo you want to over-write that document?"));
+ fmt % file;
+ string text = fmt.str();
+#else
+ string text = _("The document ");
+ text += file + _(" already exists.\n\nDo you want to over-write that document?");
+#endif
+ int const ret = Alert::prompt(_("Over-write document?"),
+ text, 0, 1, _("&Over-write"), _("&Cancel"));
+
+ if (ret == 1)
return false;
}
buffer->setUnnamed(false);
if (!MenuWrite(bv, buffer)) {
- buffer->setFileName(oldname);
- buffer->setUnnamed(unnamed);
- ShowMessage(buffer, _("Document could not be saved!"),
- _("Holding the old name."), MakeDisplayPath(oldname));
- return false;
+ buffer->setFileName(oldname);
+ buffer->setUnnamed(unnamed);
+ return false;
}
- // now remove the oldname autosave file if existant!
+
removeAutosaveFile(oldname);
return true;
}
-int MenuRunChktex(Buffer * buffer)
-{
- int ret;
-
- if (buffer->isSGML()) {
- Alert::alert(_("Chktex does not work with SGML derived documents."));
- return 0;
- } else
- ret = buffer->runChktex();
-
- if (ret >= 0) {
- string s;
- string t;
- if (ret == 0) {
- s = _("No warnings found.");
- } else if (ret == 1) {
- s = _("One warning found.");
- t = _("Use `Navigate->Error' to find it.");
- } else {
- s += tostr(ret);
- s += _(" warnings found.");
- t = _("Use `Navigate->Error' to find them.");
- }
- Alert::alert(_("Chktex run successfully"), s, t);
- } else {
- Alert::alert(_("Error!"), _("It seems chktex does not work."));
- }
- return ret;
-}
-
-
void QuitLyX()
{
lyxerr[Debug::INFO] << "Running QuitLyX." << endl;
- if (lyxrc.use_gui) {
- if (!bufferlist.qwriteAll())
+ if (lyx_gui::use_gui) {
+ if (!bufferlist.quitWriteAll())
return;
lastfiles->writeFile(lyxrc.lastfiles);
// do any other cleanup procedures now
lyxerr[Debug::INFO] << "Deleting tmp dir " << system_tempdir << endl;
- DestroyLyXTmpDir(system_tempdir);
+ if (destroyDir(system_tempdir) != 0) {
+#if USE_BOOST_FORMAT
+ boost::format fmt = _("Could not remove the temporary directory %1$s");
+ fmt % system_tempdir;
+ string msg = fmt.str();
+#else
+ string msg = _("Could not remove the temporary directory ") + system_tempdir;
+#endif
+ Alert::warning(_("Could not remove temporary directory"), msg);
+ }
lyx_gui::exit();
}
FileInfo fi(fname);
if (!fi.readable()) {
- Alert::err_alert(_("Error! Specified file is unreadable: "),
- MakeDisplayPath(fname, 50));
+ string const error = strerror(errno);
+ string const file = MakeDisplayPath(fname, 50);
+#if USE_BOOST_FORMAT
+ boost::format fmt(_("Could not read the specified document\n%1$s\ndue to the error: %2$s"));
+ fmt % file;
+ fmt % error;
+ string text = fmt.str();
+#else
+ string text = _("Could not read the specified document\n");
+ text += file + _(" due to the error: ");
+ text += error;
+#endif
+ Alert::error(_("Could not read file"), text);
return string();
}
ifstream ifs(fname.c_str());
if (!ifs) {
- Alert::err_alert(_("Error! Cannot open specified file:"),
- MakeDisplayPath(fname, 50));
+ string const error = strerror(errno);
+ string const file = MakeDisplayPath(fname, 50);
+#if USE_BOOST_FORMAT
+ boost::format fmt(_("Could not open the specified document\n%1$s\ndue to the error: %2$s"));
+ fmt % file;
+ fmt % error;
+ string text = fmt.str();
+#else
+ string text = _("Could not open the specified document\n");
+ text += file + _(" due to the error: ");
+ text += error;
+#endif
+ Alert::error(_("Could not open file"), text);
return string();
}
string const getPossibleLabel(BufferView const & bv)
{
- Paragraph * par = bv.getLyXText()->cursor.par();
+ Paragraph * par = &*bv.getLyXText()->cursor.par();
LyXLayout_ptr layout = par->layout();
if (layout->latextype == LATEX_PARAGRAPH && par->previous()) {
Paragraph * par2 = par->previous();
p.pop();
bv->owner()->message(_("Reloading configuration..."));
lyxrc.read(LibFileSearch(string(), "lyxrc.defaults"));
- Alert::alert(_("The system has been reconfigured."),
- _("You need to restart LyX to make use of any"),
- _("updated document class specifications."));
+
+ Alert::information(_("System reconfigured"),
+ _("The system has been reconfigured.\n"
+ "You need to restart LyX to make use of any \n"
+ "updated document class specifications."));
}