/* This file is part of
- * ======================================================
- *
+ * ======================================================
+ *
* LyX, The Document Word Processor
*
* Copyright 1995 Matthias Ettrich
- * Copyright 1995-2001 The LyX Team.
+ * Copyright 1995-2001 The LyX Team.
*
* This file is Copyright 1996-2001
* Lars Gullik Bjønnes
*
- * ======================================================
+ * ======================================================
*/
#include <config.h>
#include "bufferlist.h"
#include "lyx_main.h"
-#include "lyx_gui_misc.h"
#include "lastfiles.h"
#include "debug.h"
#include "lyxrc.h"
#include "bufferview_funcs.h"
#include "BufferView.h"
#include "gettext.h"
-#include "LyXView.h"
+#include "frontends/LyXView.h"
#include "vc-backend.h"
#include "TextCache.h"
+#include "lyxtextclasslist.h"
#include "frontends/Alert.h"
if (buf->isUnnamed()) {
removeAutosaveFile(buf->fileName());
}
-
+
unsaved_list += MakeDisplayPath(fname, 50) + "\n";
return true;
case 3: // Cancel
return true;
}
-
+
bool BufferList::qwriteAll()
{
string unsaved;
return false;
}
}
-
+
if (!unsaved.empty() && lyxrc.exit_confirmation) {
return Alert::askQuestion(_("Some documents were not saved:"),
- unsaved, _("Exit anyway?"));
+ unsaved, _("Exit anyway?"));
}
return true;
// Since we are closing we can just as well delete all
// in the textcache this will also speed the closing/quiting up a bit.
textcache.clear();
-
+
while (!bstore.empty()) {
close(bstore.front());
}
bool BufferList::close(Buffer * buf)
{
lyx::Assert(buf);
-
+
// CHECK
// Trace back why we need to use buf->getUser here.
// Perhaps slight rewrite is in order? (Lgb)
-
- if (buf->getUser())
+
+ if (buf->getUser())
buf->getUser()->insetUnlock();
-
+
if (buf->paragraph && !buf->isLyxClean() && !quitting) {
if (buf->getUser())
buf->getUser()->owner()->prohibitInput();
Buffer * BufferList::first()
{
- if (bstore.empty()) return 0;
+ if (bstore.empty())
+ return 0;
return bstore.front();
}
Buffer * BufferList::getBuffer(unsigned int choice)
{
- if (choice >= bstore.size()) return 0;
+ if (choice >= bstore.size())
+ return 0;
return bstore[choice];
}
int BufferList::unlockInset(UpdatableInset * inset)
{
lyx::Assert(inset);
-
+
BufferStorage::iterator it = bstore.begin();
BufferStorage::iterator end = bstore.end();
for (; it != end; ++it) {
void BufferList::emergencyWriteAll()
{
for_each(bstore.begin(), bstore.end(),
- lyx::class_fun(*this, &BufferList::emergencyWrite));
+ lyx::void_class_fun(*this, &BufferList::emergencyWrite));
}
-void BufferList::emergencyWrite(Buffer * buf)
+void BufferList::emergencyWrite(Buffer * buf)
{
// assert(buf) // this is not good since C assert takes an int
- // and a pointer is a long (JMarc)
+ // and a pointer is a long (JMarc)
assert(buf != 0); // use c assert to avoid a loop
-
+
// No need to save if the buffer has not changed.
if (buf->isLyxClean())
return;
-
+
lyxerr << fmt(_("lyx: Attempting to save document %s as..."),
buf->isUnnamed() ? OnlyFilename(buf->fileName()).c_str()
: buf->fileName().c_str()) << endl;
-
+
// We try to save three places:
// 1) Same place as document. Unless it is an unnamed doc.
lyxerr << _(" Save failed! Trying...") << endl;
}
}
-
+
// 2) In HOME directory.
string s = AddName(GetEnvPath("HOME"), buf->fileName());
s += ".emergency";
lyxerr << _(" Save seems successful. Phew.") << endl;
return;
}
-
+
lyxerr << _(" Save failed! Trying...") << endl;
-
+
// 3) In "/tmp" directory.
// MakeAbsPath to prepend the current
// drive letter on OS/2
FileInfo fileInfo2(s);
if (!fileInfo2.exist()) {
- Alert::alert(_("Error!"), _("Cannot open file"),
+ Alert::alert(_("Error!"), _("Cannot open file"),
MakeDisplayPath(s));
return 0;
}
-
+
Buffer * b = bstore.newBuffer(s, ronly);
// Check if emergency save file exists and is newer.
bool BufferList::isLoaded(Buffer const * b) const
{
lyx::Assert(b);
-
+
BufferStorage::const_iterator cit =
find(bstore.begin(), bstore.end(), b);
return cit != bstore.end();
}
}
if (!templateok) {
- Alert::alert(_("Error!"), _("Unable to open template"),
+ Alert::alert(_("Error!"), _("Unable to open template"),
MakeDisplayPath(tname));
// no template, start with empty buffer
b->paragraph = new Paragraph;
+ b->paragraph->layout(textclasslist[b->params.textclass].defaultLayout());
}
} else { // start with empty buffer
b->paragraph = new Paragraph;
+ b->paragraph->layout(textclasslist[b->params.textclass].defaultLayout());
}
if (!lyxrc.new_ask_filename && !isNamed) {
}
b->setReadonly(false);
-
+
return b;
}
// file already open?
if (exists(s)) {
- if (Alert::askQuestion(_("Document is already open:"),
+ if (Alert::askQuestion(_("Document is already open:"),
MakeDisplayPath(s, 50),
_("Do you want to reload that document?"))) {
// Reload is accomplished by closing and then loading
}
// Fall through to new load. (Asger)
} else {
- // Here, we pretend that we just loaded the
+ // Here, we pretend that we just loaded the
// open document
return getBuffer(s);
}
if (LyXVC::file_not_found_hook(s)) {
// Ask if the file should be checked out for
// viewing/editing, if so: load it.
- if (Alert::askQuestion(_("Do you want to retrieve file under version control?"))) {
+ if (Alert::askQuestion(_("Do you want to retrieve file under version control?"))) {
// How can we know _how_ to do the checkout?
// With the current VC support it has to be,
// a RCS file since CVS do not have special ,v files.
return loadLyXFile(filename, tolastfiles);
}
}
- if (Alert::askQuestion(_("Cannot open specified file:"),
+ if (Alert::askQuestion(_("Cannot open specified file:"),
MakeDisplayPath(s, 50),
_("Create new document with this name?")))
{