]> git.lyx.org Git - features.git/commitdiff
Update on view-source feature (r13610), from Bo Peng (ben.bob@gmail.com)
authorBo Peng <bpeng@lyx.org>
Mon, 10 Apr 2006 16:27:59 +0000 (16:27 +0000)
committerBo Peng <bpeng@lyx.org>
Mon, 10 Apr 2006 16:27:59 +0000 (16:27 +0000)
* src/text3.C, src/lyxfunc.C: no special treatment of view-source dialog now.
* src/frontends/controllers/ControlViewSource.h, .C:
handle everything (get source type, code) in the controller.
* src/insets/insetbibtex.C, insetexternal.C insetinclude.C:
add dryrun mode to file copying etc.
* src/frontends/qt2/QViewSource.C: small changes when calling the controller.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13627 a592a061-630c-0410-9148-cb99ea01b6c8

src/buffer.C
src/frontends/controllers/ControlViewSource.C
src/frontends/controllers/ControlViewSource.h
src/frontends/qt2/QViewSource.C
src/insets/insetbibtex.C
src/insets/insetexternal.C
src/insets/insetinclude.C
src/lyxfunc.C
src/text3.C

index 2375a9b11de1eacce0fc854d1662a4ce261099b4..c006521c36472dd625e7ef5d6a7e4a22d40faec3 100644 (file)
@@ -1576,7 +1576,7 @@ void Buffer::changeRefsIfUnique(string const & from, string const & to)
 }
 
 
-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;
@@ -1587,16 +1587,6 @@ void Buffer::getSourceCode(ostream& os, lyx::pit_type par_begin, lyx::pit_type p
        // 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
index 17ac4796077c03d37fb822158699fd8cdadfe0bb..7b50b844cbb6b80a30f42a9c905ae527ee76f4f2 100644 (file)
 
 #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 {
@@ -27,39 +33,58 @@ ControlViewSource::ControlViewSource(Dialog & parent)
 
 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
index 3e9d2f52fe60d2a7dc2dec9738c32d4f1e6919c6..52002b38252d8d7a7737a7c5d19a53bbf4265ff4 100644 (file)
@@ -36,22 +36,11 @@ public:
        ///
        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
index 1f4f46ccec06626d7a714e60b63504cdb671b29c..d0494c48e8e7dbb370d724415e4ff1a9c125b23d 100644 (file)
@@ -14,6 +14,7 @@
 #include "QViewSource.h"
 #include "QViewSourceDialog.h"
 #include "qt_helpers.h"
+#include "lyx_gui.h"
 
 #include "controllers/ControlViewSource.h"
 
@@ -38,7 +39,7 @@ void QViewSource::build_dialog()
        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);
@@ -50,8 +51,7 @@ void QViewSource::build_dialog()
 void QViewSource::update_contents()
 {
        setTitle(controller().title());
-
-       dialog_->viewSourceTV->setText(toqstr(controller().str()));
+       dialog_->viewSourceTV->setText(toqstr(controller().updateContent()));
 }
 
 } // namespace frontend
index 7222ce061d8e348f614b7695521773f47bfe039f..6251a9bc54ca729805505c8370209a3f5865f442 100644 (file)
@@ -161,7 +161,7 @@ int InsetBibtex::latex(Buffer const & buffer, ostream & os,
                        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
@@ -216,7 +216,7 @@ int InsetBibtex::latex(Buffer const & buffer, ostream & os,
                // 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(
index 5124aaf2421e3b94ae51b9f7e6a254f5335c4a4b..c8faf6f0d0fa3c67e390bb2649f38614915bf3f1 100644 (file)
@@ -688,7 +688,7 @@ int InsetExternal::latex(Buffer const & buf, ostream & os,
        // 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.
index 0bbcedbdcc95eb91b1a0c55a65e203594d049504..3e3b4c7852afdc24578d182d4f7960bea664cd21 100644 (file)
@@ -359,7 +359,7 @@ int InsetInclude::latex(Buffer const & buffer, ostream & os,
        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_)) {
index 0379b6b6f651b545fec0d539dc8ad0653bf6e4d8..2b80a2535a9108b6a1c26ce7ac33d1075d596727 100644 (file)
@@ -1165,9 +1165,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                                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) {
@@ -1180,32 +1178,11 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                                }
                                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;
                }
index fadfb888f581d3f96d65f0c6b273c430529dae69..a4aeb2077026e6b1d0be40dcd0cf15164c1bc4e4 100644 (file)
@@ -1108,21 +1108,6 @@ void LyXText::dispatch(LCursor & cur, FuncRequest & cmd)
                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;
        }