-/* This file is part of
- * ======================================================
+/**
+ * \file ControlLog.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
*
- * LyX, The Document Processor
+ * \author John Levon
+ * \author Angus Leeming
*
- * Copyright 2001 The LyX Team.
- *
- * ======================================================
- *
- * \file ControlLog.h
- * \author John Levon, moz@compsoc.man.ac.uk
- * \author Angus Leeming <a.leeming@ic.ac.uk>
+ * Full author contact details are available in file CREDITS.
*/
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
#include <config.h>
+
#include "ControlLog.h"
-#include "LyXView.h"
-#include "Dialogs.h"
-#include "lyxrc.h"
-using std::make_pair;
-using SigC::slot;
+#include "gettext.h"
+#include "lyxlex.h"
-ControlLog::ControlLog(LyXView & lv, Dialogs & d)
- : ControlConnectBD(lv, d)
-{
- d_.showLogFile.connect(slot(this, &ControlLog::show));
-}
+#include <sstream>
+#include <fstream>
+using std::istringstream;
+using std::ostream;
+using std::string;
-void ControlLog::show()
+namespace lyx {
+
+using support::FileName;
+
+namespace frontend {
+
+ControlLog::ControlLog(Dialog & parent)
+ : Dialog::Controller(parent),
+ type_(LatexLog)
+{}
+
+
+bool ControlLog::initialiseParams(string const & data)
{
- if (!lv_.view()->available())
- return;
+ istringstream is(data);
+ LyXLex lex(0,0);
+ lex.setStream(is);
- logfile_ = lv_.view()->buffer()->getLogName();
+ string logtype, logfile;
+ lex >> logtype;
+ if (lex.isOK()) {
+ lex.next(true);
+ logfile = lex.getString();
+ }
+ if (!lex)
+ // Parsing of the data failed.
+ return false;
- bc().readOnly(isReadonly());
- view().show();
+ 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::update()
+void ControlLog::clearParams()
{
- if (!lv_.view()->available())
- return;
+ logfile_.erase();
+}
- logfile_ = lv_.view()->buffer()->getLogName();
-
- bc().readOnly(isReadonly());
- view().update();
+
+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::hide()
+void ControlLog::getContents(std::ostream & ss) const
{
- logfile_.second.erase();
- disconnect();
- view().hide();
+ 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