#include "buffer.h"
#include "bufferlist.h"
#include "BufferView.h"
+#include "cursor.h"
#include "debug.h"
#include "gettext.h"
#include "lastfiles.h"
+#include "LaTeXFeatures.h"
#include "lyx_main.h"
#include "lyxlayout.h"
#include "lyxrc.h"
#include "frontends/lyx_gui.h"
#include "frontends/LyXView.h"
-#include "support/FileInfo.h"
+#include "support/filefilterlist.h"
#include "support/filetools.h"
#include "support/forkedcall.h"
+#include "support/fs_extras.h"
#include "support/lyxlib.h"
-#include "support/os.h"
+#include "support/package.h"
#include "support/path.h"
-#include "support/path_defines.h"
#include "support/systemcall.h"
+#if !defined (HAVE_FORK)
+# define fork() -1
+#endif
+
+#include <boost/shared_ptr.hpp>
+#include <boost/filesystem/operations.hpp>
+
#include <cerrno>
#include <fstream>
using lyx::support::AddName;
using lyx::support::bformat;
using lyx::support::destroyDir;
-using lyx::support::FileInfo;
+using lyx::support::FileFilterList;
using lyx::support::ForkedProcess;
using lyx::support::IsLyXFilename;
using lyx::support::LibFileSearch;
using lyx::support::OnlyFilename;
using lyx::support::OnlyPath;
using lyx::support::Path;
+using lyx::support::package;
+using lyx::support::QuoteName;
using lyx::support::removeAutosaveFile;
using lyx::support::rename;
using lyx::support::split;
-using lyx::support::system_lyxdir;
using lyx::support::Systemcall;
using lyx::support::tempName;
using lyx::support::unlink;
-using lyx::support::user_lyxdir;
-namespace os = lyx::support::os;
+using boost::shared_ptr;
+
+namespace fs = boost::filesystem;
using std::back_inserter;
using std::copy;
if (!IsLyXFilename(fname))
fname += ".lyx";
+ FileFilterList const filter (_("LyX Documents (*.lyx)"));
+
FileDialog::Result result =
fileDlg.save(OnlyPath(fname),
- _("*.lyx| LyX Documents (*.lyx)"),
- OnlyFilename(fname));
+ filter,
+ OnlyFilename(fname));
if (result.first == FileDialog::Later)
return false;
} else
fname = filename;
- FileInfo const myfile(fname);
- if (myfile.isOK()) {
+ if (fs::exists(fname)) {
string const file = MakeDisplayPath(fname, 30);
string text = bformat(_("The document %1$s already exists.\n\n"
"Do you want to over-write that document?"), file);
bufferlist.closeAll();
// do any other cleanup procedures now
- lyxerr[Debug::INFO] << "Deleting tmp dir " << os::getTmpDir() << endl;
+ lyxerr[Debug::INFO] << "Deleting tmp dir " << package().temp_dir() << endl;
- if (destroyDir(os::getTmpDir()) != 0) {
- string msg = bformat(_("Could not remove the temporary directory %1$s"),
- os::getTmpDir());
- Alert::warning(_("Could not remove temporary directory"), msg);
+ if (!destroyDir(package().temp_dir())) {
+ string const msg =
+ bformat(_("Unable to remove the temporary directory %1$s"),
+ package().temp_dir());
+ Alert::warning(_("Unable to remove temporary directory"), msg);
}
lyx_gui::exit();
AutoSaveBuffer(BufferView & bv, string const & fname)
: bv_(bv), fname_(fname) {}
///
- virtual ForkedProcess * clone() const {
- return new AutoSaveBuffer(*this);
+ virtual shared_ptr<ForkedProcess> clone() const
+ {
+ return shared_ptr<ForkedProcess>(new AutoSaveBuffer(*this));
}
///
int start();
int AutoSaveBuffer::start()
{
command_ = bformat(_("Auto-saving %1$s"), fname_);
- return runNonBlocking();
+ return run(DontWait);
}
return;
// clear the selection
- bool flag = (bv->text == bv->getLyXText());
- if (flag)
- bv->beforeChange(bv->text);
- if (!asParagraph)
- bv->getLyXText()->insertStringAsLines(tmpstr);
+ if (bv->text() == bv->getLyXText())
+ bv->cursor().clearSelection();
+ if (asParagraph)
+ bv->getLyXText()->insertStringAsParagraphs(bv->cursor(), tmpstr);
else
- bv->getLyXText()->insertStringAsParagraphs(tmpstr);
+ bv->getLyXText()->insertStringAsLines(bv->cursor(), tmpstr);
bv->update();
}
FileDialog fileDlg(_("Select file to insert"),
(asParagraph) ? LFUN_FILE_INSERT_ASCII_PARA : LFUN_FILE_INSERT_ASCII);
- FileDialog::Result result = fileDlg.open(bv->owner()->buffer()->filePath());
+ FileDialog::Result result =
+ fileDlg.open(bv->owner()->buffer()->filePath(),
+ FileFilterList(), string());
if (result.first == FileDialog::Later)
return string();
return string();
}
- FileInfo fi(fname);
-
- if (!fi.readable()) {
+ if (!fs::is_readable(fname)) {
string const error = strerror(errno);
string const file = MakeDisplayPath(fname, 50);
string const text = bformat(_("Could not read the specified document\n"
}
-string const getPossibleLabel(BufferView const & bv)
-{
- ParagraphList::iterator pit = bv.getLyXText()->cursorPar();
- ParagraphList & plist = bv.getLyXText()->ownerParagraphs();
-
- LyXLayout_ptr layout = pit->layout();
-
- if (layout->latextype == LATEX_PARAGRAPH && pit != plist.begin()) {
- ParagraphList::iterator pit2 = boost::prior(pit);
-
- LyXLayout_ptr const & layout2 = pit2->layout();
-
- if (layout2->latextype != LATEX_PARAGRAPH) {
- pit = pit2;
- layout = layout2;
- }
- }
-
- string text = layout->latexname().substr(0, 3);
- if (layout->latexname() == "theorem")
- text = "thm"; // Create a correct prefix for prettyref
-
- text += ':';
- if (layout->latextype == LATEX_PARAGRAPH ||
- lyxrc.label_init_length < 0)
- text.erase();
-
- string par_text = pit->asString(*bv.buffer(), false);
- for (int i = 0; i < lyxrc.label_init_length; ++i) {
- if (par_text.empty())
- break;
- string head;
- par_text = split(par_text, head, ' ');
- if (i > 0)
- text += '-'; // Is it legal to use spaces in
- // labels ?
- text += head;
- }
-
- return text;
-}
-
-
// This function runs "configure" and then rereads lyx.defaults to
// reconfigure the automatic settings.
void Reconfigure(BufferView * bv)
bv->owner()->message(_("Running configure..."));
// Run configure in user lyx directory
- Path p(user_lyxdir());
+ Path p(package().user_support());
+ string const configure_script =
+ AddName(package().system_support(), "configure");
+ string const configure_command = "sh " + QuoteName(configure_script);
Systemcall one;
- one.startscript(Systemcall::Wait,
- AddName(system_lyxdir(), "configure"));
+ one.startscript(Systemcall::Wait, configure_command);
p.pop();
bv->owner()->message(_("Reloading configuration..."));
lyxrc.read(LibFileSearch(string(), "lyxrc.defaults"));
+ // Re-read packages.lst
+ LaTeXFeatures::getAvailable();
Alert::information(_("System reconfigured"),
_("The system has been reconfigured.\n"
- "You need to restart LyX to make use of any \n"
+ "You need to restart LyX to make use of any\n"
"updated document class specifications."));
}