]> git.lyx.org Git - features.git/commitdiff
Extended tooltips for floats:
authorJürgen Spitzmüller <spitz@lyx.org>
Thu, 10 Apr 2008 09:22:49 +0000 (09:22 +0000)
committerJürgen Spitzmüller <spitz@lyx.org>
Thu, 10 Apr 2008 09:22:49 +0000 (09:22 +0000)
* src/insets/InsetCaption.{cpp,h}:
- new member getCaptionText that returns formatted plain text content
* src/insets/InsetFloat.{cpp,h}:
* src/insets/InsetWrap.{cpp,h}:
- implement tooltip

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@24200 a592a061-630c-0410-9148-cb99ea01b6c8

src/insets/InsetCaption.cpp
src/insets/InsetCaption.h
src/insets/InsetFloat.cpp
src/insets/InsetFloat.h
src/insets/InsetWrap.cpp
src/insets/InsetWrap.h

index 241e147820e8e000f095f2acc8e15a5b627ed53d..5697e5339772cef1d0ead742b50729be5fc4f134 100644 (file)
@@ -270,6 +270,14 @@ int InsetCaption::getOptArg(odocstream & os,
 }
 
 
+int InsetCaption::getCaptionText(odocstream & os,
+                       OutputParams const & runparams) const
+{
+       os << full_label_ << ' ';
+       return InsetText::plaintext(os, runparams);
+}
+
+
 void InsetCaption::updateLabels(ParIterator const & it)
 {
        DocumentClass const & tclass = buffer().params().documentClass();
index f158e4a3577cdd435d416c0d0ce4e22e0fd16e31..4f7aa9a981f27ab5c8a186d375b3fbcd89e46136 100644 (file)
@@ -28,6 +28,8 @@ public:
        int getArgument(odocstream & os, OutputParams const &) const;
        /// return the optional argument(s) only
        int getOptArg(odocstream & os, OutputParams const &) const;
+       /// return the caption text
+       int getCaptionText(odocstream & os, OutputParams const &) const;
 private:
        ///
        void write(std::ostream & os) const;
index 4ba774314e9d861effbfb1e3a4b34ee80f1bd83e..f449e97783e7aec983cd436187364b2fa9603c67 100644 (file)
@@ -127,6 +127,17 @@ InsetFloat::~InsetFloat()
 }
 
 
+docstring InsetFloat::toolTip(BufferView const & bv, int x, int y) const
+{
+       OutputParams rp(&buffer().params().encoding());
+       docstring default_tip = InsetCollapsable::toolTip(bv, x, y);
+       docstring caption_tip = getCaptionText(rp);
+       if (!isOpen() && !caption_tip.empty())
+               return caption_tip + '\n' + default_tip;
+       return default_tip;
+}
+
+
 void InsetFloat::doDispatch(Cursor & cur, FuncRequest & cmd)
 {
        switch (cmd.action) {
@@ -424,6 +435,29 @@ docstring InsetFloat::getCaption(OutputParams const & runparams) const
 }
 
 
+docstring InsetFloat::getCaptionText(OutputParams const & runparams) const
+{
+       if (paragraphs().empty())
+               return docstring();
+
+       ParagraphList::const_iterator pit = paragraphs().begin();
+       for (; pit != paragraphs().end(); ++pit) {
+               InsetList::const_iterator it = pit->insetList().begin();
+               for (; it != pit->insetList().end(); ++it) {
+                       Inset & inset = *it->inset;
+                       if (inset.lyxCode() == CAPTION_CODE) {
+                               odocstringstream ods;
+                               InsetCaption * ins =
+                                       static_cast<InsetCaption *>(it->inset);
+                               ins->getCaptionText(ods, runparams);
+                               return ods.str();
+                       }
+               }
+       }
+       return docstring();
+}
+
+
 void InsetFloat::string2params(string const & in, InsetFloatParams & params)
 {
        params = InsetFloatParams();
index e806d9a70980bb1ad2cfbcd928e6ac5108565ecc..604f5b9b4bc37c49d8263bc76f2f323c3caf932f 100644 (file)
@@ -71,6 +71,8 @@ private:
        ///
        docstring name() const { return name_; }
        ///
+       docstring toolTip(BufferView const & bv, int x, int y) const;
+       ///
        void write(std::ostream & os) const;
        ///
        void read(Lexer & lex);
@@ -105,6 +107,8 @@ private:
        ///
        docstring getCaption(OutputParams const &) const;
        ///
+       docstring getCaptionText(OutputParams const &) const;
+       ///
        InsetFloatParams params_;
        ///
        docstring name_;
index 26b8cd236bbb9db2ec3c031cb6340537f62b8cbc..92dddaf489ae9ce548ab688adaaf615c787f3539 100644 (file)
@@ -12,6 +12,7 @@
 #include <config.h>
 
 #include "InsetWrap.h"
+#include "InsetCaption.h"
 
 #include "Buffer.h"
 #include "BufferParams.h"
@@ -23,6 +24,7 @@
 #include "FloatList.h"
 #include "FuncRequest.h"
 #include "FuncStatus.h"
+#include "InsetList.h"
 #include "LaTeXFeatures.h"
 #include "Lexer.h"
 #include "TextClass.h"
@@ -64,6 +66,17 @@ docstring InsetWrap::name() const
 }
 
 
+docstring InsetWrap::toolTip(BufferView const & bv, int x, int y) const
+{
+       OutputParams rp(&buffer().params().encoding());
+       docstring default_tip = InsetCollapsable::toolTip(bv, x, y);
+       docstring caption_tip = getCaptionText(rp);
+       if (!isOpen() && !caption_tip.empty())
+               return caption_tip + '\n' + default_tip;
+       return default_tip;
+}
+
+
 void InsetWrap::doDispatch(Cursor & cur, FuncRequest & cmd)
 {
        switch (cmd.action) {
@@ -227,6 +240,29 @@ bool InsetWrap::showInsetDialog(BufferView * bv) const
 }
 
 
+docstring InsetWrap::getCaptionText(OutputParams const & runparams) const
+{
+       if (paragraphs().empty())
+               return docstring();
+
+       ParagraphList::const_iterator pit = paragraphs().begin();
+       for (; pit != paragraphs().end(); ++pit) {
+               InsetList::const_iterator it = pit->insetList().begin();
+               for (; it != pit->insetList().end(); ++it) {
+                       Inset & inset = *it->inset;
+                       if (inset.lyxCode() == CAPTION_CODE) {
+                               odocstringstream ods;
+                               InsetCaption * ins =
+                                       static_cast<InsetCaption *>(it->inset);
+                               ins->getCaptionText(ods, runparams);
+                               return ods.str();
+                       }
+               }
+       }
+       return docstring();
+}
+
+
 void InsetWrap::string2params(string const & in, InsetWrapParams & params)
 {
        params = InsetWrapParams();
index f22c2fd086fb1edd975a86099d93d1852ed96fdc..1ad80c570d6452f28c65dbe3f2b6f2664bfb1f39 100644 (file)
@@ -63,6 +63,8 @@ private:
        ///
        InsetCode lyxCode() const { return WRAP_CODE; }
        ///
+       docstring toolTip(BufferView const & bv, int x, int y) const;
+       ///
        int latex(odocstream &, OutputParams const &) const;
        ///
        int plaintext(odocstream &, OutputParams const &) const;
@@ -81,6 +83,8 @@ private:
        ///
        void doDispatch(Cursor & cur, FuncRequest & cmd);
        ///
+       docstring getCaptionText(OutputParams const &) const;
+       ///
        docstring name() const;
        ///
        Inset * clone() const { return new InsetWrap(*this); }