From 0e7b7c21253c8d704a27d341b29bdbf7be6eddc0 Mon Sep 17 00:00:00 2001 From: Angus Leeming Date: Fri, 15 Jun 2001 16:18:43 +0000 Subject: [PATCH] Add an updateParagraph signal, take the opportunity to make a couple of cosmetic name changes to existing signals. updateParagraph signal emitted from BufferView::fitCursor(). Add crude machinery to deal with it in the xforms Paragraph dialog. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2130 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/BufferView_pimpl.C | 8 +- src/ChangeLog | 9 +++ src/frontends/ChangeLog | 9 +++ src/frontends/Dialogs.h | 31 ++++---- src/frontends/controllers/ChangeLog | 4 + src/frontends/controllers/ControlCharacter.C | 2 +- src/frontends/qt2/ChangeLog | 5 ++ src/frontends/qt2/FormCharacter.C | 2 +- src/frontends/qt2/FormParagraph.C | 2 +- src/frontends/xforms/ChangeLog | 10 +++ src/frontends/xforms/FormDocument.C | 2 +- src/frontends/xforms/FormParagraph.C | 83 ++++++++++++++------ src/frontends/xforms/FormParagraph.h | 15 +++- src/lyxfunc.C | 6 +- 14 files changed, 138 insertions(+), 50 deletions(-) diff --git a/src/BufferView_pimpl.C b/src/BufferView_pimpl.C index cf88692a48..1538a7515f 100644 --- a/src/BufferView_pimpl.C +++ b/src/BufferView_pimpl.C @@ -251,7 +251,9 @@ void BufferView::Pimpl::redraw() bool BufferView::Pimpl::fitCursor(LyXText * text) { lyx::Assert(screen_.get()); - + + bv_->owner()->getDialogs()->updateParagraph(); + bool const ret = screen_->FitCursor(text, bv_); if (ret) updateScrollbar(); @@ -297,7 +299,7 @@ int BufferView::Pimpl::resizeCurrentBuffer() selendpos = bv_->text->selection.end.pos(); selection = bv_->text->selection.set(); mark_set = bv_->text->selection.mark(); - the_locking_inset = bv_->text->the_locking_inset; + the_locking_inset = bv_->theLockingInset(); delete bv_->text; bv_->text = new LyXText(bv_); } else { @@ -336,7 +338,7 @@ int BufferView::Pimpl::resizeCurrentBuffer() bv_->text->selection.set(false); } // remake the inset locking - bv_->text->the_locking_inset = the_locking_inset; + bv_->theLockingInset(the_locking_inset); } bv_->text->first = screen_->TopCursorVisible(bv_->text); buffer_->resizeInsets(bv_); diff --git a/src/ChangeLog b/src/ChangeLog index b7a885b7f2..55f9e25353 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2001-06-15 Angus Leeming + + * BufferView_pimpl.C (fitCursor): emit a signal updateParagraph. + (resizeCurrentBuffer): have functions BufferView::theLockingInset() + and BufferView::theLockingInset(Inset*), so should use them and not + access bv_->text->the_locking_inset directly. + + * lyxfunc.C (Dispatch): cosmetic name change of three signals. + 2001-06-02 John Levon * Makefile.am: diff --git a/src/frontends/ChangeLog b/src/frontends/ChangeLog index 72bb5b3ed2..6b209d6840 100644 --- a/src/frontends/ChangeLog +++ b/src/frontends/ChangeLog @@ -1,3 +1,12 @@ +2001-06-15 Angus Leeming + + * Dialogs.h: removed unused signal showCharacter. + Renamed signals showLayoutDocument -> showDocument, + showLayoutParagraph -> showParagraph, + showLayoutCharacter -> showCharacter. + Added signal updateParagraph. + Rearranged signals in some sort of alphabetical order again. + 2001-06-14 Angus Leeming * FileDialog.h: diff --git a/src/frontends/Dialogs.h b/src/frontends/Dialogs.h index 97cd57e610..1e807ba45e 100644 --- a/src/frontends/Dialogs.h +++ b/src/frontends/Dialogs.h @@ -44,6 +44,7 @@ class InsetInfo; class InsetTabular; class InsetCommand; class InsetMinipage; +class LyXParagraph; /** Container of all dialogs and signals a LyXView needs or uses to access them The list of dialog signals isn't comprehensive but should be a good guide @@ -90,6 +91,8 @@ public: SigC::Signal1 showBibtex; /// SigC::Signal0 showCharacter; + /// connected to the character dialog also + SigC::Signal0 setUserFreeFont; /// SigC::Signal1 showCitation; /// @@ -99,6 +102,8 @@ public: /// SigC::Signal0 showCredits; /// + SigC::Signal0 showDocument; + /// SigC::Signal1 showError; /// show the external inset dialog SigC::Signal1 showExternal; @@ -112,21 +117,19 @@ public: SigC::Signal1 createIndex; /// SigC::Signal1 showInfo; - /// - SigC::Signal0 showLayoutDocument; - /// - SigC::Signal0 showLayoutParagraph; - /// - SigC::Signal0 showLayoutCharacter; - /// - SigC::Signal0 setUserFreeFont; - /// show the version control log - SigC::Signal0 showVCLogFile; /// show the LaTeX log or build file SigC::Signal0 showLogFile; /// display the top-level maths panel SigC::Signal0 showMathPanel; /// + SigC::Signal1 showMinipage; + /// + SigC::Signal1 updateMinipage; + /// + SigC::Signal0 showParagraph; + /// + SigC::Signal0 updateParagraph; + /// SigC::Signal0 showPreamble; /// SigC::Signal0 showPreferences; @@ -149,10 +152,6 @@ public: /// SigC::Signal0 showTabularCreate; /// - SigC::Signal1 showMinipage; - /// - SigC::Signal1 updateMinipage; - /// SigC::Signal1 showTOC; /// SigC::Signal1 createTOC; @@ -160,8 +159,8 @@ public: SigC::Signal1 showUrl; /// SigC::Signal1 createUrl; - /// - SigC::Signal0 updateCharacter; // allow update as cursor moves + /// show the version control log + SigC::Signal0 showVCLogFile; //@} private: /// Add a dialog to the vector of dialogs. diff --git a/src/frontends/controllers/ChangeLog b/src/frontends/controllers/ChangeLog index 86ae572e92..105e445ac1 100644 --- a/src/frontends/controllers/ChangeLog +++ b/src/frontends/controllers/ChangeLog @@ -1,3 +1,7 @@ +2001-06-15 Angus Leeming + + * ControlCharacter.C (c-tor): cosmetic name change of signal. + 2001-06-13 Angus Leeming * *.[h]: added // -*- C++ -*- diff --git a/src/frontends/controllers/ControlCharacter.C b/src/frontends/controllers/ControlCharacter.C index 10cce2c8ce..4f14ca4f03 100644 --- a/src/frontends/controllers/ControlCharacter.C +++ b/src/frontends/controllers/ControlCharacter.C @@ -33,7 +33,7 @@ ControlCharacter::ControlCharacter(LyXView & lv, Dialogs & d) : ControlDialog(lv, d), font_(0), toggleall_(false) { - d_.showLayoutCharacter.connect(slot(this, &ControlCharacter::show)); + d_.showCharacter.connect(slot(this, &ControlCharacter::show)); d_.setUserFreeFont.connect(slot(this, &ControlCharacter::apply)); } diff --git a/src/frontends/qt2/ChangeLog b/src/frontends/qt2/ChangeLog index 6d25ff085d..67bff5a584 100644 --- a/src/frontends/qt2/ChangeLog +++ b/src/frontends/qt2/ChangeLog @@ -1,3 +1,8 @@ +2001-06-15 Angus Leeming + + * FormCharacter.C: + * FormParagraph.C (c-tor): cosmetic name change of signal. + 2001-06-14 Angus Leeming * FormCitation.C: diff --git a/src/frontends/qt2/FormCharacter.C b/src/frontends/qt2/FormCharacter.C index c50be78329..fd50819ef5 100644 --- a/src/frontends/qt2/FormCharacter.C +++ b/src/frontends/qt2/FormCharacter.C @@ -29,7 +29,7 @@ FormCharacter::FormCharacter(LyXView *v, Dialogs *d) // let the dialog be shown // This is a permanent connection so we won't bother // storing a copy because we won't be disconnecting. - d->showLayoutCharacter.connect(slot(this, &FormCharacter::show)); + d->showCharacter.connect(slot(this, &FormCharacter::show)); // for LFUN_FREE d->setUserFreeFont.connect(slot(this, &FormCharacter::apply)); } diff --git a/src/frontends/qt2/FormParagraph.C b/src/frontends/qt2/FormParagraph.C index 513514b5b8..451f499a8a 100644 --- a/src/frontends/qt2/FormParagraph.C +++ b/src/frontends/qt2/FormParagraph.C @@ -30,7 +30,7 @@ FormParagraph::FormParagraph(LyXView *v, Dialogs *d) // let the dialog be shown // This is a permanent connection so we won't bother // storing a copy because we won't be disconnecting. - d->showLayoutParagraph.connect(slot(this, &FormParagraph::show)); + d->showParagraph.connect(slot(this, &FormParagraph::show)); } diff --git a/src/frontends/xforms/ChangeLog b/src/frontends/xforms/ChangeLog index 3ee35c5dec..c41894d9c2 100644 --- a/src/frontends/xforms/ChangeLog +++ b/src/frontends/xforms/ChangeLog @@ -1,3 +1,13 @@ +2001-06-15 Angus Leeming + + * FormDocument.C: + * FormParagraph.C (c-tor): cosmetic name change of signal. + + * FormParagraph.[Ch]: added machinery to act on an updateParagraph + signal. It's pretty crude at the moment! Mental note: would be more + elegant if we passed a LyXParagraph & with both the signals rather than + search through the Buffer. + 2001-06-13 Angus Leeming * *.[h]: added // -*- C++ -*- diff --git a/src/frontends/xforms/FormDocument.C b/src/frontends/xforms/FormDocument.C index 99e626cd2f..9242973071 100644 --- a/src/frontends/xforms/FormDocument.C +++ b/src/frontends/xforms/FormDocument.C @@ -49,7 +49,7 @@ FormDocument::FormDocument(LyXView * lv, Dialogs * d) // let the dialog be shown // This is a permanent connection so we won't bother // storing a copy because we won't be disconnecting. - d->showLayoutDocument.connect(slot(this, &FormDocument::show)); + d->showDocument.connect(slot(this, &FormDocument::show)); } diff --git a/src/frontends/xforms/FormParagraph.C b/src/frontends/xforms/FormParagraph.C index ef51c02e27..9173cd4c22 100644 --- a/src/frontends/xforms/FormParagraph.C +++ b/src/frontends/xforms/FormParagraph.C @@ -31,12 +31,52 @@ using SigC::slot; FormParagraph::FormParagraph(LyXView * lv, Dialogs * d) - : FormBaseBD(lv, d, _("Paragraph Layout")) + : FormBaseBD(lv, d, _("Paragraph Layout")), par_(0) { // let the dialog be shown // This is a permanent connection so we won't bother // storing a copy because we won't be disconnecting. - d->showLayoutParagraph.connect(slot(this, &FormParagraph::show)); + d->showParagraph.connect(slot(this, &FormParagraph::show)); +} + + +void FormParagraph::connect() +{ + cp_ = d_->updateParagraph + .connect(slot(this, &FormParagraph::changedParagraph)); + FormBaseBD::connect(); +} + + +void FormParagraph::disconnect() +{ + cp_.disconnect(); + FormBaseBD::disconnect(); +} + + +LyXParagraph const * FormParagraph::getCurrentParagraph() const +{ + LyXText * text = 0; + + if (lv_->view()->theLockingInset()) + text = lv_->view()->theLockingInset()->getLyXText(lv_->view()); + if (!text) + text = lv_->view()->text; + return text->cursor.par(); +} + + +void FormParagraph::changedParagraph() +{ + /// Record the paragraph + LyXParagraph const * const p = getCurrentParagraph(); + if (p == 0 || p == par_) + return; + + // For now don't bother checking if the params are different, + // just activate the Apply button + bc().valid(); } @@ -240,24 +280,21 @@ void FormParagraph::general_update() return; Buffer * buf = lv_->view()->buffer(); - LyXText * text = 0; - if (lv_->view()->theLockingInset()) - text = lv_->view()->theLockingInset()->getLyXText(lv_->view()); - if (!text) - text = lv_->view()->text; + /// Record the paragraph + par_ = getCurrentParagraph(); fl_set_input(general_->input_labelwidth, - text->cursor.par()->GetLabelWidthString().c_str()); + par_->GetLabelWidthString().c_str()); fl_set_button(general_->radio_align_right, 0); fl_set_button(general_->radio_align_left, 0); fl_set_button(general_->radio_align_center, 0); fl_set_button(general_->radio_align_block, 0); - int align = text->cursor.par()->GetAlign(); + int align = par_->GetAlign(); if (align == LYX_ALIGN_LAYOUT) align = textclasslist.Style(buf->params.textclass, - text->cursor.par()->GetLayout()).align; + par_->GetLayout()).align; switch (align) { case LYX_ALIGN_RIGHT: @@ -276,7 +313,7 @@ void FormParagraph::general_update() LyXAlignment alignpos = textclasslist.Style(buf->params.textclass, - text->cursor.par()->GetLayout()).alignpossible; + par_->GetLayout()).alignpossible; setEnabled(general_->radio_align_block, bool(alignpos & LYX_ALIGN_BLOCK)); setEnabled(general_->radio_align_center, bool(alignpos & LYX_ALIGN_CENTER)); @@ -284,19 +321,19 @@ void FormParagraph::general_update() setEnabled(general_->radio_align_right, bool(alignpos & LYX_ALIGN_RIGHT)); fl_set_button(general_->check_lines_top, - text->cursor.par()->params.lineTop()); + par_->params.lineTop()); fl_set_button(general_->check_lines_bottom, - text->cursor.par()->params.lineBottom()); + par_->params.lineBottom()); fl_set_button(general_->check_pagebreaks_top, - text->cursor.par()->params.pagebreakTop()); + par_->params.pagebreakTop()); fl_set_button(general_->check_pagebreaks_bottom, - text->cursor.par()->params.pagebreakBottom()); + par_->params.pagebreakBottom()); fl_set_button(general_->check_noindent, - text->cursor.par()->params.noindent()); + par_->params.noindent()); fl_set_input (general_->input_space_above, ""); - switch (text->cursor.par()->params.spaceTop().kind()) { + switch (par_->params.spaceTop().kind()) { case VSpace::NONE: fl_set_choice (general_->choice_space_above, 1); break; @@ -317,16 +354,16 @@ void FormParagraph::general_update() break; case VSpace::LENGTH: fl_set_choice (general_->choice_space_above, 7); - fl_set_input(general_->input_space_above, text->cursor.par()-> + fl_set_input(general_->input_space_above, par_-> params.spaceTop().length().asString().c_str()); break; } fl_set_button (general_->check_space_above, - text->cursor.par()->params.spaceTop().keep()); + par_->params.spaceTop().keep()); fl_set_input (general_->input_space_below, ""); - switch (text->cursor.par()->params.spaceBottom().kind()) { + switch (par_->params.spaceBottom().kind()) { case VSpace::NONE: fl_set_choice (general_->choice_space_below, 1); break; @@ -347,14 +384,14 @@ void FormParagraph::general_update() break; case VSpace::LENGTH: fl_set_choice (general_->choice_space_below, 7); - fl_set_input(general_->input_space_below, text->cursor.par()-> + fl_set_input(general_->input_space_below, par_-> params.spaceBottom().length().asString().c_str()); break; } fl_set_button(general_->check_space_below, - text->cursor.par()->params.spaceBottom().keep()); + par_->params.spaceBottom().keep()); fl_set_button(general_->check_noindent, - text->cursor.par()->params.noindent()); + par_->params.noindent()); } diff --git a/src/frontends/xforms/FormParagraph.h b/src/frontends/xforms/FormParagraph.h index 279c962246..fffb70b1d4 100644 --- a/src/frontends/xforms/FormParagraph.h +++ b/src/frontends/xforms/FormParagraph.h @@ -21,6 +21,7 @@ #include "FormBaseDeprecated.h" +class LyXParagraph; struct FD_form_tabbed_paragraph; struct FD_form_paragraph_general; struct FD_form_paragraph_extra; @@ -46,7 +47,14 @@ private: virtual void update(); /// Filter the inputs on callback from xforms virtual bool input(FL_OBJECT * ob, long); - + /// Connect signals + virtual void connect(); + /// Disconnect signals + virtual void disconnect(); + /// + void changedParagraph(); + /// + LyXParagraph const * getCurrentParagraph() const; /// virtual FL_FORM * form() const; @@ -67,6 +75,11 @@ private: boost::scoped_ptr general_; /// The ButtonController ButtonController bc_; + /// Changed Paragraph connection. + SigC::Connection cp_; + + /// The current LyXParagraph + LyXParagraph const * par_; }; diff --git a/src/lyxfunc.C b/src/lyxfunc.C index 94a1710e48..1ea444bac6 100644 --- a/src/lyxfunc.C +++ b/src/lyxfunc.C @@ -1152,15 +1152,15 @@ string const LyXFunc::Dispatch(int ac, } case LFUN_LAYOUT_DOCUMENT: - owner->getDialogs()->showLayoutDocument(); + owner->getDialogs()->showDocument(); break; case LFUN_LAYOUT_PARAGRAPH: - owner->getDialogs()->showLayoutParagraph(); + owner->getDialogs()->showParagraph(); break; case LFUN_LAYOUT_CHARACTER: - owner->getDialogs()->showLayoutCharacter(); + owner->getDialogs()->showCharacter(); break; case LFUN_LAYOUT_TABULAR: -- 2.39.2