]> git.lyx.org Git - lyx.git/blobdiff - src/lyx_cb.C
fix reading the author field.
[lyx.git] / src / lyx_cb.C
index ca6afd6dcce8fcaa15627199e9d5fd2043e95a31..663c4c46818e9242290677a63b6f2a24ad1b6b85 100644 (file)
@@ -19,6 +19,7 @@
 #include "buffer.h"
 #include "bufferlist.h"
 #include "BufferView.h"
+#include "cursor.h"
 #include "debug.h"
 #include "gettext.h"
 #include "lastfiles.h"
 #include "support/FileInfo.h"
 #include "support/filetools.h"
 #include "support/forkedcall.h"
+#include "support/globbing.h"
 #include "support/lyxlib.h"
 #include "support/os.h"
 #include "support/path.h"
 #include "support/path_defines.h"
 #include "support/systemcall.h"
 
+#include <boost/shared_ptr.hpp>
+
 #include <cerrno>
 #include <fstream>
 
 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;
@@ -68,6 +73,8 @@ using lyx::support::user_lyxdir;
 
 namespace os = lyx::support::os;
 
+using boost::shared_ptr;
+
 using std::back_inserter;
 using std::copy;
 using std::endl;
@@ -127,10 +134,12 @@ bool WriteAs(Buffer * buffer, string const & filename)
                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;
@@ -215,8 +224,9 @@ public:
        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();
@@ -232,7 +242,7 @@ private:
 int AutoSaveBuffer::start()
 {
        command_ = bformat(_("Auto-saving %1$s"), fname_);
-       return runNonBlocking();
+       return run(DontWait);
 }
 
 
@@ -352,13 +362,12 @@ void InsertAsciiFile(BufferView * bv, string const & f, bool asParagraph)
                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();
 }
 
@@ -372,7 +381,9 @@ string getContentsOfAsciiFile(BufferView * bv, string const & f, bool asParagrap
                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();
@@ -425,49 +436,6 @@ string getContentsOfAsciiFile(BufferView * bv, string const & f, bool asParagrap
 }
 
 
-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)
@@ -485,6 +453,6 @@ void Reconfigure(BufferView * bv)
 
        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."));
 }