X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInset.cpp;h=0cfb10cdd3e074dd2057529624b56f83a2b2a4e6;hb=c3a8b3a566e9e90f9ade72acbc723232d721d0b1;hp=01e039f4616ce76f803103140e3629560db66eac;hpb=a7058ad9c7f5ca37d965330ad695acb29af9c1fa;p=lyx.git diff --git a/src/insets/Inset.cpp b/src/insets/Inset.cpp index 01e039f461..0cfb10cdd3 100644 --- a/src/insets/Inset.cpp +++ b/src/insets/Inset.cpp @@ -19,97 +19,98 @@ #include "Buffer.h" #include "BufferParams.h" #include "BufferView.h" -#include "Color.h" #include "CoordCache.h" #include "Cursor.h" -#include "debug.h" #include "Dimension.h" #include "DispatchResult.h" #include "FuncRequest.h" #include "FuncStatus.h" -#include "gettext.h" #include "Text.h" #include "TextClass.h" #include "MetricsInfo.h" #include "MetricsInfo.h" #include "frontends/Painter.h" +#include "frontends/Application.h" #include "support/convert.h" - -#include +#include "support/debug.h" +#include "support/gettext.h" #include -#include +using namespace std; namespace lyx { +extern bool quitting; + class InsetName { public: - InsetName(std::string const & n, Inset::Code c) - : name(n), code(c) {} - std::string name; - Inset::Code code; + InsetName(string const & n, InsetCode c) : name(n), code(c) {} + string name; + InsetCode code; }; -typedef std::map TranslatorMap; +typedef map TranslatorMap; static TranslatorMap const build_translator() { InsetName const insetnames[] = { - InsetName("toc", Inset::TOC_CODE), - InsetName("quote", Inset::QUOTE_CODE), - InsetName("ref", Inset::REF_CODE), - InsetName("url", Inset::URL_CODE), - InsetName("htmlurl", Inset::HTMLURL_CODE), - InsetName("separator", Inset::SEPARATOR_CODE), - InsetName("ending", Inset::ENDING_CODE), - InsetName("label", Inset::LABEL_CODE), - InsetName("note", Inset::NOTE_CODE), - InsetName("accent", Inset::ACCENT_CODE), - InsetName("math", Inset::MATH_CODE), - InsetName("index", Inset::INDEX_CODE), - InsetName("nomenclature", Inset::NOMENCL_CODE), - InsetName("include", Inset::INCLUDE_CODE), - InsetName("graphics", Inset::GRAPHICS_CODE), - InsetName("bibitem", Inset::BIBITEM_CODE), - InsetName("bibtex", Inset::BIBTEX_CODE), - InsetName("text", Inset::TEXT_CODE), - InsetName("ert", Inset::ERT_CODE), - InsetName("foot", Inset::FOOT_CODE), - InsetName("margin", Inset::MARGIN_CODE), - InsetName("float", Inset::FLOAT_CODE), - InsetName("wrap", Inset::WRAP_CODE), - InsetName("specialchar", Inset::SPECIALCHAR_CODE), - InsetName("tabular", Inset::TABULAR_CODE), - InsetName("external", Inset::EXTERNAL_CODE), - InsetName("caption", Inset::CAPTION_CODE), - InsetName("mathmacro", Inset::MATHMACRO_CODE), - InsetName("cite", Inset::CITE_CODE), - InsetName("float_list", Inset::FLOAT_LIST_CODE), - InsetName("index_print", Inset::INDEX_PRINT_CODE), - InsetName("nomencl_print", Inset::NOMENCL_PRINT_CODE), - InsetName("optarg", Inset::OPTARG_CODE), - InsetName("environment", Inset::ENVIRONMENT_CODE), - InsetName("hfill", Inset::HFILL_CODE), - InsetName("newline", Inset::NEWLINE_CODE), - InsetName("line", Inset::LINE_CODE), - InsetName("branch", Inset::BRANCH_CODE), - InsetName("box", Inset::BOX_CODE), - InsetName("flex", Inset::FLEX_CODE), - InsetName("vspace", Inset::VSPACE_CODE), - InsetName("mathmacroarg", Inset::MATHMACROARG_CODE), - InsetName("listings", Inset::LISTINGS_CODE), + InsetName("toc", TOC_CODE), + InsetName("quote", QUOTE_CODE), + InsetName("ref", REF_CODE), + InsetName("href", HYPERLINK_CODE), + InsetName("separator", SEPARATOR_CODE), + InsetName("ending", ENDING_CODE), + InsetName("label", LABEL_CODE), + InsetName("note", NOTE_CODE), + InsetName("accent", ACCENT_CODE), + InsetName("math", MATH_CODE), + InsetName("index", INDEX_CODE), + InsetName("nomenclature", NOMENCL_CODE), + InsetName("include", INCLUDE_CODE), + InsetName("graphics", GRAPHICS_CODE), + InsetName("bibitem", BIBITEM_CODE), + InsetName("bibtex", BIBTEX_CODE), + InsetName("text", TEXT_CODE), + InsetName("ert", ERT_CODE), + InsetName("foot", FOOT_CODE), + InsetName("margin", MARGIN_CODE), + InsetName("float", FLOAT_CODE), + InsetName("wrap", WRAP_CODE), + InsetName("specialchar", SPECIALCHAR_CODE), + InsetName("tabular", TABULAR_CODE), + InsetName("external", EXTERNAL_CODE), + InsetName("caption", CAPTION_CODE), + InsetName("mathmacro", MATHMACRO_CODE), + InsetName("citation", CITE_CODE), + InsetName("floatlist", FLOAT_LIST_CODE), + 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("vspace", VSPACE_CODE), + InsetName("mathmacroarg", MATHMACROARG_CODE), + InsetName("listings", LISTINGS_CODE), + InsetName("info", INFO_CODE), + InsetName("collapsable", COLLAPSABLE_CODE), + InsetName("newpage", NEWPAGE_CODE), }; - std::size_t const insetnames_size = + size_t const insetnames_size = sizeof(insetnames) / sizeof(insetnames[0]); - std::map data; - for (std::size_t i = 0; i != insetnames_size; ++i) { + map data; + for (size_t i = 0; i != insetnames_size; ++i) { InsetName const & var = insetnames[i]; data[var.name] = var.code; } @@ -118,8 +119,22 @@ static TranslatorMap const build_translator() } -Inset::Inset() -{} +docstring Inset::name() const +{ + return from_ascii("unknown"); +} + + +docstring Inset::toolTip(BufferView const &, int, int) const +{ + return docstring(); +} + + +docstring Inset::contextMenu(BufferView const &, int, int) const +{ + return docstring(); +} Dimension const Inset::dimension(BufferView const & bv) const @@ -128,7 +143,7 @@ Dimension const Inset::dimension(BufferView const & bv) const } -Inset::Code Inset::translate(std::string const & name) +InsetCode insetCode(string const & name) { static TranslatorMap const translator = build_translator(); @@ -137,6 +152,20 @@ Inset::Code Inset::translate(std::string const & name) } +string insetName(InsetCode c) +{ + static TranslatorMap const translator = build_translator(); + + TranslatorMap::const_iterator it = translator.begin(); + TranslatorMap::const_iterator end = translator.end(); + for (; it != end; ++it) { + if (it->second == c) + return it->first; + } + return string(); +} + + void Inset::dispatch(Cursor & cur, FuncRequest & cmd) { cur.updateFlags(Update::Force | Update::FitCursor); @@ -184,18 +213,15 @@ bool Inset::getStatus(Cursor &, FuncRequest const & cmd, } -void Inset::edit(Cursor &, bool) +void Inset::edit(Cursor &, bool, EntryDirection) { - LYXERR(Debug::INSETS) << BOOST_CURRENT_FUNCTION - << ": edit left/right" << std::endl; + LYXERR(Debug::INSETS, "edit left/right"); } Inset * Inset::editXY(Cursor &, int x, int y) { - LYXERR(Debug::INSETS) << BOOST_CURRENT_FUNCTION - << ": x=" << x << " y= " << y - << std::endl; + LYXERR(Debug::INSETS, "x: " << x << " y: " << y); return this; } @@ -203,11 +229,9 @@ Inset * Inset::editXY(Cursor &, int x, int y) Inset::idx_type Inset::index(row_type row, col_type col) const { if (row != 0) - lyxerr << BOOST_CURRENT_FUNCTION - << ": illegal row: " << row << std::endl; + LYXERR0("illegal row: " << row); if (col != 0) - lyxerr << BOOST_CURRENT_FUNCTION - << ": illegal col: " << col << std::endl; + LYXERR0("illegal col: " << col); return 0; } @@ -258,7 +282,7 @@ docstring const Inset::editMessage() const void Inset::cursorPos(BufferView const & /*bv*/, CursorSlice const &, bool, int & x, int & y) const { - lyxerr << "Inset::cursorPos called directly" << std::endl; + LYXERR0("Inset::cursorPos called directly"); x = 100; y = 100; } @@ -281,8 +305,8 @@ void Inset::metricsMarkers2(Dimension & dim, int framesize) const void Inset::drawMarkers(PainterInfo & pi, int x, int y) const { - Color::color pen_color = mouseHovered() || editing(pi.base.bv)? - Color::mathframe : Color::mathcorners; + ColorCode pen_color = mouseHovered() || editing(pi.base.bv)? + Color_mathframe : Color_mathcorners; Dimension const dim = dimension(*pi.base.bv); @@ -298,8 +322,8 @@ void Inset::drawMarkers(PainterInfo & pi, int x, int y) const void Inset::drawMarkers2(PainterInfo & pi, int x, int y) const { - Color::color pen_color = mouseHovered() || editing(pi.base.bv)? - Color::mathframe : Color::mathcorners; + ColorCode pen_color = mouseHovered() || editing(pi.base.bv)? + Color_mathframe : Color_mathcorners; drawMarkers(pi, x, y); Dimension const dim = dimension(*pi.base.bv); @@ -313,7 +337,7 @@ void Inset::drawMarkers2(PainterInfo & pi, int x, int y) const } -bool Inset::editing(BufferView * bv) const +bool Inset::editing(BufferView const * bv) const { return bv->cursor().isInside(this); } @@ -350,15 +374,15 @@ void Inset::dump() const } -Color_color Inset::backgroundColor() const +ColorCode Inset::backgroundColor() const { - return Color::background; + return Color_background; } void Inset::setPosCache(PainterInfo const & pi, int x, int y) const { - //lyxerr << "Inset:: position cache to " << x << " " << y << std::endl; + //LYXERR("Inset: set position cache to " << x << " " << y); pi.base.bv->coordCache().insets().add(this, x, y); } @@ -369,19 +393,11 @@ void Inset::setDimCache(MetricsInfo const & mi, Dimension const & dim) const } - -///////////////////////////////////////// - -bool isEditableInset(Inset const * inset) -{ - return inset && inset->editable(); -} - - -bool isHighlyEditableInset(Inset const * inset) +Buffer const * Inset::updateFrontend() const { - return inset && inset->editable() == Inset::HIGHLY_EDITABLE; + if (quitting) + return 0; + return theApp()->updateInset(this); } - } // namespace lyx