}
-void Buffer::getSourceCode(ostream& os, lyx::pit_type par_begin, lyx::pit_type par_end)
+void Buffer::getSourceCode(ostream & os, lyx::pit_type par_begin, lyx::pit_type par_end)
{
OutputParams runparams;
runparams.nice = true;
// No side effect of file copying and image conversion
runparams.dryrun = true;
- // set source type for the view-source dialog
- if (isLatex())
- os << "%LaTeX\n";
- else if (isLinuxDoc())
- os << "%LinuxDoc\n";
- else if (isDocBook())
- os << "%DocBook\n";
- else
- BOOST_ASSERT(false);
- // start text
if (par_begin + 1 == par_end)
os << "% Preview source code for paragraph " << par_begin << "\n\n";
else
#include "ControlViewSource.h"
#include "gettext.h"
+#include "support/types.h"
+#include "BufferView.h"
+#include "buffer.h"
+#include "cursor.h"
+#include <sstream>
using std::string;
+using std::ostringstream;
namespace lyx {
namespace frontend {
bool ControlViewSource::initialiseParams(string const & source)
{
- string sourcetype = source.substr(1, 5);
- if (sourcetype == "LaTeX") {
- type_ = LatexSource;
- source_ = source.substr(7);
- } else if (sourcetype == "Linux") {
- type_ = LinuxDocSource;
- source_ = source.substr(10);
- } else if (sourcetype == "DocBo") {
- type_ = DocBookSource;
- source_ = source.substr(9);
- } else
- return false;
-
return true;
}
+string const ControlViewSource::updateContent()
+{
+ // get the *top* level paragraphs that contain the cursor,
+ // or the selected text
+ lyx::pit_type par_begin;
+ lyx::pit_type par_end;
+
+ BufferView * view = kernel().bufferview();
+ if (!view->cursor().selection()) {
+ par_begin = view->cursor().bottom().pit();
+ par_end = par_begin;
+ } else {
+ par_begin = view->cursor().selectionBegin().bottom().pit();
+ par_end = view->cursor().selectionEnd().bottom().pit();
+ }
+ if (par_begin > par_end)
+ std::swap(par_begin, par_end);
+ ostringstream ostr;
+ view->buffer()->getSourceCode(ostr, par_begin, par_end + 1);
+ return ostr.str();
+}
+
void ControlViewSource::clearParams()
{
- source_.erase();
}
string const ControlViewSource::title() const
{
- switch (type_) {
- case LatexSource:
- return _("LaTeX Source");
- case LinuxDocSource:
- return _("LinuxDoc Source");
- case DocBookSource:
- return _("DocBook Source");
+ string source_type;
+
+ Kernel::DocType doctype = kernel().docType();
+ switch (doctype) {
+ case Kernel::LATEX:
+ source_type = "LaTeX";
+ break;
+ case Kernel::LINUXDOC:
+ source_type = "LinuxDoc";
+ break;
+ case Kernel::DOCBOOK:
+ source_type = "DocBook";
+ break;
+ case Kernel::LITERATE:
+ source_type = "Literate";
+ default:
+ BOOST_ASSERT(false);
}
+ return _(source_type + " Source");
}
} // namespace frontend
///
virtual bool isBufferDependent() const { return true; }
- /// The title displayed by the dialog reflects the \c VIEWSOURCETYPE
+ /// The title displayed by the dialog reflects source type.
std::string const title() const;
- /// get the source code
- std::string const str() const { return source_; }
-
-private:
- /// Recognized source code type
- enum SOURCETYPE {
- LatexSource,
- LinuxDocSource,
- DocBookSource
- };
-
- SOURCETYPE type_;
- std::string source_;
+ /// get the source code of selected paragraphs
+ std::string const updateContent();
};
} // namespace frontend
#include "QViewSource.h"
#include "QViewSourceDialog.h"
#include "qt_helpers.h"
+#include "lyx_gui.h"
#include "controllers/ControlViewSource.h"
dialog_->viewSourceTV->setReadOnly(true);
dialog_->viewSourceTV->setTextFormat(Qt::PlainText);
// this is personal. I think source code should be in fixed-size font
- QFont font("Courier New");
+ QFont font(toqstr(lyx_gui::typewriter_font_name()));
font.setFixedPitch(true);
font.setStyleHint(QFont::TypeWriter);
dialog_->viewSourceTV->setFont(font);
void QViewSource::update_contents()
{
setTitle(controller().title());
-
- dialog_->viewSourceTV->setText(toqstr(controller().str()));
+ dialog_->viewSourceTV->setText(toqstr(controller().updateContent()));
}
} // namespace frontend
normalize_name(buffer, runparams, input, ".bib");
string const in_file = database + ".bib";
- if (!runparams.inComment && !runparams.nice &&
+ if (!runparams.inComment && !runparams.dryrun && !runparams.nice &&
isFileReadable(in_file)) {
// mangledFilename() needs the extension
// exporting to .tex copy it to the tmp directory.
// This prevents problems with spaces and 8bit charcaters
// in the file name.
- if (!runparams.inComment && !runparams.nice &&
+ if (!runparams.inComment && !runparams.dryrun && !runparams.nice &&
isFileReadable(in_file)) {
// use new style name
base = removeExtension(
// run through the LaTeX compiler.
// If we're running through the LaTeX compiler, we should write the
// generated files in the bufer's temporary directory.
- bool const external_in_tmpdir = !runparams.nice;
+ bool const external_in_tmpdir = !runparams.nice && !runparams.dryrun;
// If the template has specified a PDFLaTeX output, then we try and
// use that.
lyxerr[Debug::LATEX] << "exportfile:" << exportfile << endl;
lyxerr[Debug::LATEX] << "writefile:" << writefile << endl;
- if (runparams.inComment)
+ if (runparams.inComment || runparams.dryrun)
// Don't try to load or copy the file
;
else if (loadIfNeeded(buffer, params_)) {
data = freefont2string();
if (!data.empty())
owner->getDialogs().show("character", data);
- }
-
- else if (name == "latexlog") {
+ } else if (name == "latexlog") {
pair<Buffer::LogType, string> const logfile =
owner->buffer()->getLogName();
switch (logfile.first) {
}
data += logfile.second;
owner->getDialogs().show("log", data);
- }
- else if (name == "vclog") {
+ } else if (name == "vclog") {
string const data = "vc " +
owner->buffer()->lyxvc().getLogFile();
owner->getDialogs().show("log", data);
- }
- else if (name == "view-source") {
- // get the *top* level paragraphs that contain the cursor,
- // or the selected text
- lyx::pit_type par_begin;
- lyx::pit_type par_end;
- if (!view()->cursor().selection()) {
- par_begin = view()->cursor().bottom().pit();
- par_end = par_begin;
- } else {
- par_begin = view()->cursor().selectionBegin().bottom().pit();
- par_end = view()->cursor().selectionEnd().bottom().pit();
- }
- if (par_begin > par_end)
- std::swap(par_begin, par_end);
- ostringstream ostr;
- view()->buffer()->getSourceCode(ostr, par_begin, par_end + 1);
- // display the dialog and show source code
- owner->getDialogs().show("view-source", ostr.str());
- }
- else
+ } else
owner->getDialogs().show(name, data);
break;
}
bv->switchKeyMap();
bv->owner()->updateMenubar();
bv->owner()->updateToolbars();
-
- // if view-source dialog is visible, send source code of selected
- // text to the dialog
- if (cmd.button() == mouse_button::button1 && cur.selection()
- && bv->owner()->getDialogs().visible("view-source")) {
- // get *top* level paragraphs that contain the selection
- lyx::pit_type par_begin = bv->cursor().selectionBegin().bottom().pit();
- lyx::pit_type par_end = bv->cursor().selectionEnd().bottom().pit();
- if (par_begin > par_end)
- std::swap(par_begin, par_end);
- ostringstream ostr;
- bv->buffer()->getSourceCode(ostr, par_begin, par_end + 1);
- // display the dialog and show source code
- bv->owner()->getDialogs().update("view-source", ostr.str());
- }
break;
}