commit 12c196755b708d344f113204cbc120981dccabbc
Author: Richard Heck <[email protected]>
Date:   Thu Apr 19 00:09:41 2018 -0400

    Fix bug #11118.
    
    Adds LFUN_MASTER_BUFFER_EXPORT.
    
    (cherry picked from commit c4c7053d1d1cfc0b430b6565448e5b9fcacc60be)
---
 src/FuncCode.h                |    1 +
 src/LyXAction.cpp             |   19 +++++++++++++++++++
 src/frontends/qt4/GuiView.cpp |   17 +++++++++++++++++
 status.23x                    |    3 +++
 4 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/src/FuncCode.h b/src/FuncCode.h
index cce61f0..b4ac25e 100644
--- a/src/FuncCode.h
+++ b/src/FuncCode.h
@@ -478,6 +478,7 @@ enum FuncCode
        LFUN_EXPORT_CANCEL,             // rgh, 20171227
        LFUN_BUFFER_ANONYMIZE,          // sanda, 20180201
        LFUN_GRAPHICS_UNIFY,            // sanda, 20180207
+       LFUN_MASTER_BUFFER_EXPORT,      // rkh, 20180417
        LFUN_LASTACTION                 // end of the table
 };
 
diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp
index 8362510..9c02796 100644
--- a/src/LyXAction.cpp
+++ b/src/LyXAction.cpp
@@ -2494,6 +2494,25 @@ void LyXAction::init()
 
 
 /*!
+ * \var lyx::FuncCode lyx::LFUN_MASTER_BUFFER_EXPORT
+ * \li Action: Exports the master buffer (document) to the given format.
+ * \li Syntax: master-buffer-export [<FORMAT>] [<DEST>]
+ * \li Params: <FORMAT> is one of the formats which you can find in 
+                        Tools->Preferences->File formats->Format.
+                        Usual format you will enter is "pdf2" (pdflatex),
+                        "pdflatex" (plain tex for pdflatex) or "ps" for 
postscript.\n
+                        Note that "custom" is not allowed in this case.\n
+                        If absent or "default", then the default output format 
of the
+                        document is used.\n
+               <DEST>   If present, this argument provides the export 
destination
+                        filename. Its containing folder will also be the 
destination
+                        folder, where all the needed external files will be 
copied.
+ * \li Origin: rkh, 18 April 2018
+ * \endvar
+ */
+               { LFUN_MASTER_BUFFER_EXPORT, "master-buffer-export", ReadOnly, 
Buffer },
+
+/*!
  * \var lyx::FuncCode lyx::LFUN_MASTER_BUFFER_UPDATE
  * \li Action: Update (export) the document built from the master buffer,
                if the current buffer is part of a master/child document.
diff --git a/src/frontends/qt4/GuiView.cpp b/src/frontends/qt4/GuiView.cpp
index f20bc02..672c9f8 100644
--- a/src/frontends/qt4/GuiView.cpp
+++ b/src/frontends/qt4/GuiView.cpp
@@ -1859,6 +1859,15 @@ bool GuiView::getStatus(FuncRequest const & cmd, 
FuncStatus & flag)
        case LFUN_BUFFER_IMPORT:
                break;
 
+       case LFUN_MASTER_BUFFER_EXPORT:
+               enable = doc_buffer
+                       && (doc_buffer->parent() != 0
+                           || doc_buffer->hasChildren())
+                       && !d.processing_thread_watcher_.isRunning()
+                       // this launches a dialog, which would be in the wrong 
Buffer
+                       && !(::lyx::operator==(cmd.argument(), "custom"));
+               break;
+
        case LFUN_MASTER_BUFFER_UPDATE:
        case LFUN_MASTER_BUFFER_VIEW:
                enable = doc_buffer
@@ -3684,11 +3693,19 @@ void GuiView::dispatch(FuncRequest const & cmd, 
DispatchResult & dr)
                        importDocument(to_utf8(cmd.argument()));
                        break;
 
+               case LFUN_MASTER_BUFFER_EXPORT:
+                       if (doc_buffer)
+                               doc_buffer = const_cast<Buffer 
*>(doc_buffer->masterBuffer());
+                       // fall through
                case LFUN_BUFFER_EXPORT: {
                        if (!doc_buffer)
                                break;
                        // GCC only sees strfwd.h when building merged
                        if (::lyx::operator==(cmd.argument(), "custom")) {
+                               // LFUN_MASTER_BUFFER_EXPORT is not enabled for 
this case,
+                               // so the following test should not be needed.
+                               // In principle, we could try to switch to such 
a view...
+                               // if (cmd.action() == LFUN_BUFFER_EXPORT)
                                dispatch(FuncRequest(LFUN_DIALOG_SHOW, 
"sendto"), dr);
                                break;
                        }
diff --git a/status.23x b/status.23x
index 65eacbb..26a71a3 100644
--- a/status.23x
+++ b/status.23x
@@ -22,6 +22,9 @@ What's new
 
 - Support rotation of multi-page tables via (pdf)lscape (bug 9194).
 
+- Added LFUN_MASTER_BUFFER_EXPORT, which exports the master buffer, along
+  the lines of LFUN_MASTER_BUFFER_VIEW (bug 11118).
+
 
 * TEX2LYX IMPROVEMENTS
 

Reply via email to