X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffrontends%2Fcontrollers%2FControlLog.C;h=1ce66963a84b65aa5c2f17512c6ca781e0df7e49;hb=534095ce9e82d0b0f875540f7306ff218df3b5aa;hp=2c1bc027fd22bc7563b19880983b246bd8fb2c1f;hpb=99d1627a471b92f403598d03dfc861ddc3c11be0;p=lyx.git diff --git a/src/frontends/controllers/ControlLog.C b/src/frontends/controllers/ControlLog.C index 2c1bc027fd..1ce66963a8 100644 --- a/src/frontends/controllers/ControlLog.C +++ b/src/frontends/controllers/ControlLog.C @@ -6,29 +6,123 @@ * \author John Levon * \author Angus Leeming * - * Full author contact details are available in file CREDITS + * Full author contact details are available in file CREDITS. */ #include - #include "ControlLog.h" -#include "buffer.h" +#include "gettext.h" +#include "lyxlex.h" + +#include +#include + +using std::istringstream; +using std::ostream; +using std::string; +namespace lyx { -ControlLog::ControlLog(LyXView & lv, Dialogs & d) - : ControlDialogBD(lv, d) +using support::FileName; + +namespace frontend { + +ControlLog::ControlLog(Dialog & parent) + : Dialog::Controller(parent), + type_(LatexLog) {} -void ControlLog::setParams() +bool ControlLog::initialiseParams(string const & data) { - logfile_ = buffer()->getLogName(); + istringstream is(data); + LyXLex lex(0,0); + lex.setStream(is); + + string logtype, logfile; + lex >> logtype; + if (lex.isOK()) { + 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); + return true; } void ControlLog::clearParams() { - logfile_.second.erase(); + logfile_.erase(); } + + +docstring const ControlLog::title() const +{ + docstring t; + switch (type_) { + case LatexLog: + t = _("LaTeX Log"); + break; + case LiterateLog: + t = _("Literate Programming Build Log"); + break; + case Lyx2lyxLog: + t = _("lyx2lyx Error Log"); + break; + case VCLog: + t = _("Version Control Log"); + break; + } + return t; +} + + +void ControlLog::getContents(std::ostream & ss) const +{ + std::ifstream in(logfile_.toFilesystemEncoding().c_str()); + + bool success = false; + + if (in) { + ss << in.rdbuf(); + success = ss.good(); + } + + if (success) + return; + + switch (type_) { + case LatexLog: + ss << lyx::to_utf8(_("No LaTeX log file found.")); + break; + case LiterateLog: + ss << lyx::to_utf8(_("No literate programming build log file found.")); + break; + case Lyx2lyxLog: + ss << lyx::to_utf8(_("No lyx2lyx error log file found.")); + break; + case VCLog: + ss << lyx::to_utf8(_("No version control log file found.")); + break; + } +} + +} // namespace frontend +} // namespace lyx