]> git.lyx.org Git - lyx.git/blobdiff - src/LyXFunc.cpp
* make it compile
[lyx.git] / src / LyXFunc.cpp
index 9bd586b8c278435ea4e607a107f54e78489845a5..247136330ddfabdd8f64cb8cac172e0f17937863 100644 (file)
@@ -28,6 +28,7 @@
 #include "BufferList.h"
 #include "BufferParams.h"
 #include "BufferView.h"
+#include "CmdDef.h"
 #include "Color.h"
 #include "Cursor.h"
 #include "CutAndPaste.h"
@@ -35,7 +36,6 @@
 #include "DispatchResult.h"
 #include "Encoding.h"
 #include "ErrorList.h"
-#include "Exporter.h"
 #include "Format.h"
 #include "FuncRequest.h"
 #include "FuncStatus.h"
@@ -383,7 +383,7 @@ void LyXFunc::processKeySym(KeySymbol const & keysym, KeyModifier state)
        LYXERR(Debug::KEY) << BOOST_CURRENT_FUNCTION
               << " Key [action="
               << func.action << "]["
-              << to_utf8(keyseq.print(false)) << ']'
+              << to_utf8(keyseq.print(KeySequence::Portable)) << ']'
               << endl;
 
        // already here we know if it any point in going further
@@ -391,7 +391,7 @@ void LyXFunc::processKeySym(KeySymbol const & keysym, KeyModifier state)
        // num_bytes == 0? (Lgb)
 
        if (keyseq.length() > 1)
-               lyx_view_->message(keyseq.print(true));
+               lyx_view_->message(keyseq.print(KeySequence::ForGui));
 
 
        // Maybe user can only reach the key via holding down shift.
@@ -509,7 +509,7 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
 
        case LFUN_BUFFER_EXPORT:
                enable = cmd.argument() == "custom"
-                       || Exporter::isExportable(*buf, to_utf8(cmd.argument()));
+                       || buf->isExportable(to_utf8(cmd.argument()));
                break;
 
        case LFUN_BUFFER_CHKTEX:
@@ -517,7 +517,7 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
                break;
 
        case LFUN_BUILD_PROGRAM:
-               enable = Exporter::isExportable(*buf, "program");
+               enable = buf->isExportable("program");
                break;
 
        case LFUN_VC_REGISTER:
@@ -572,7 +572,7 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
                                || name == "prefs"
                                || name == "texinfo";
                else if (name == "print")
-                       enable = Exporter::isExportable(*buf, "dvi")
+                       enable = buf->isExportable("dvi")
                                && lyxrc.print_command != "none";
                else if (name == "character") {
                        if (!view())
@@ -665,6 +665,23 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
                FuncRequest func(lyxaction.lookupFunc(firstcmd));
                func.origin = cmd.origin;
                flag = getStatus(func);
+               break;
+       }
+
+       case LFUN_CALL: {
+               FuncRequest func;
+               std::string name(to_utf8(cmd.argument()));
+               if (LyX::ref().topLevelCmdDef().lock(name, func)) {
+                       func.origin = cmd.origin;
+                       flag = getStatus(func);
+                       LyX::ref().topLevelCmdDef().release(name);
+               } else {
+                       // catch recursion or unknown command definiton
+                       // all operations until the recursion or unknown command 
+                       // definiton occures are performed, so set the state to enabled
+                       enable = true;
+               }
+               break;
        }
 
        case LFUN_BUFFER_NEW:
@@ -895,7 +912,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
 
                case LFUN_META_PREFIX:
                        meta_fake_bit = AltModifier;
-                       setMessage(keyseq.print(true));
+                       setMessage(keyseq.print(KeySequence::ForGui));
                        break;
 
                case LFUN_BUFFER_TOGGLE_READ_ONLY: {
@@ -983,27 +1000,27 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
 
                case LFUN_BUFFER_UPDATE:
                        BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
-                       Exporter::Export(lyx_view_->buffer(), argument, true);
+                       lyx_view_->buffer()->doExport(argument, true);
                        break;
 
                case LFUN_BUFFER_VIEW:
                        BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
-                       Exporter::preview(lyx_view_->buffer(), argument);
+                       lyx_view_->buffer()->preview(argument);
                        break;
 
                case LFUN_MASTER_BUFFER_UPDATE:
                        BOOST_ASSERT(lyx_view_ && lyx_view_->buffer() && lyx_view_->buffer()->masterBuffer());
-                       Exporter::Export(lyx_view_->buffer()->masterBuffer(), argument, true);
+                       lyx_view_->buffer()->masterBuffer()->doExport(argument, true);
                        break;
 
                case LFUN_MASTER_BUFFER_VIEW:
                        BOOST_ASSERT(lyx_view_ && lyx_view_->buffer() && lyx_view_->buffer()->masterBuffer());
-                       Exporter::preview(lyx_view_->buffer()->masterBuffer(), argument);
+                       lyx_view_->buffer()->masterBuffer()->preview(argument);
                        break;
 
                case LFUN_BUILD_PROGRAM:
                        BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
-                       Exporter::Export(lyx_view_->buffer(), "program", true);
+                       lyx_view_->buffer()->doExport("program", true);
                        break;
 
                case LFUN_BUFFER_CHKTEX:
@@ -1015,9 +1032,8 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
                        if (argument == "custom")
                                lyx_view_->getDialogs().show("sendto");
-                       else {
-                               Exporter::Export(lyx_view_->buffer(), argument, false);
-                       }
+                       else
+                               lyx_view_->buffer()->doExport(argument, false);
                        break;
 
                case LFUN_BUFFER_EXPORT_CUSTOM: {
@@ -1048,7 +1064,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                                        break;
 
                        } else {
-                               Exporter::Export(buffer, format_name, true, filename);
+                               buffer->doExport(format_name, true, filename);
                        }
 
                        // Substitute $$FName for filename
@@ -1085,7 +1101,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
 
                        Buffer * buffer = lyx_view_->buffer();
 
-                       if (!Exporter::Export(buffer, "dvi", true)) {
+                       if (!buffer->doExport("dvi", true)) {
                                showPrintError(buffer->absFileName());
                                break;
                        }
@@ -1318,7 +1334,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        break;
 
                case LFUN_SERVER_NOTIFY:
-                       dispatch_buffer = keyseq.print(false);
+                       dispatch_buffer = keyseq.print(KeySequence::Portable);
                        theServer().notifyClient(to_utf8(dispatch_buffer));
                        break;
 
@@ -1634,6 +1650,28 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        break;
                }
 
+               case LFUN_CALL: {
+                       FuncRequest func;
+                       if (LyX::ref().topLevelCmdDef().lock(argument, func)) {
+                               func.origin = cmd.origin;
+                               dispatch(func);
+                               LyX::ref().topLevelCmdDef().release(argument);
+                       } else {
+                               if (func.action == LFUN_UNKNOWN_ACTION) {
+                                       // unknown command definition
+                                       lyxerr << "Warning: unknown command definition `"
+                                                  << argument << "'"
+                                                  << endl;
+                               } else {
+                                       // recursion detected
+                                       lyxerr << "Warning: Recursion in the command definition `"
+                                                  << argument << "' detected"
+                                                  << endl;
+                               }
+                       }
+                       break;
+               }
+
                case LFUN_PREFERENCES_SAVE: {
                        lyxrc.write(makeAbsPath("preferences",
                                                package().user_support().absFilename()),
@@ -2313,7 +2351,7 @@ docstring const LyXFunc::viewStatusMessage()
 {
        // When meta-fake key is pressed, show the key sequence so far + "M-".
        if (wasMetaKey())
-               return keyseq.print(true) + "M-";
+               return keyseq.print(KeySequence::ForGui) + "M-";
 
        // Else, when a non-complete key sequence is pressed,
        // show the available options.