]> git.lyx.org Git - lyx.git/commitdiff
Added support for changing label on collapsed InsetERT.
authorJürgen Vigna <jug@sad.it>
Mon, 23 Jul 2001 12:47:25 +0000 (12:47 +0000)
committerJürgen Vigna <jug@sad.it>
Mon, 23 Jul 2001 12:47:25 +0000 (12:47 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2305 a592a061-630c-0410-9148-cb99ea01b6c8

po/POTFILES.in
src/insets/ChangeLog
src/insets/insetcollapsable.C
src/insets/insetcollapsable.h
src/insets/insetert.C

index cb3dd3f6976675046accfee50917129c92d86311..1542be87a71873953ddf9b40b18f12fc4fe98c87 100644 (file)
@@ -10,8 +10,8 @@ src/CutAndPaste.C
 src/debug.C
 src/exporter.C
 src/ext_l10n.h
-src/figureForm.C
 src/figure_form.C
+src/figureForm.C
 src/FontLoader.C
 src/frontends/controllers/biblio.C
 src/frontends/controllers/ButtonController.h
@@ -90,67 +90,67 @@ src/frontends/qt2/paragraphdlgimpl.C
 src/frontends/qt2/tabularcreatedlgimpl.C
 src/frontends/xforms/combox.C
 src/frontends/xforms/FileDialog.C
-src/frontends/xforms/FormAboutlyx.C
 src/frontends/xforms/form_aboutlyx.C
-src/frontends/xforms/FormBibitem.C
+src/frontends/xforms/FormAboutlyx.C
 src/frontends/xforms/form_bibitem.C
-src/frontends/xforms/FormBibtex.C
+src/frontends/xforms/FormBibitem.C
 src/frontends/xforms/form_bibtex.C
+src/frontends/xforms/FormBibtex.C
 src/frontends/xforms/form_browser.C
-src/frontends/xforms/FormCharacter.C
 src/frontends/xforms/form_character.C
-src/frontends/xforms/FormCitation.C
+src/frontends/xforms/FormCharacter.C
 src/frontends/xforms/form_citation.C
-src/frontends/xforms/FormDocument.C
+src/frontends/xforms/FormCitation.C
 src/frontends/xforms/form_document.C
-src/frontends/xforms/FormError.C
+src/frontends/xforms/FormDocument.C
 src/frontends/xforms/form_error.C
-src/frontends/xforms/FormExternal.C
+src/frontends/xforms/FormError.C
 src/frontends/xforms/form_external.C
-src/frontends/xforms/FormFiledialog.C
+src/frontends/xforms/FormExternal.C
 src/frontends/xforms/form_filedialog.C
-src/frontends/xforms/FormGraphics.C
+src/frontends/xforms/FormFiledialog.C
 src/frontends/xforms/form_graphics.C
-src/frontends/xforms/FormInclude.C
+src/frontends/xforms/FormGraphics.C
 src/frontends/xforms/form_include.C
-src/frontends/xforms/FormIndex.C
+src/frontends/xforms/FormInclude.C
 src/frontends/xforms/form_index.C
+src/frontends/xforms/FormIndex.C
 src/frontends/xforms/FormLog.C
 src/frontends/xforms/FormMathsBitmap.C
-src/frontends/xforms/FormMathsDeco.C
 src/frontends/xforms/form_maths_deco.C
-src/frontends/xforms/FormMathsDelim.C
+src/frontends/xforms/FormMathsDeco.C
 src/frontends/xforms/form_maths_delim.C
-src/frontends/xforms/FormMathsMatrix.C
+src/frontends/xforms/FormMathsDelim.C
 src/frontends/xforms/form_maths_matrix.C
-src/frontends/xforms/FormMathsPanel.C
+src/frontends/xforms/FormMathsMatrix.C
 src/frontends/xforms/form_maths_panel.C
-src/frontends/xforms/FormMathsSpace.C
+src/frontends/xforms/FormMathsPanel.C
 src/frontends/xforms/form_maths_space.C
-src/frontends/xforms/FormMinipage.C
+src/frontends/xforms/FormMathsSpace.C
 src/frontends/xforms/form_minipage.C
-src/frontends/xforms/FormParagraph.C
+src/frontends/xforms/FormMinipage.C
 src/frontends/xforms/form_paragraph.C
-src/frontends/xforms/FormPreamble.C
+src/frontends/xforms/FormParagraph.C
 src/frontends/xforms/form_preamble.C
-src/frontends/xforms/FormPreferences.C
+src/frontends/xforms/FormPreamble.C
 src/frontends/xforms/form_preferences.C
-src/frontends/xforms/FormPrint.C
+src/frontends/xforms/FormPreferences.C
 src/frontends/xforms/form_print.C
-src/frontends/xforms/FormRef.C
+src/frontends/xforms/FormPrint.C
 src/frontends/xforms/form_ref.C
-src/frontends/xforms/FormSearch.C
+src/frontends/xforms/FormRef.C
 src/frontends/xforms/form_search.C
-src/frontends/xforms/FormSpellchecker.C
+src/frontends/xforms/FormSearch.C
 src/frontends/xforms/form_spellchecker.C
-src/frontends/xforms/FormTabular.C
+src/frontends/xforms/FormSpellchecker.C
 src/frontends/xforms/form_tabular.C
-src/frontends/xforms/FormTabularCreate.C
+src/frontends/xforms/FormTabular.C
 src/frontends/xforms/form_tabular_create.C
-src/frontends/xforms/FormToc.C
+src/frontends/xforms/FormTabularCreate.C
 src/frontends/xforms/form_toc.C
-src/frontends/xforms/FormUrl.C
+src/frontends/xforms/FormToc.C
 src/frontends/xforms/form_url.C
+src/frontends/xforms/FormUrl.C
 src/frontends/xforms/FormVCLog.C
 src/frontends/xforms/input_validators.C
 src/frontends/xforms/Menubar_pimpl.C
@@ -171,6 +171,7 @@ src/insets/insetfoot.C
 src/insets/insetgraphics.C
 src/insets/insetinclude.C
 src/insets/insetindex.C
+src/insets/insetinfo.C
 src/insets/insetlabel.C
 src/insets/insetlist.C
 src/insets/insetmarginal.C
@@ -206,7 +207,6 @@ src/MenuBackend.C
 src/minibuffer.C
 src/paragraph.C
 src/print_form.C
-src/sp_form.C
 src/support/filetools.C
 src/support/getUserName.C
 src/support/path.C
index 7a9ce5ee076a8a823c524cc7c7a86e0620caa41d..bee44e9cd4ac44c1ff564bc0528f8478c761d7a3 100644 (file)
@@ -1,3 +1,22 @@
+2001-07-23  Juergen Vigna  <jug@sad.it>
+
+       * insetert.C (InsetERT): use setLabel with "true" flag.
+
+       * insetcollapsable.C: modified various functions to set the draw_label
+       string right in any condition.
+       (setLabel): added a bool parameter to set change_label_with_text.
+
+       * insetcollapsable.h: added draw_label string which is set to the
+       actual drawn label-string, while label is the original static label
+       of this collapsable inset. Added bool change_label_with_text to set
+       if we want that the label changes to the start of the InsetText's
+       text when collabpsed. You can set this flag with the setLabel funciton.
+       Added bool inlined for inlined collapsable insets, but not handled
+       yet.
+
+       * insetcollapsable.C (get_new_label): added should get a new label
+       from the InsetText beginning (for now 10 chars).
+
 2001-07-21  Yves Bastide  <stid@libd-pc11.univ-bpclermont.fr>
 
        * insetquotes.C (latex): fix the handling of french double quotes
index 5d6739fbcf57fda2ed5940257b093a3b7d0135f5..9e573c273ad8782151ab96a998cc244e6039a121 100644 (file)
@@ -34,9 +34,11 @@ using std::max;
 
 InsetCollapsable::InsetCollapsable(bool collapsed)
        : UpdatableInset(), collapsed_(collapsed), 
-       button_length(0), button_top_y(0), button_bottom_y(0),
-       label("Label"), autocollapse(true), 
-       widthCollapsed(0), oldWidth(0), need_update(FULL)
+         button_length(0), button_top_y(0), button_bottom_y(0),
+         label("Label"), draw_label(label), autocollapse(true), 
+         widthCollapsed(0), oldWidth(0), need_update(FULL),
+         inlined(false), change_label_with_text(false)
+         
 
 {
        inset.setOwner(this);
@@ -80,6 +82,11 @@ void InsetCollapsable::read(Buffer const * buf, LyXLex & lex)
                }
        }
        inset.read(buf, lex);
+       if (collapsed_ && change_label_with_text) {
+               draw_label = get_new_label();
+       } else {
+               draw_label = label;
+       }
 }
 
 
@@ -88,7 +95,7 @@ int InsetCollapsable::ascent_collapsed(Painter & pain, LyXFont const &) const
        int width = 0;
        int ascent = 0;
        int descent = 0;
-       pain.buttonText(0, 0, label, labelfont, false, 
+       pain.buttonText(0, 0, draw_label, labelfont, false, 
                        width, ascent, descent);
        return ascent;
 }
@@ -99,7 +106,7 @@ int InsetCollapsable::descent_collapsed(Painter & pain, LyXFont const &) const
        int width = 0;
        int ascent = 0;
        int descent = 0;
-       pain.buttonText(0, 0, label, labelfont, false, 
+       pain.buttonText(0, 0, draw_label, labelfont, false, 
                        width, ascent, descent);
        return descent;
 }
@@ -110,7 +117,7 @@ int InsetCollapsable::width_collapsed(Painter & pain, LyXFont const &) const
        int width;
        int ascent;
        int descent;
-       pain.buttonText(TEXT_TO_INSET_OFFSET, 0, label, labelfont, false,
+       pain.buttonText(TEXT_TO_INSET_OFFSET, 0, draw_label, labelfont, false,
                        width, ascent, descent);
        return width + (2*TEXT_TO_INSET_OFFSET);
 }
@@ -136,8 +143,7 @@ int InsetCollapsable::descent(BufferView * bv, LyXFont const & font) const
 
 int InsetCollapsable::width(BufferView * bv, LyXFont const & font) const
 {
-       if (!widthCollapsed)
-               widthCollapsed = width_collapsed(bv->painter(), font);
+       widthCollapsed = width_collapsed(bv->painter(), font);
 
        if (collapsed_) 
                return widthCollapsed;
@@ -148,17 +154,17 @@ int InsetCollapsable::width(BufferView * bv, LyXFont const & font) const
 
 
 void InsetCollapsable::draw_collapsed(Painter & pain, LyXFont const &,
-                                     int baseline, float & x) const
+                                      int baseline, float & x) const
 {
        int width = 0;
        pain.buttonText(int(x) + TEXT_TO_INSET_OFFSET,
-                       baseline, label, labelfont, true, width);
+                       baseline, draw_label, labelfont, true, width);
        x += width + TEXT_TO_INSET_OFFSET;
 }
 
 
 void InsetCollapsable::draw(BufferView * bv, LyXFont const & f, 
-                           int baseline, float & x, bool cleared) const
+                            int baseline, float & x, bool cleared) const
 {
        if (nodraw())
                return;
@@ -234,6 +240,7 @@ void InsetCollapsable::edit(BufferView * bv, int xp, int yp,
        UpdatableInset::edit(bv, xp, yp, button);
 
        if (collapsed_) {
+               draw_label = label;
                collapsed_ = false;
                if (!bv->lockInset(this))
                        return;
@@ -257,6 +264,7 @@ void InsetCollapsable::edit(BufferView * bv, bool front)
        UpdatableInset::edit(bv, front);
 
        if (collapsed_) {
+               draw_label = label;
                collapsed_ = false;
                if (!bv->lockInset(this))
                        return;
@@ -281,6 +289,11 @@ Inset::EDITABLE InsetCollapsable::editable() const
 void InsetCollapsable::insetUnlock(BufferView * bv)
 {
        if (autocollapse) {
+               if (change_label_with_text) {
+                       draw_label = get_new_label();
+               } else {
+                       draw_label = label;
+               }
                collapsed_ = true;
        }
        inset.insetUnlock(bv);
@@ -310,10 +323,16 @@ void InsetCollapsable::insetButtonRelease(BufferView * bv,
        if ((x >= 0)  && (x < button_length) &&
            (y >= button_top_y) &&  (y <= button_bottom_y)) {
                if (collapsed_) {
+                       draw_label = label;
                        collapsed_ = false;
                        inset.insetButtonRelease(bv, 0, 0, button);
                        bv->updateInset(this, false);
                } else {
+                       if (change_label_with_text) {
+                               draw_label = get_new_label();
+                       } else {
+                               draw_label = label;
+                       }
                        collapsed_ = true;
                        bv->unlockInset(this);
                        bv->updateInset(this, false);
@@ -585,5 +604,42 @@ void InsetCollapsable::open(BufferView * bv, bool flag)
        if (flag == !collapsed_)
                return;
        collapsed_ = !flag;
+       if (collapsed_ && change_label_with_text) {
+               draw_label = get_new_label();
+       } else {
+               draw_label = label;
+       }
        bv->updateInset(this, false);
 }
+
+
+void InsetCollapsable::setLabel(string const & l, bool flag)
+{
+       label = l;
+       change_label_with_text = flag;
+       if (collapsed_ && change_label_with_text) {
+               draw_label = get_new_label();
+       } else {
+               draw_label = label;
+       }
+}
+
+
+string InsetCollapsable::get_new_label() const
+{
+       string la;
+
+       int n = std::min(10, inset.paragraph()->size());
+       int i,j;
+       for(i=0,j=0; i < n && j < inset.paragraph()->size(); ++j) {
+               if (inset.paragraph()->isInset(j))
+                       continue;
+               la += inset.paragraph()->getChar(j);
+               ++i;
+       }
+       if ((i > 0) && (j < inset.paragraph()->size()))
+               la += "...";
+       if (la.empty())
+               la = label;
+       return la;
+}
index 05dfb96f48d7ba2018995de909d79b5b7dcf8eac..66db8f4a84c7429dc4d89132e8fd8f84d3d62c7c 100644 (file)
@@ -127,7 +127,7 @@ public:
        void setFont(BufferView *, LyXFont const &, bool toggleall = false,
                  bool selectall = false);
        ///
-       void setLabel(string const & l) { label = l; }
+       void setLabel(string const & l, bool flag = false);
        ///
        void setLabelFont(LyXFont & f) { labelfont = f; }
        ///
@@ -207,6 +207,9 @@ public:
        ///
        InsetText inset;
 protected:
+       ///
+       string get_new_label() const;
+
        ///
        mutable int button_length;
        ///
@@ -217,6 +220,8 @@ private:
        ///
        string label;
        ///
+       mutable string draw_label;
+       ///
        bool autocollapse;
        ///
        mutable int widthCollapsed;
@@ -226,6 +231,10 @@ private:
        mutable int topx;
        mutable int topbaseline;
        mutable UpdateCodes need_update;
+       ///
+       bool inlined;
+       ///
+       bool change_label_with_text;
 };
 
 #endif
index 14bdf5e3f7a9a370b953df4e3e81e6056ca76834..4c76ca4c5f61ebb9ee0e81ab4b012dc7948ec299 100644 (file)
@@ -25,7 +25,7 @@ using std::ostream;
 
 InsetERT::InsetERT() : InsetCollapsable()
 {
-       setLabel(_("666"));
+       setLabel(_("666"), true);
        //LyXFont font(LyXFont::ALL_SANE);
        //font.setLatex (LyXFont::ON);
        labelfont = LyXFont(LyXFont::ALL_SANE);