diff --git a/src/frontends/controllers/ControlErrorList.cpp b/src/frontends/controllers/ControlErrorList.cpp deleted file mode 100644 index 63c3d4291e..0000000000 --- a/src/frontends/controllers/ControlErrorList.cpp +++ /dev/null @@ -1,100 +0,0 @@ -/** - * \file ControlErrorList.cpp - * This file is part of LyX, the document processor. - * Licence details can be found in the file COPYING. - * - * \author Alfredo Braunstein - * - * Full author contact details are available in file CREDITS. - */ - -#include - -#include "ControlErrorList.h" -#include "Buffer.h" -#include "BufferView.h" -#include "debug.h" -#include "gettext.h" -#include "Text.h" -#include "ParIterator.h" - -// FIXME: those two headers are needed because of the -// WorkArea::redraw() call below. -#include "frontends/LyXView.h" -#include "frontends/WorkArea.h" - -#include "support/lstrings.h" - -using lyx::support::bformat; - -using std::endl; -using std::string; - -namespace lyx { -namespace frontend { - -ControlErrorList::ControlErrorList(Dialog & d) - : Controller(d) -{} - - -void ControlErrorList::clearParams() -{} - - -ErrorList const & ControlErrorList::errorList() const -{ - return bufferview()->buffer().errorList(error_type_); -} - - -bool ControlErrorList::initialiseParams(string const & error_type) -{ - error_type_ = error_type; - Buffer const & buf = bufferview()->buffer(); - // FIXME UNICODE - docstring const title = bformat(_("%1$s Errors (%2$s)"), - _(error_type), - lyx::from_utf8(buf.fileName())); - name_ = lyx::to_utf8(title); - return true; -} - - -string const & ControlErrorList::name() -{ - return name_; -} - - -void ControlErrorList::goTo(int item) -{ - ErrorItem const & err = errorList()[item]; - - if (err.par_id == -1) - return; - - Buffer & buf = buffer(); - ParIterator pit = buf.getParFromID(err.par_id); - - if (pit == buf.par_iterator_end()) { - lyxerr << "par id " << err.par_id << " not found" << endl; - return; - } - - // Now make the selection. - // This should be implemented using an LFUN. (Angus) - // if pos_end is 0, this means it is end-of-paragraph - pos_type const end = err.pos_end ? std::min(err.pos_end, pit->size()) - : pit->size(); - pos_type const start = std::min(err.pos_start, end); - pos_type const range = end - start; - DocIterator const dit = makeDocIterator(pit, start); - bufferview()->putSelectionAt(dit, range, false); - // FIXME: If we used an LFUN, we would not need those two lines: - bufferview()->update(); - lyxview().currentWorkArea()->redraw(); -} - -} // namespace frontend -} // namespace lyx diff --git a/src/frontends/controllers/ControlErrorList.h b/src/frontends/controllers/ControlErrorList.h deleted file mode 100644 index a26eebdd9b..0000000000 --- a/src/frontends/controllers/ControlErrorList.h +++ /dev/null @@ -1,52 +0,0 @@ -// -*- C++ -*- -/** - * \file ControlErrorList.h - * This file is part of LyX, the document processor. - * Licence details can be found in the file COPYING. - * - * \author Alfredo Braunstein - * - * Full author contact details are available in file CREDITS. - */ - -#ifndef CONTROLERRORLIST_H -#define CONTROLERRORLIST_H - -#include "ErrorList.h" -#include "Dialog.h" - -namespace lyx { -namespace frontend { - -/** A controller for the ErrorList dialog. - */ -class ControlErrorList : public Controller { -public: - /// - ControlErrorList(Dialog & parent); - /// - virtual bool isBufferDependent() const { return true; } - /// - virtual bool initialiseParams(std::string const & data); - /// - virtual void clearParams(); - /// - virtual void dispatchParams() {} - - /// goto this error in the parent bv - void goTo(int item); - /// return the parent document name - std::string const & name(); - /// - ErrorList const & errorList() const; -private: - /// - std::string error_type_; - /// - std::string name_; -}; - -} // namespace frontend -} // namespace lyx - -#endif // CONTROLERRORLIST_H diff --git a/src/frontends/controllers/Makefile.am b/src/frontends/controllers/Makefile.am index a39c75c591..fa546c6d06 100644 --- a/src/frontends/controllers/Makefile.am +++ b/src/frontends/controllers/Makefile.am @@ -13,7 +13,6 @@ SOURCEFILES = \ ControlCommandBuffer.cpp \ ControlDocument.cpp \ ControlEmbeddedFiles.cpp \ - ControlErrorList.cpp \ ControlExternal.cpp \ ControlGraphics.cpp \ ControlViewSource.cpp \ @@ -33,7 +32,6 @@ HEADERFILES = \ ControlCommand.h \ ControlCommandBuffer.h \ ControlDocument.h \ - ControlErrorList.h \ ControlEmbeddedFiles.h \ ControlExternal.h \ ControlGraphics.h \ diff --git a/src/frontends/qt4/Dialogs.cpp b/src/frontends/qt4/Dialogs.cpp index 640ee2d51e..c912b6ad9b 100644 --- a/src/frontends/qt4/Dialogs.cpp +++ b/src/frontends/qt4/Dialogs.cpp @@ -20,7 +20,6 @@ #include "GuiDelimiter.h" #include "GuiDocument.h" #include "GuiEmbeddedFiles.h" -#include "GuiErrorList.h" #include "GuiExternal.h" #include "GuiGraphics.h" #include "GuiIndex.h" @@ -167,7 +166,7 @@ Dialog * Dialogs::build(string const & name) dialog = new DockView( guiview, name, Qt::RightDockWidgetArea); } else if (name == "errorlist") { - dialog = new GuiErrorListDialog(lyxview_); + dialog = createGuiErrorList(lyxview_); } else if (name == "ert") { dialog = createGuiERT(lyxview_); } else if (name == "external") { diff --git a/src/frontends/qt4/GuiErrorList.cpp b/src/frontends/qt4/GuiErrorList.cpp index 245987e4da..a0d824deeb 100644 --- a/src/frontends/qt4/GuiErrorList.cpp +++ b/src/frontends/qt4/GuiErrorList.cpp @@ -11,25 +11,42 @@ #include #include "GuiErrorList.h" -#include "ControlErrorList.h" + +#include "Buffer.h" +#include "BufferView.h" +#include "debug.h" +#include "gettext.h" +#include "Text.h" +#include "ParIterator.h" #include "qt_helpers.h" +// FIXME: those two headers are needed because of the +// WorkArea::redraw() call below. +#include "frontends/LyXView.h" +#include "frontends/WorkArea.h" + +#include "support/lstrings.h" + #include #include #include #include +using std::endl; +using std::string; + namespace lyx { namespace frontend { +using support::bformat; -GuiErrorListDialog::GuiErrorListDialog(LyXView & lv) - : GuiDialog(lv, "errorlist") +GuiErrorList::GuiErrorList(LyXView & lv) + : GuiDialog(lv, "errorlist"), Controller(this) { setupUi(this); - setController(new ControlErrorList(*this)); + setController(this, false); connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose())); @@ -43,26 +60,14 @@ GuiErrorListDialog::GuiErrorListDialog(LyXView & lv) } -ControlErrorList & GuiErrorListDialog::controller() -{ - return static_cast(GuiDialog::controller()); -} - - -void GuiErrorListDialog::select_adaptor(QListWidgetItem * item) -{ - select(item); -} - - -void GuiErrorListDialog::closeEvent(QCloseEvent * e) +void GuiErrorList::closeEvent(QCloseEvent * e) { slotClose(); e->accept(); } -void GuiErrorListDialog::showEvent(QShowEvent *e) +void GuiErrorList::showEvent(QShowEvent * e) { errorsLW->setCurrentRow(0); select(errorsLW->item(0)); @@ -70,26 +75,75 @@ void GuiErrorListDialog::showEvent(QShowEvent *e) } -void GuiErrorListDialog::select(QListWidgetItem * wi) +void GuiErrorList::select(QListWidgetItem * wi) { int const item = errorsLW->row(wi); - controller().goTo(item); - descriptionTB->setPlainText(toqstr(controller().errorList()[item].description)); + goTo(item); + descriptionTB->setPlainText(toqstr(errorList()[item].description)); } -void GuiErrorListDialog::updateContents() +void GuiErrorList::updateContents() { - setViewTitle(from_utf8(controller().name())); + setViewTitle(name_); errorsLW->clear(); descriptionTB->setPlainText(QString()); - ErrorList::const_iterator it = controller().errorList().begin(); - ErrorList::const_iterator end = controller().errorList().end(); + ErrorList::const_iterator it = errorList().begin(); + ErrorList::const_iterator end = errorList().end(); for (; it != end; ++it) errorsLW->addItem(toqstr(it->error)); } + +ErrorList const & GuiErrorList::errorList() const +{ + return bufferview()->buffer().errorList(error_type_); +} + + +bool GuiErrorList::initialiseParams(string const & error_type) +{ + error_type_ = error_type; + Buffer const & buf = bufferview()->buffer(); + name_ = bformat(_("%1$s Errors (%2$s)"), _(error_type), + from_utf8(buf.fileName())); + return true; +} + + +void GuiErrorList::goTo(int item) +{ + ErrorItem const & err = errorList()[item]; + + if (err.par_id == -1) + return; + + Buffer & buf = buffer(); + ParIterator pit = buf.getParFromID(err.par_id); + + if (pit == buf.par_iterator_end()) { + lyxerr << "par id " << err.par_id << " not found" << endl; + return; + } + + // Now make the selection. + // This should be implemented using an LFUN. (Angus) + // if pos_end is 0, this means it is end-of-paragraph + pos_type const end = err.pos_end ? std::min(err.pos_end, pit->size()) + : pit->size(); + pos_type const start = std::min(err.pos_start, end); + pos_type const range = end - start; + DocIterator const dit = makeDocIterator(pit, start); + bufferview()->putSelectionAt(dit, range, false); + // FIXME: If we used an LFUN, we would not need those two lines: + bufferview()->update(); + lyxview().currentWorkArea()->redraw(); +} + + +Dialog * createGuiErrorList(LyXView & lv) { return new GuiErrorList(lv); } + } // namespace frontend } // namespace lyx diff --git a/src/frontends/qt4/GuiErrorList.h b/src/frontends/qt4/GuiErrorList.h index e0a7eb3f94..31210a4aeb 100644 --- a/src/frontends/qt4/GuiErrorList.h +++ b/src/frontends/qt4/GuiErrorList.h @@ -13,7 +13,7 @@ #define GUIERRORLIST_H #include "GuiDialog.h" -#include "ControlErrorList.h" +#include "ErrorList.h" #include "ui_ErrorListUi.h" class QListWidgetItem; @@ -21,25 +21,44 @@ class QListWidgetItem; namespace lyx { namespace frontend { -class GuiErrorListDialog : public GuiDialog, public Ui::ErrorListUi +class GuiErrorList : public GuiDialog, public Ui::ErrorListUi, public Controller { Q_OBJECT public: - GuiErrorListDialog(LyXView & lv); + GuiErrorList(LyXView & lv); public Q_SLOTS: - void select_adaptor(QListWidgetItem *); - -private: - void closeEvent(QCloseEvent *); - void showEvent(QShowEvent *); - /// parent controller - ControlErrorList & controller(); /// select an entry void select(QListWidgetItem *); + +private: + /// + void closeEvent(QCloseEvent *); + /// + void showEvent(QShowEvent *); + /// parent controller + Controller & controller() { return *this; } /// update contents void updateContents(); + /// + bool isBufferDependent() const { return true; } + /// + bool initialiseParams(std::string const & data); + /// + void clearParams() {} + /// + void dispatchParams() {} + + /// goto this error in the parent bv + void goTo(int item); + /// + ErrorList const & errorList() const; +private: + /// + std::string error_type_; + /// the parent document name + docstring name_; }; } // namespace frontend