X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInset.cpp;h=40f33d9fd11d540d405ec1dc525abbd4610f0a3f;hb=d6f1915684328c6e3fe61c6eef8846b5cabec334;hp=454cce474db47d20f92232344f29b8b5aaf9b5c5;hpb=11a6b3c4c7a031fd3776f53c9c43f62116933cea;p=lyx.git diff --git a/src/insets/Inset.cpp b/src/insets/Inset.cpp index 454cce474d..40f33d9fd1 100644 --- a/src/insets/Inset.cpp +++ b/src/insets/Inset.cpp @@ -16,7 +16,9 @@ #include "Inset.h" +#include "buffer_funcs.h" #include "Buffer.h" +#include "BufferList.h" #include "BufferParams.h" #include "BufferView.h" #include "CoordCache.h" @@ -25,26 +27,27 @@ #include "DispatchResult.h" #include "FuncRequest.h" #include "FuncStatus.h" +#include "MetricsInfo.h" #include "Text.h" #include "TextClass.h" -#include "MetricsInfo.h" -#include "MetricsInfo.h" -#include "frontends/Painter.h" #include "frontends/Application.h" +#include "frontends/Painter.h" #include "support/convert.h" #include "support/debug.h" +#include "support/docstream.h" +#include "support/ExceptionMessage.h" #include "support/gettext.h" +#include "support/lassert.h" #include using namespace std; +using namespace lyx::support; namespace lyx { -extern bool quitting; - class InsetName { public: InsetName(string const & n, InsetCode c) : name(n), code(c) {} @@ -91,19 +94,19 @@ static TranslatorMap const build_translator() InsetName("index_print", INDEX_PRINT_CODE), InsetName("nomencl_print", NOMENCL_PRINT_CODE), InsetName("optarg", OPTARG_CODE), - InsetName("environment", ENVIRONMENT_CODE), - InsetName("hfill", HFILL_CODE), InsetName("newline", NEWLINE_CODE), InsetName("line", LINE_CODE), InsetName("branch", BRANCH_CODE), InsetName("box", BOX_CODE), InsetName("flex", FLEX_CODE), + InsetName("space", SPACE_CODE), InsetName("vspace", VSPACE_CODE), InsetName("mathmacroarg", MATHMACROARG_CODE), InsetName("listings", LISTINGS_CODE), InsetName("info", INFO_CODE), InsetName("collapsable", COLLAPSABLE_CODE), InsetName("newpage", NEWPAGE_CODE), + InsetName("tablecell", CELL_CODE) }; size_t const insetnames_size = @@ -119,12 +122,51 @@ static TranslatorMap const build_translator() } +void Inset::setBuffer(Buffer & buffer) +{ + buffer_ = &buffer; +} + + +Buffer & Inset::buffer() +{ + if (!buffer_) { + odocstringstream s; + lyxerr << "LyX Code: " << lyxCode() << " name: " << name() << std::endl; + s << "LyX Code: " << lyxCode() << " name: " << name(); + LASSERT(false, /**/); + throw ExceptionMessage(BufferException, + from_ascii("Inset::buffer_ member not initialized!"), s.str()); + } + return *buffer_; +} + + +Buffer const & Inset::buffer() const +{ + return const_cast(this)->buffer(); +} + + +bool Inset::isBufferValid() const +{ + return buffer_ && theBufferList().isLoaded(buffer_); +} + + docstring Inset::name() const { return from_ascii("unknown"); } +void Inset::initView() +{ + if (isLabeled()) + lyx::updateLabels(buffer()); +} + + docstring Inset::toolTip(BufferView const &, int, int) const { return docstring(); @@ -174,10 +216,18 @@ void Inset::dispatch(Cursor & cur, FuncRequest & cmd) } -void Inset::doDispatch(Cursor & cur, FuncRequest &) +void Inset::doDispatch(Cursor & cur, FuncRequest &cmd) { - cur.noUpdate(); - cur.undispatched(); + switch (cmd.action) { + case LFUN_INSET_TOGGLE: + edit(cur, true); + cur.dispatched(); + break; + default: + cur.noUpdate(); + cur.undispatched(); + break; + } } @@ -197,23 +247,29 @@ bool Inset::getStatus(Cursor &, FuncRequest const & cmd, // Allow modification of our data. // This needs to be handled in the doDispatch method of our // instantiatable children. - flag.enabled(true); + flag.setEnabled(true); return true; case LFUN_INSET_INSERT: // Don't allow insertion of new insets. // Every inset that wants to allow new insets from open // dialogs needs to override this. - flag.enabled(false); + flag.setEnabled(false); + return true; + + case LFUN_INSET_TOGGLE: + // remove this if we dissociate toggle from edit. + flag.setEnabled(editable() == IS_EDITABLE); return true; default: - return false; + break; } + return false; } -void Inset::edit(Cursor &, bool, EntryDirectionType) +void Inset::edit(Cursor &, bool, EntryDirection) { LYXERR(Debug::INSETS, "edit left/right"); } @@ -248,8 +304,7 @@ bool Inset::idxUpDown(Cursor &, bool) const } -int Inset::docbook(Buffer const &, - odocstream &, OutputParams const &) const +int Inset::docbook(odocstream &, OutputParams const &) const { return 0; } @@ -273,7 +328,7 @@ bool Inset::autoDelete() const } -docstring const Inset::editMessage() const +docstring Inset::editMessage() const { return _("Opened inset"); } @@ -363,20 +418,19 @@ bool Inset::covers(BufferView const & bv, int x, int y) const InsetLayout const & Inset::getLayout(BufferParams const & bp) const { - return bp.getTextClass().insetlayout(name()); + return bp.documentClass().insetLayout(name()); } void Inset::dump() const { - Buffer buf("foo", 1); - write(buf, lyxerr); + write(lyxerr); } ColorCode Inset::backgroundColor() const { - return Color_background; + return Color_none; } @@ -395,9 +449,13 @@ void Inset::setDimCache(MetricsInfo const & mi, Dimension const & dim) const Buffer const * Inset::updateFrontend() const { - if (quitting) - return 0; - return theApp()->updateInset(this); + return theApp() ? theApp()->updateInset(this) : 0; +} + + +docstring Inset::completionPrefix(Cursor const &) const +{ + return docstring(); } } // namespace lyx