]> git.lyx.org Git - lyx.git/blobdiff - src/lyx_cb.C
Rearrange GTK icon lookup code, get rid of comboBoxTextSet
[lyx.git] / src / lyx_cb.C
index 6ed9e153994bf0a7f7f52e60ccbe913d09bfb680..ff6eeb49ac50f8c4bdfdf252ff3b0d18edee65dd 100644 (file)
@@ -23,6 +23,7 @@
 #include "debug.h"
 #include "gettext.h"
 #include "lastfiles.h"
+#include "LaTeXFeatures.h"
 #include "lyx_main.h"
 #include "lyxlayout.h"
 #include "lyxrc.h"
 #include "frontends/LyXView.h"
 
 #include "support/filefilterlist.h"
-#include "support/FileInfo.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>
@@ -53,7 +58,6 @@ using lyx::support::AddName;
 using lyx::support::bformat;
 using lyx::support::destroyDir;
 using lyx::support::FileFilterList;
-using lyx::support::FileInfo;
 using lyx::support::ForkedProcess;
 using lyx::support::IsLyXFilename;
 using lyx::support::LibFileSearch;
@@ -62,20 +66,19 @@ using lyx::support::MakeDisplayPath;
 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;
 using std::endl;
@@ -157,8 +160,7 @@ bool WriteAs(Buffer * buffer, string const & filename)
        } 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);
@@ -186,12 +188,12 @@ bool WriteAs(Buffer * buffer, string const & filename)
 }
 
 
-void QuitLyX()
+void QuitLyX(bool noask)
 {
        lyxerr[Debug::INFO] << "Running QuitLyX." << endl;
 
        if (lyx_gui::use_gui) {
-               if (!bufferlist.quitWriteAll())
+               if (!noask && !bufferlist.quitWriteAll())
                        return;
 
                LyX::cref().lastfiles().writeFile(lyxrc.lastfiles);
@@ -205,12 +207,13 @@ void QuitLyX()
        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();
@@ -395,9 +398,7 @@ string getContentsOfAsciiFile(BufferView * bv, string const & f, bool asParagrap
                        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"
@@ -444,13 +445,17 @@ 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,
-                       QuoteName(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"