]> git.lyx.org Git - lyx.git/blobdiff - src/bufferlist.C
Use MenuItem::status() instead of own submenudisabled function
[lyx.git] / src / bufferlist.C
index 7ae6d255d5cdc116bcd1c667664daa21916a2feb..109d25f9e71e36790c79763d3d86ab53393cc79d 100644 (file)
@@ -20,7 +20,9 @@
 #include "lastfiles.h"
 #include "lyx_cb.h"
 #include "lyx_main.h"
+#include "output_latex.h"
 #include "paragraph.h"
+#include "ParagraphList_fwd.h"
 
 #include "frontends/Alert.h"
 
@@ -38,6 +40,9 @@ using lyx::support::OnlyFilename;
 using lyx::support::removeAutosaveFile;
 using lyx::support::prefixIs;
 
+using boost::bind;
+
+using std::auto_ptr;
 using std::endl;
 using std::find;
 using std::find_if;
@@ -127,12 +132,12 @@ void BufferList::release(Buffer * buf)
 
 Buffer * BufferList::newBuffer(string const & s, bool ronly)
 {
-       Buffer * tmpbuf = new Buffer(s, ronly);
+       auto_ptr<Buffer> tmpbuf(new Buffer(s, ronly));
        tmpbuf->params().useClassDefaults();
        lyxerr[Debug::INFO] << "Assigning to buffer "
                            << bstore.size() << endl;
-       bstore.push_back(tmpbuf);
-       return tmpbuf;
+       bstore.push_back(tmpbuf.get());
+       return tmpbuf.release();
 }
 
 
@@ -212,8 +217,37 @@ Buffer * BufferList::getBuffer(unsigned int choice)
 }
 
 
+Buffer * BufferList::next(Buffer const * buf) const 
+{
+       if (bstore.empty())
+               return 0;
+       BufferStorage::const_iterator it = find(bstore.begin(), 
+                                               bstore.end(), buf);
+       BOOST_ASSERT(it != bstore.end());
+       ++it;
+       if (it == bstore.end())
+               return bstore.front();
+       else
+               return *it;
+}
+
+
+Buffer * BufferList::previous(Buffer const * buf) const 
+{
+       if (bstore.empty())
+               return 0;
+       BufferStorage::const_iterator it = find(bstore.begin(), 
+                                               bstore.end(), buf);
+       BOOST_ASSERT(it != bstore.end());
+       if (it == bstore.begin())
+               return bstore.back();
+       else
+               return *(it - 1);
+}
+
+
 void BufferList::updateIncludedTeXfiles(string const & mastertmpdir,
-                                       LatexRunParams const & runparams)
+                                       OutputParams const & runparams)
 {
        BufferStorage::iterator it = bstore.begin();
        BufferStorage::iterator end = bstore.end();
@@ -233,7 +267,7 @@ void BufferList::updateIncludedTeXfiles(string const & mastertmpdir,
 void BufferList::emergencyWriteAll()
 {
        for_each(bstore.begin(), bstore.end(),
-                boost::bind(&BufferList::emergencyWrite, this, _1));
+                bind(&BufferList::emergencyWrite, this, _1));
 }