From 11145e20eb0f4d34ab9e5fc0379e21242e0af3da Mon Sep 17 00:00:00 2001 From: Martin Vermeer Date: Fri, 21 Apr 2006 22:51:39 +0000 Subject: [PATCH] Grey out outlining movement buttons for non-ToC * qt2/QTocDialog.[Ch]: Add enableButtons * qt2/QToc.[Ch] (QToc::build_dialog): (QToc::updateType): (QToc::updateToc): (QToc::updateToc): (QToc::set_depth): Change update logic git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@13709 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/frontends/qt2/QToc.C | 20 ++++++++++++++++---- src/frontends/qt2/QToc.h | 6 ++++++ src/frontends/qt2/QTocDialog.C | 14 ++++++++++++++ src/frontends/qt2/QTocDialog.h | 2 ++ 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/frontends/qt2/QToc.C b/src/frontends/qt2/QToc.C index e2e2f91205..d8898e2c9d 100644 --- a/src/frontends/qt2/QToc.C +++ b/src/frontends/qt2/QToc.C @@ -48,6 +48,8 @@ void QToc::build_dialog() // Manage the cancel/close button bcview().setCancel(dialog_->closePB); + type_ = toc::getType(controller().params().getCmdName()); + dialog_->enableButtons(); } @@ -67,6 +69,8 @@ void QToc::updateType() setTitle(guiname); } } + type_ = type; + dialog_->enableButtons(); } @@ -83,6 +87,8 @@ void QToc::updateToc(int newdepth) string type; if (!choice.empty()) type = choice[dialog_->typeCO->currentItem()]; + type_ = type; + dialog_->enableButtons(); toc::Toc const & contents = controller().getContents(type); @@ -181,6 +187,12 @@ void QToc::updateToc(int newdepth) } +bool QToc::canOutline() +{ + return controller().canOutline(type_); +} + + void QToc::select(string const & text) { toc::Toc::const_iterator iter = toclist.begin(); @@ -212,28 +224,28 @@ void QToc::set_depth(int depth) void QToc::moveup() { controller().outline(toc::UP); - update_contents(); + updateToc(depth_); } void QToc::movedn() { controller().outline(toc::DOWN); - update_contents(); + updateToc(depth_); } void QToc::movein() { controller().outline(toc::IN); - update_contents(); + updateToc(depth_); } void QToc::moveout() { controller().outline(toc::OUT); - update_contents(); + updateToc(depth_); } diff --git a/src/frontends/qt2/QToc.h b/src/frontends/qt2/QToc.h index fe1c3a9100..769bc9a766 100644 --- a/src/frontends/qt2/QToc.h +++ b/src/frontends/qt2/QToc.h @@ -33,6 +33,9 @@ private: /// update the listview void updateToc(int newdepth); + /// + bool canOutline(); + /// update the float types void updateType(); @@ -67,6 +70,9 @@ private: /// Store selected item's string std::string text_; + + /// Store ToC list type + std::string type_; }; } // namespace frontend diff --git a/src/frontends/qt2/QTocDialog.C b/src/frontends/qt2/QTocDialog.C index d125e1bf94..f276596f0e 100644 --- a/src/frontends/qt2/QTocDialog.C +++ b/src/frontends/qt2/QTocDialog.C @@ -63,6 +63,20 @@ void QTocDialog::select_adaptor(QListViewItem * item) } +void QTocDialog::enableButtons(bool enable) +{ + updatePB->setEnabled(enable); + + if (!form_->canOutline()) + enable = false; + + moveupPB->setEnabled(enable); + movednPB->setEnabled(enable); + moveinPB->setEnabled(enable); + moveoutPB->setEnabled(enable); +} + + void QTocDialog::update_adaptor() { form_->update(); diff --git a/src/frontends/qt2/QTocDialog.h b/src/frontends/qt2/QTocDialog.h index 875a17db0b..d49fbb37c6 100644 --- a/src/frontends/qt2/QTocDialog.h +++ b/src/frontends/qt2/QTocDialog.h @@ -24,6 +24,8 @@ class QTocDialog : public QTocDialogBase { public: QTocDialog(QToc * form); ~QTocDialog(); + /// + void enableButtons(bool enable = true); public slots: void activate_adaptor(int); void depth_adaptor(int); -- 2.39.2