Introduce a new LyXAction property 'NoInternal' to take care of LFUNs that should not be applied to internal Buffers and use that in BufferView.

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31433 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Abdelrazak Younes 2009-09-21 12:36:22 +00:00
parent c9f1c6cf5f
commit d5d3ccc0fa
3 changed files with 13 additions and 21 deletions

View File

@ -37,6 +37,7 @@
#include "LayoutFile.h" #include "LayoutFile.h"
#include "Lexer.h" #include "Lexer.h"
#include "LyX.h" #include "LyX.h"
#include "LyXAction.h"
#include "lyxfind.h" #include "lyxfind.h"
#include "LyXFunc.h" #include "LyXFunc.h"
#include "Layout.h" #include "Layout.h"
@ -1092,11 +1093,13 @@ bool BufferView::dispatch(FuncRequest const & cmd)
string const argument = to_utf8(cmd.argument()); string const argument = to_utf8(cmd.argument());
Cursor & cur = d->cursor_; Cursor & cur = d->cursor_;
// Don't dispatch function that does not apply to internal buffers.
if (buffer_.isInternal() && lyxaction.funcHasFlag(cmd.action, LyXAction::NoInternal))
return false;
switch (cmd.action) { switch (cmd.action) {
case LFUN_BUFFER_PARAMS_APPLY: { case LFUN_BUFFER_PARAMS_APPLY: {
if (buffer_.isInternal())
return false;
DocumentClass const * const oldClass = buffer_.params().documentClassPtr(); DocumentClass const * const oldClass = buffer_.params().documentClassPtr();
cur.recordUndoFullDocument(); cur.recordUndoFullDocument();
istringstream ss(to_utf8(cmd.argument())); istringstream ss(to_utf8(cmd.argument()));
@ -1118,8 +1121,6 @@ bool BufferView::dispatch(FuncRequest const & cmd)
} }
case LFUN_LAYOUT_MODULES_CLEAR: { case LFUN_LAYOUT_MODULES_CLEAR: {
if (buffer_.isInternal())
return false;
DocumentClass const * const oldClass = DocumentClass const * const oldClass =
buffer_.params().documentClassPtr(); buffer_.params().documentClassPtr();
cur.recordUndoFullDocument(); cur.recordUndoFullDocument();
@ -1131,8 +1132,6 @@ bool BufferView::dispatch(FuncRequest const & cmd)
} }
case LFUN_LAYOUT_MODULE_ADD: { case LFUN_LAYOUT_MODULE_ADD: {
if (buffer_.isInternal())
return false;
BufferParams const & params = buffer_.params(); BufferParams const & params = buffer_.params();
if (!params.moduleCanBeAdded(argument)) { if (!params.moduleCanBeAdded(argument)) {
LYXERR0("Module `" << argument << LYXERR0("Module `" << argument <<
@ -1150,8 +1149,6 @@ bool BufferView::dispatch(FuncRequest const & cmd)
} }
case LFUN_TEXTCLASS_APPLY: { case LFUN_TEXTCLASS_APPLY: {
if (buffer_.isInternal())
return false;
if (!LayoutFileList::get().load(argument, buffer_.temppath()) && if (!LayoutFileList::get().load(argument, buffer_.temppath()) &&
!LayoutFileList::get().load(argument, buffer_.filePath())) !LayoutFileList::get().load(argument, buffer_.filePath()))
break; break;
@ -1175,15 +1172,11 @@ bool BufferView::dispatch(FuncRequest const & cmd)
} }
case LFUN_TEXTCLASS_LOAD: case LFUN_TEXTCLASS_LOAD:
if (buffer_.isInternal())
return false;
LayoutFileList::get().load(argument, buffer_.temppath()) || LayoutFileList::get().load(argument, buffer_.temppath()) ||
LayoutFileList::get().load(argument, buffer_.filePath()); LayoutFileList::get().load(argument, buffer_.filePath());
break; break;
case LFUN_LAYOUT_RELOAD: { case LFUN_LAYOUT_RELOAD: {
if (buffer_.isInternal())
return false;
DocumentClass const * const oldClass = buffer_.params().documentClassPtr(); DocumentClass const * const oldClass = buffer_.params().documentClassPtr();
LayoutFileIndex bc = buffer_.params().baseClassID(); LayoutFileIndex bc = buffer_.params().baseClassID();
LayoutFileList::get().reset(bc); LayoutFileList::get().reset(bc);
@ -1256,8 +1249,6 @@ bool BufferView::dispatch(FuncRequest const & cmd)
} }
case LFUN_PARAGRAPH_GOTO: { case LFUN_PARAGRAPH_GOTO: {
if (buffer_.isInternal())
return false;
int const id = convert<int>(cmd.getArg(0)); int const id = convert<int>(cmd.getArg(0));
int const pos = convert<int>(cmd.getArg(1)); int const pos = convert<int>(cmd.getArg(1));
int i = 0; int i = 0;

View File

@ -1440,7 +1440,7 @@ void LyXAction::init()
* \li Origin: rgh, 25 August 2007 * \li Origin: rgh, 25 August 2007
* \endvar * \endvar
*/ */
{ LFUN_LAYOUT_MODULES_CLEAR, "layout-modules-clear", Noop, Layout }, { LFUN_LAYOUT_MODULES_CLEAR, "layout-modules-clear", NoInternal, Layout },
/*! /*!
* \var lyx::FuncCode lyx::LFUN_LAYOUT_MODULE_ADD * \var lyx::FuncCode lyx::LFUN_LAYOUT_MODULE_ADD
* \li Action: Adds a module. * \li Action: Adds a module.
@ -1450,7 +1450,7 @@ void LyXAction::init()
* \li Origin: rgh, 25 August 2007 * \li Origin: rgh, 25 August 2007
* \endvar * \endvar
*/ */
{ LFUN_LAYOUT_MODULE_ADD, "layout-module-add", Noop, Layout }, { LFUN_LAYOUT_MODULE_ADD, "layout-module-add", NoInternal, Layout },
/*! /*!
* \var lyx::FuncCode lyx::LFUN_LAYOUT_RELOAD * \var lyx::FuncCode lyx::LFUN_LAYOUT_RELOAD
* \li Action: Reloads layout information. * \li Action: Reloads layout information.
@ -1462,7 +1462,7 @@ void LyXAction::init()
* \li Origin: rgh, 3 September 2007 * \li Origin: rgh, 3 September 2007
* \endvar * \endvar
*/ */
{ LFUN_LAYOUT_RELOAD, "layout-reload", Noop, Layout }, { LFUN_LAYOUT_RELOAD, "layout-reload", NoInternal, Layout },
/*! /*!
* \var lyx::FuncCode lyx::LFUN_TEXTCLASS_APPLY * \var lyx::FuncCode lyx::LFUN_TEXTCLASS_APPLY
* \li Action: Sets the text class for the current buffer. * \li Action: Sets the text class for the current buffer.
@ -1471,7 +1471,7 @@ void LyXAction::init()
the filename, minus the ".layout" extension. the filename, minus the ".layout" extension.
* \endvar * \endvar
*/ */
{ LFUN_TEXTCLASS_APPLY, "textclass-apply", Noop, Layout }, { LFUN_TEXTCLASS_APPLY, "textclass-apply", NoInternal, Layout },
/*! /*!
* \var lyx::FuncCode lyx::LFUN_TEXTCLASS_LOAD * \var lyx::FuncCode lyx::LFUN_TEXTCLASS_LOAD
* \li Action: Loads information for a textclass from disk. * \li Action: Loads information for a textclass from disk.
@ -1480,7 +1480,7 @@ void LyXAction::init()
the filename, minus the ".layout" extension. the filename, minus the ".layout" extension.
* \endvar * \endvar
*/ */
{ LFUN_TEXTCLASS_LOAD, "textclass-load", Noop, Layout }, { LFUN_TEXTCLASS_LOAD, "textclass-load", NoInternal, Layout },
/*! /*!
* \var lyx::FuncCode lyx::LFUN_MARK_OFF * \var lyx::FuncCode lyx::LFUN_MARK_OFF
@ -1916,7 +1916,7 @@ void LyXAction::init()
* \li Origin: Dekel, 26 Aug 2000 * \li Origin: Dekel, 26 Aug 2000
* \endvar * \endvar
*/ */
{ LFUN_PARAGRAPH_GOTO, "paragraph-goto", ReadOnly, Edit }, { LFUN_PARAGRAPH_GOTO, "paragraph-goto", ReadOnly | NoInternal, Edit },
/*! /*!
* \var lyx::FuncCode lyx::LFUN_BREAK_PARAGRAPH * \var lyx::FuncCode lyx::LFUN_BREAK_PARAGRAPH
* \li Action: Breaks the current paragraph at the current location. * \li Action: Breaks the current paragraph at the current location.
@ -3090,7 +3090,7 @@ void LyXAction::init()
* \li Origin: leeming, 30 Mar 2004 * \li Origin: leeming, 30 Mar 2004
* \endvar * \endvar
*/ */
{ LFUN_BUFFER_PARAMS_APPLY, "buffer-params-apply", Noop, Buffer }, { LFUN_BUFFER_PARAMS_APPLY, "buffer-params-apply", NoInternal, Buffer },
/*! /*!
* \var lyx::FuncCode lyx::LFUN_FILE_INSERT * \var lyx::FuncCode lyx::LFUN_FILE_INSERT

View File

@ -70,6 +70,7 @@ public:
NoUpdate = 8, //< Does not (usually) require update NoUpdate = 8, //< Does not (usually) require update
SingleParUpdate = 16, //< Usually only requires this par updated SingleParUpdate = 16, //< Usually only requires this par updated
AtPoint = 32, //< dispatch first to inset at cursor if there is one AtPoint = 32, //< dispatch first to inset at cursor if there is one
NoInternal = 64, //< Cannot be used for internal, non-document Buffers
}; };
LyXAction(); LyXAction();