]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiErrorList.cpp
* fix spelling in comments to please John.
[lyx.git] / src / frontends / qt4 / GuiErrorList.cpp
index b1ab7b414ea4ed91a13b85d104caa3db8c61cfa1..f104cd2ffba1461ff9213a1ff6d639fe4b6aafc4 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "Buffer.h"
 #include "BufferView.h"
+#include "FuncRequest.h"
 #include "ParIterator.h"
 #include "Text.h"
 
@@ -41,6 +42,8 @@ GuiErrorList::GuiErrorList(GuiView & lv)
 
        connect(closePB, SIGNAL(clicked()),
                this, SLOT(slotClose()));
+       connect(viewLogPB, SIGNAL(clicked()),
+               this, SLOT(viewLog()));
        connect(errorsLW, SIGNAL(currentRowChanged(int)),
                this, SLOT(select()));
 
@@ -51,8 +54,8 @@ GuiErrorList::GuiErrorList(GuiView & lv)
 
 void GuiErrorList::showEvent(QShowEvent * e)
 {
-       errorsLW->setCurrentRow(0);
        select();
+       paramsToDialog();
        e->accept();
 }
 
@@ -68,7 +71,13 @@ void GuiErrorList::select()
 }
 
 
-void GuiErrorList::updateContents()
+void GuiErrorList::viewLog()
+{
+       dispatch(FuncRequest(LFUN_DIALOG_SHOW, "latexlog"));
+}
+
+
+void GuiErrorList::paramsToDialog()
 {
        setTitle(toqstr(name_));
        errorsLW->clear();
@@ -78,21 +87,31 @@ void GuiErrorList::updateContents()
        ErrorList::const_iterator end = errorList().end();
        for (; it != end; ++it)
                errorsLW->addItem(toqstr(it->error));
+       errorsLW->setCurrentRow(0);
 }
 
 
 ErrorList const & GuiErrorList::errorList() const
 {
-       return bufferview()->buffer().errorList(error_type_);
+       return from_master_ ? 
+               bufferview()->buffer().masterBuffer()->errorList(error_type_)
+               : bufferview()->buffer().errorList(error_type_);
 }
 
 
-bool GuiErrorList::initialiseParams(string const & error_type)
+bool GuiErrorList::initialiseParams(string const & data)
 {
+       from_master_ = prefixIs(data, "from_master|");
+       string error_type = data;
+       if (from_master_)
+               error_type = split(data, '|');
        error_type_ = error_type;
-       Buffer const & buf = bufferview()->buffer();
+       Buffer const * buf = from_master_ ?
+               bufferview()->buffer().masterBuffer()
+               : &bufferview()->buffer();
        name_ = bformat(_("%1$s Errors (%2$s)"), _(error_type),
-                                    from_utf8(buf.absFileName()));
+                                    from_utf8(buf->absFileName()));
+       paramsToDialog();
        return true;
 }
 
@@ -104,10 +123,14 @@ bool GuiErrorList::goTo(int item)
        if (err.par_id == -1)
                return false;
 
-       Buffer & buf = buffer();
+       if (from_master_)
+               // FIXME: implement
+               return false;
+
+       Buffer const & buf = buffer();
        DocIterator dit = buf.getParFromID(err.par_id);
 
-       if (dit == doc_iterator_end(buf.inset())) {
+       if (dit == doc_iterator_end(&buf)) {
         // FIXME: Happens when loading a read-only doc with 
         // unknown layout. Should this be the case?
                LYXERR0("par id " << err.par_id << " not found");
@@ -121,9 +144,10 @@ bool GuiErrorList::goTo(int item)
        pos_type const start = min(err.pos_start, end);
        pos_type const range = end - start;
        dit.pos() = start;
-       bufferview()->putSelectionAt(dit, range, false);
+       BufferView * bv = const_cast<BufferView *>(bufferview());
        // FIXME: If we used an LFUN, we would not need this line:
-       bufferview()->processUpdateFlags(Update::Force | Update::FitCursor);
+       bv->putSelectionAt(dit, range, false);
+       bv->processUpdateFlags(Update::Force | Update::FitCursor);
        return true;
 }
 
@@ -134,4 +158,4 @@ Dialog * createGuiErrorList(GuiView & lv) { return new GuiErrorList(lv); }
 } // namespace lyx
 
 
-#include "GuiErrorList_moc.cpp"
+#include "moc_GuiErrorList.cpp"