]> git.lyx.org Git - lyx.git/blobdiff - src/InsetList.C
mathed uglyfication
[lyx.git] / src / InsetList.C
index 95471333836113139334f4de111a9b97dbf2a8e8..db74a08e816f54e0f02796eaaf45a14470091d88 100644 (file)
@@ -1,70 +1,43 @@
+/**
+ * \file InsetList.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Lars Gullik Bjønnes
+ * \author Martin Vermeer
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
 #include <config.h>
 
 #include "InsetList.h"
-#include "debug.h"
 
-#include "insets/updatableinset.h"
+#include "buffer.h"
+#include "bufferparams.h"
+#include "BranchList.h"
+#include "BufferView.h"
+#include "debug.h"
 
-#include <algorithm>
+#include "insets/insetbranch.h"
 
 using lyx::pos_type;
 
-using std::lower_bound;
-using std::upper_bound;
 using std::endl;
+using std::lower_bound;
 
 namespace {
 
-struct MatchIt {
-       /// used by lower_bound and upper_bound
-       inline
-       int operator()(InsetList::InsetTable const & a,
-                      InsetList::InsetTable const & b) const
+class InsetTablePosLess : public std::binary_function<InsetList::InsetTable, InsetList::InsetTable, bool> {
+public:
+       bool operator()(InsetList::InsetTable const & t1,
+                     InsetList::InsetTable const & t2) const
        {
-               return a.pos < b.pos;
+               return t1.pos < t2.pos;
        }
 };
 
-}
-
-
-InsetList::iterator::iterator(InsetList::List::iterator const & iter)
-       : it(iter)
-{}
-
-
-InsetList::iterator & InsetList::iterator::operator++()
-{
-       ++it;
-       return *this;
-}
-
-
-InsetList::iterator InsetList::iterator::operator++(int)
-{
-       iterator tmp = *this;
-       ++*this;
-       return tmp;
-}
-
-
-pos_type InsetList::iterator::getPos() const
-{
-       return it->pos;
-}
-
-
-Inset * InsetList::iterator::getInset() const
-{
-       return it->inset;
-}
-
-
-void InsetList::iterator::setInset(Inset * inset)
-{
-       it->inset = inset;
-}
-
+} // namespace anon
 
 InsetList::~InsetList()
 {
@@ -78,48 +51,27 @@ InsetList::~InsetList()
 }
 
 
-InsetList::iterator InsetList::begin()
-{
-       return iterator(list.begin());
-}
-
-
-InsetList::iterator InsetList::end()
-{
-       return iterator(list.end());
-}
-
-
-InsetList::iterator InsetList::begin() const
+InsetList::iterator InsetList::insetIterator(pos_type pos)
 {
-       return iterator(const_cast<InsetList*>(this)->list.begin());
-}
-
-
-InsetList::iterator InsetList::end() const
-{
-       return iterator(const_cast<InsetList*>(this)->list.end());
+       InsetTable search_elem(pos, 0);
+       return lower_bound(list.begin(), list.end(), search_elem,
+                          InsetTablePosLess());
 }
 
 
-InsetList::iterator
-InsetList::insetIterator(pos_type pos)
+InsetList::const_iterator InsetList::insetIterator(pos_type pos) const
 {
        InsetTable search_elem(pos, 0);
-       List::iterator it = lower_bound(list.begin(),
-                                       list.end(),
-                                       search_elem, MatchIt());
-       return iterator(it);
+       return lower_bound(list.begin(), list.end(), search_elem,
+                          InsetTablePosLess());
 }
 
 
-void InsetList::insert(Inset * inset, lyx::pos_type pos)
+void InsetList::insert(InsetOld * inset, lyx::pos_type pos)
 {
-       InsetTable search_elem(pos, 0);
-       List::iterator it = lower_bound(list.begin(),
-                                       list.end(),
-                                       search_elem, MatchIt());
-       if (it != list.end() && it->pos == pos) {
+       List::iterator end = list.end();
+       List::iterator it = insetIterator(pos);
+       if (it != end && it->pos == pos) {
                lyxerr << "ERROR (InsetList::insert): "
                       << "There is an inset in position: " << pos << endl;
        } else {
@@ -130,27 +82,21 @@ void InsetList::insert(Inset * inset, lyx::pos_type pos)
 
 void InsetList::erase(pos_type pos)
 {
-       InsetTable search_elem(pos, 0);
-       List::iterator it =
-               lower_bound(list.begin(),
-                           list.end(),
-                           search_elem, MatchIt());
-       if (it != list.end() && it->pos == pos) {
+       List::iterator end = list.end();
+       List::iterator it = insetIterator(pos);
+       if (it != end && it->pos == pos) {
                delete it->inset;
                list.erase(it);
        }
 }
 
 
-Inset * InsetList::release(pos_type pos)
+InsetOld * InsetList::release(pos_type pos)
 {
-       InsetTable search_elem(pos, 0);
-       List::iterator it =
-               lower_bound(list.begin(),
-                           list.end(),
-                           search_elem, MatchIt());
-       if (it != list.end() && it->pos == pos) {
-               Inset * tmp = it->inset;
+       List::iterator end = list.end();
+       List::iterator it = insetIterator(pos);
+       if (it != end && it->pos == pos) {
+               InsetOld * tmp = it->inset;
                it->inset = 0;
                return tmp;
        }
@@ -158,14 +104,11 @@ Inset * InsetList::release(pos_type pos)
 }
 
 
-Inset * InsetList::get(pos_type pos) const
+InsetOld * InsetList::get(pos_type pos) const
 {
-       InsetTable search_elem(pos, 0);
-       List::iterator it =
-               lower_bound(const_cast<InsetList*>(this)->list.begin(),
-                           const_cast<InsetList*>(this)->list.end(),
-                           search_elem, MatchIt());
-       if (it != const_cast<InsetList*>(this)->list.end() && it->pos == pos)
+       List::const_iterator end = list.end();
+       List::const_iterator it = insetIterator(pos);
+       if (it != end && it->pos == pos)
                return it->inset;
        return 0;
 }
@@ -173,11 +116,8 @@ Inset * InsetList::get(pos_type pos) const
 
 void InsetList::increasePosAfterPos(pos_type pos)
 {
-       InsetTable search_elem(pos, 0);
-       List::iterator it = lower_bound(list.begin(),
-                                       list.end(),
-                                       search_elem, MatchIt());
        List::iterator end = list.end();
+       List::iterator it = insetIterator(pos);
        for (; it != end; ++it) {
                ++it->pos;
        }
@@ -186,58 +126,28 @@ void InsetList::increasePosAfterPos(pos_type pos)
 
 void InsetList::decreasePosAfterPos(pos_type pos)
 {
-       InsetTable search_elem(pos, 0);
        List::iterator end = list.end();
-       List::iterator it = upper_bound(list.begin(),
-                                       end,
-                                       search_elem, MatchIt());
+       List::iterator it = insetIterator(pos);
        for (; it != end; ++it) {
                --it->pos;
        }
 }
 
 
-void InsetList::deleteInsetsLyXText(BufferView * bv)
+void InsetList::insetsOpenCloseBranch(Buffer const & buf)
 {
        List::iterator it = list.begin();
        List::iterator end = list.end();
        for (; it != end; ++it) {
-               if (it->inset) {
-                       if (it->inset->isTextInset()) {
-                               static_cast<UpdatableInset*>
-                                       (it->inset)->deleteLyXText(bv, true);
-                       }
+               if (!it->inset ||
+                   it->inset->lyxCode() != InsetOld::BRANCH_CODE)
+                       continue;
+
+               InsetBranch * inset = static_cast<InsetBranch *>(it->inset);
+               if (inset->isBranchSelected(buf.params().branchlist())) {
+                       inset->open();
+               } else {
+                       inset->close();
                }
        }
 }
-
-
-void InsetList::resizeInsetsLyXText(BufferView * bv)
-{
-       List::iterator it = list.begin();
-       List::iterator end = list.end();
-       for (; it != end; ++it) {
-               if (it->inset) {
-                       if (it->inset->isTextInset()) {
-                               static_cast<UpdatableInset*>
-                                       (it->inset)->resizeLyXText(bv, true);
-                       }
-               }
-       }
-}
-
-
-
-bool operator==(InsetList::iterator const & i1,
-               InsetList::iterator const & i2)
-{
-       return i1.it == i2.it;
-
-}
-
-
-bool operator!=(InsetList::iterator const & i1,
-               InsetList::iterator const & i2)
-{
-       return !(i1 == i2);
-}