X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fqt4%2FGuiLog.cpp;h=2ddadc9226af3b684354f14dc0578ebfe8d489c5;hb=e029b216b7e56ce3a41ef0b853045c37c7d155d8;hp=ae7fc9b5f3e63f80fe83d46861166356bf79d93f;hpb=94e61a3bc9c136554afd8f23fd4d49c2f4e394ba;p=lyx.git diff --git a/src/frontends/qt4/GuiLog.cpp b/src/frontends/qt4/GuiLog.cpp index ae7fc9b5f3..2ddadc9226 100644 --- a/src/frontends/qt4/GuiLog.cpp +++ b/src/frontends/qt4/GuiLog.cpp @@ -4,6 +4,7 @@ * Licence details can be found in the file COPYING. * * \author John Levon + * \author Angus Leeming * * Full author contact details are available in file CREDITS. */ @@ -12,22 +13,26 @@ #include "GuiLog.h" -#include "ControlLog.h" +#include "GuiApplication.h" #include "qt_helpers.h" +#include "Lexer.h" -#include "frontends/Application.h" +#include "support/docstring.h" +#include "support/gettext.h" -#include #include #include +#include +#include #include +using namespace std; +using namespace lyx::support; namespace lyx { namespace frontend { - ///////////////////////////////////////////////////////////////////// // // LogHighlighter @@ -94,14 +99,13 @@ void LogHighlighter::highlightBlock(QString const & text) // ///////////////////////////////////////////////////////////////////// -GuiLogDialog::GuiLogDialog(LyXView & lv) - : GuiDialog(lv, "log") +GuiLog::GuiLog(GuiView & lv) + : GuiDialog(lv, "log", qt_("LaTeX Log")), type_(LatexLog) { setupUi(this); - setController(new ControlLog(*this)); connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose())); - connect(updatePB, SIGNAL(clicked()), this, SLOT(updateClicked())); + connect(updatePB, SIGNAL(clicked()), this, SLOT(updateContents())); bc().setPolicy(ButtonPolicy::OkCancelPolicy); @@ -109,7 +113,7 @@ GuiLogDialog::GuiLogDialog(LyXView & lv) highlighter = new LogHighlighter(logTB->document()); logTB->setReadOnly(true); - QFont font(toqstr(theApp()->typewriterFontName())); + QFont font(guiApp->typewriterFontName()); font.setKerning(false); font.setFixedPitch(true); font.setStyleHint(QFont::TypeWriter); @@ -117,36 +121,119 @@ GuiLogDialog::GuiLogDialog(LyXView & lv) } -ControlLog & GuiLogDialog::controller() const +void GuiLog::updateContents() { - return static_cast(GuiDialog::controller()); + setTitle(toqstr(title())); + + ostringstream ss; + getContents(ss); + + logTB->setPlainText(toqstr(ss.str())); } -void GuiLogDialog::closeEvent(QCloseEvent * e) +bool GuiLog::initialiseParams(string const & data) { - slotWMHide(); - e->accept(); + istringstream is(data); + Lexer lex; + lex.setStream(is); + + string logtype, logfile; + lex >> logtype; + if (lex) { + lex.next(true); + logfile = lex.getString(); + } + if (!lex) + // Parsing of the data failed. + return false; + + if (logtype == "latex") + type_ = LatexLog; + else if (logtype == "literate") + type_ = LiterateLog; + else if (logtype == "lyx2lyx") + type_ = Lyx2lyxLog; + else if (logtype == "vc") + type_ = VCLog; + else + return false; + + logfile_ = FileName(logfile); + + updateContents(); + + return true; } -void GuiLogDialog::updateClicked() +void GuiLog::clearParams() { - update_contents(); + logfile_.erase(); } -void GuiLogDialog::update_contents() +docstring GuiLog::title() const { - setViewTitle(controller().title()); + switch (type_) { + case LatexLog: + return _("LaTeX Log"); + case LiterateLog: + return _("Literate Programming Build Log"); + case Lyx2lyxLog: + return _("lyx2lyx Error Log"); + case VCLog: + return _("Version Control Log"); + default: + return docstring(); + } +} - std::ostringstream ss; - controller().getContents(ss); - logTB->setPlainText(toqstr(ss.str())); +void GuiLog::getContents(ostream & ss) const +{ + ifstream in(logfile_.toFilesystemEncoding().c_str()); + + bool success = false; + + // FIXME UNICODE + // Our caller interprets the file contents as UTF8, but is that + // correct? + if (in) { + ss << in.rdbuf(); + success = ss.good(); + } + + if (success) + return; + + switch (type_) { + case LatexLog: + ss << to_utf8(_("No LaTeX log file found.")); + break; + case LiterateLog: + ss << to_utf8(_("No literate programming build log file found.")); + break; + case Lyx2lyxLog: + ss << to_utf8(_("No lyx2lyx error log file found.")); + break; + case VCLog: + ss << to_utf8(_("No version control log file found.")); + break; + } +} + + +void GuiLog::on_copyPB_clicked() +{ + qApp->clipboard()->setText(logTB->toPlainText()); } + +Dialog * createGuiLog(GuiView & lv) { return new GuiLog(lv); } + + } // namespace frontend } // namespace lyx -#include "GuiLog_moc.cpp" +#include "moc_GuiLog.cpp"