QTexinfoDialog.C
QThesaurusDialog.C
TocModel.C
- QTocDialog.C
+ TocWidget.C
+ QToc.C
GuiView.C
QURLDialog.C
QVSpaceDialog.C
BiblioModuleBase.h
BulletsModule.h
ColorCache.h
+ DockView.h
FileDialog_private.h
GuiApplication.h
GuiClipboard.h
QThesaurus.h
QThesaurusDialog.h
QToc.h
- QTocDialog.h
QURLDialog.h
QVSpace.h
QVSpaceDialog.h
QWrapDialog.h
Qt2BC.h
TocModel.h
+ TocWidget.h
UrlView.h
checkedwidgets.h
emptytable.h
QThesaurus.C
QThesaurusDialog.C
QToc.C
- QTocDialog.C
QURLDialog.C
QVSpace.C
QVSpaceDialog.C
QWrapDialog.C
Qt2BC.C
TocModel.C
+ TocWidget.C
UrlView.C
checkedwidgets.C
emptytable.C
ControlToc::ControlToc(Dialog & d)
: ControlCommand(d, "tableofcontents", "toc")
-{}
+{
+}
+
+bool ControlToc::initialiseParams(string const & data)
+{
+ update();
+ return ControlCommand::initialiseParams(data);
+}
void ControlToc::goTo(TocItem const & item)
{
}
+void ControlToc::updateBackend()
+{
+ kernel().buffer().tocBackend().update();
+}
+
+
TocIterator const ControlToc::getCurrentTocItem(
string const & type) const
{
public:
///
ControlToc(Dialog &);
+ ///
+ virtual ~ControlToc() {}
+
+ /// \c ControlCommand inherited method.
+ bool initialiseParams(std::string const & data);
/// Goto this paragraph id
void goTo(TocItem const &);
void outlineIn();
///
void outlineOut();
-
/// Test if outlining operation is possible
bool canOutline(std::string const & type);
+ ///
+ void updateBackend();
+
+public:
+ /// Update the model data if needed.
+ virtual void update() = 0;
};
} // namespace frontend
#include "Qt2BC.h"
#include "ButtonController.h"
+#include "DockView.h"
+#include "GuiView.h"
#include "QAbout.h"
#include "QBibitem.h"
#include "QBibtex.h"
#include "QTabularCreate.h"
#include "QTexinfo.h"
#include "QToc.h"
-#include "QTocDialog.h"
+#include "TocWidget.h"
#include "UrlView.h"
#include "QVSpace.h"
#include "QWrap.h"
#include <boost/assert.hpp>
-
using std::string;
using namespace lyx::frontend;
namespace lyx {
+
bool Dialogs::isValidName(string const & name) const
{
return std::find_if(dialognames, end_dialognames,
} else if (name == "toc") {
QToc * qtoc = new QToc(*dialog);
dialog->setController(qtoc);
- dialog->setView(new QTocDialog(*dialog, qtoc));
+ GuiView & gui_view = static_cast<GuiView &>(lyxview_);
+ dialog->setView(new DockView<QToc, TocWidget>(
+ *dialog, qtoc, &gui_view, _("Toc")));
dialog->bc().bp(new OkCancelPolicy);
} else if (name == "url") {
dialog->setController(new ControlCommand(*dialog, name, name));
--- /dev/null
+// -*- C++ -*-
+/**
+ * \file DockView.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Abdelrazak Younes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#ifndef DOCK_VIEW_H
+#define DOCK_VIEW_H
+
+#include "controllers/dialog.h"
+
+#include <boost/scoped_ptr.hpp>
+
+#include <QDockWidget>
+#include <QMainWindow>
+
+namespace lyx {
+namespace frontend {
+
+/// Dock Widget container for LyX dialogs.
+/// This template class that encapsulates a given Widget inside a
+/// DockWidget and presents a Dialog::View interface
+template<class Controller, class Widget>
+class DockView : public QDockWidget, public Dialog::View
+{
+public:
+ DockView(
+ Dialog & dialog, ///< The (one) parent Dialog class.
+ Controller * form, ///< Associated model/controller
+ QMainWindow * parent, ///< the main window where to dock.
+ docstring const & title ///< Window title (shown in the top title bar).
+ )
+ : QDockWidget(toqstr(title), parent), Dialog::View(dialog, title)
+ {
+ widget_.reset(new Widget(form));
+ setWidget(widget_.get());
+ parent->addDockWidget(Qt::LeftDockWidgetArea, this);
+ }
+
+ /// Dialog::View inherited methods
+ //@{
+ void apply() {}
+ void hide() { QDockWidget::hide(); }
+ void show() { QDockWidget::show(); }
+ bool isVisible() const
+ { return QDockWidget::isVisible(); }
+ void redraw() {}
+ void update()
+ {
+ widget_->update();
+ QDockWidget::update();
+ }
+ //@}
+private:
+ /// The encapsulated widget.
+ boost::scoped_ptr<Widget> widget_;
+};
+
+} // frontend
+} // lyx
+
+#endif // TOC_WIDGET_H
libqt4_la_SOURCES = \
Alert_pimpl.C \
ColorCache.h ColorCache.C \
+ DockView.h \
Dialogs.C \
FileDialog.C \
GuiClipboard.h GuiClipboard.C \
QTabularCreate.C QTabularCreate.h \
QTexinfo.C QTexinfo.h \
QThesaurus.C QThesaurus.h \
- QToc.C QToc.h \
QVSpace.C QVSpace.h \
QWrap.C QWrap.h \
Qt2BC.C Qt2BC.h \
QTexinfoDialog.C QTexinfoDialog.h \
QThesaurusDialog.C QThesaurusDialog.h \
TocModel.C TocModel.h \
- QTocDialog.C QTocDialog.h \
+ TocWidget.C TocWidget.h \
+ QToc.C QToc.h \
QURLDialog.C QURLDialog.h \
QVSpaceDialog.C QVSpaceDialog.h \
QWrapDialog.C QWrapDialog.h \
#include <config.h>
#include "QToc.h"
+
#include "TocModel.h"
#include "Qt2BC.h"
#include "qt_helpers.h"
QToc::QToc(Dialog & parent)
: ControlToc(parent)
{
- update();
}
{
updateType();
updateToc();
+ modelReset();
}
} // namespace frontend
} // namespace lyx
+
+#include "QToc_moc.cpp"
#include "ControlToc.h"
+#include <QObject>
#include <QStandardItemModel>
#include <QStringListModel>
class ControlToc;
class TocModel;
-class QToc : public ControlToc
+class QToc : public QObject, public ControlToc
{
+ Q_OBJECT
public:
QToc(Dialog &);
///
int getTocDepth();
-private:
+Q_SIGNALS:
+ /// Signal that the internal toc_models_ has been reset.
+ void modelReset();
+private:
+ ///
std::vector<TocModel *> toc_models_;
-
+ ///
QStringListModel type_model_;
-
+ ///
int type_;
- int outline_type_;
};
} // namespace frontend
+++ /dev/null
-/**
- * \file QTocDialog.C
- * This file is part of LyX, the document processor.
- * Licence details can be found in the file COPYING.
- *
- * \author John Levon
- * \author Abdelrazak Younes
- *
- * Full author contact details are available in file CREDITS.
- */
-
-#include <config.h>
-
-#include "QTocDialog.h"
-#include "QToc.h"
-#include "Qt2BC.h"
-#include "qt_helpers.h"
-#include "controllers/ControlToc.h"
-
-#include "debug.h"
-
-#include <QTreeWidgetItem>
-#include <QPushButton>
-#include <QCloseEvent>
-#include <QHeaderView>
-
-#include <vector>
-#include <string>
-#include <stack>
-
-using std::endl;
-using std::pair;
-using std::stack;
-using std::vector;
-using std::string;
-
-
-namespace lyx {
-namespace frontend {
-
-QTocDialog::QTocDialog(Dialog & dialog, QToc * form)
- : Dialog::View(dialog, _("Toc")), form_(form), depth_(2)
-{
- setupUi(this);
-
- updateGui();
-
- connect(tocTV->selectionModel(),
- SIGNAL(currentChanged(const QModelIndex &,
- const QModelIndex &)),
- this, SLOT(selectionChanged(const QModelIndex &,
- const QModelIndex &)));
-}
-
-
-QTocDialog::~QTocDialog()
-{
- accept();
-}
-
-
-void QTocDialog::selectionChanged(const QModelIndex & current,
- const QModelIndex & /*previous*/)
-{
- lyxerr[Debug::GUI]
- << "selectionChanged index " << current.row()
- << ", " << current.column()
- << endl;
-
- form_->goTo(current);
-}
-
-
-void QTocDialog::on_closePB_clicked()
-{
- accept();
-}
-
-
-void QTocDialog::on_updatePB_clicked()
-{
- update();
-}
-
-/* FIXME (Ugras 17/11/06):
-I have implemented a getIndexDepth function to get the model indices. In my
-opinion, somebody should derive a new qvariant class for tocModelItem
-which saves the string data and depth information. that will save the
-depth calculation.
-*/
-int QTocDialog::getIndexDepth(QModelIndex const & index, int depth)
-{
- ++depth;
- return (index.parent() == QModelIndex())? depth : getIndexDepth(index.parent(),depth);
-}
-
-
-void QTocDialog::on_depthSL_valueChanged(int depth)
-{
- if (depth == depth_)
- return;
- setTreeDepth(depth);
-}
-
-
-void QTocDialog::setTreeDepth(int depth)
-{
- if(depth!=-1)
- depth_ = depth;
-
- // expanding and then collapsing is probably better,
- // but my qt 4.1.2 doesn't have expandAll()..
- //tocTV->expandAll();
- QModelIndexList indices =
- form_->tocModel()->match(form_->tocModel()->index(0,0),
- Qt::DisplayRole, "*", -1,
- Qt::MatchWildcard|Qt::MatchRecursive);
-
- int size = indices.size();
- for (int i = 0; i < size; i++) {
- QModelIndex index = indices[i];
- if (getIndexDepth(index) < depth_)
- tocTV->expand(index);
- else
- tocTV->collapse(index);
- }
-}
-
-
-void QTocDialog::on_typeCO_activated(int value)
-{
- form_->setTocModel(value);
- tocTV->setModel(form_->tocModel());
- reconnectSelectionModel();
- enableButtons();
- update();
-}
-
-
-void QTocDialog::on_moveUpPB_clicked()
-{
- enableButtons(false);
- QModelIndex index = tocTV->selectionModel()->selectedIndexes()[0];
- form_->goTo(index);
- form_->outlineUp();
- update();
-}
-
-
-void QTocDialog::on_moveDownPB_clicked()
-{
- enableButtons(false);
- QModelIndex index = tocTV->selectionModel()->selectedIndexes()[0];
- form_->goTo(index);
- form_->outlineDown();
- update();
-}
-
-
-void QTocDialog::on_moveInPB_clicked()
-{
- enableButtons(false);
- QModelIndex index = tocTV->selectionModel()->selectedIndexes()[0];
- form_->goTo(index);
- form_->outlineIn();
- update();
-}
-
-
-void QTocDialog::on_moveOutPB_clicked()
-{
- enableButtons(false);
- QModelIndex index = tocTV->selectionModel()->selectedIndexes()[0];
- form_->goTo(index);
- form_->outlineOut();
- update();
-}
-
-
-void QTocDialog::select(QModelIndex const & index)
-{
-// tocTV->setModel(form_->tocModel());
-
- if (!index.isValid()) {
- lyxerr[Debug::GUI]
- << "QTocDialog::select(): QModelIndex is invalid!" << endl;
- return;
- }
-
- tocTV->scrollTo(index);
- tocTV->selectionModel()->select(index, QItemSelectionModel::Select);
-}
-
-
-void QTocDialog::enableButtons(bool enable)
-{
- updatePB->setEnabled(enable);
-
- if (!form_->canOutline())
- enable = false;
-
- moveUpPB->setEnabled(enable);
- moveDownPB->setEnabled(enable);
- moveInPB->setEnabled(enable);
- moveOutPB->setEnabled(enable);
-}
-
-
-void QTocDialog::update()
-{
- form_->updateToc();
- updateGui();
-}
-
-
-void QTocDialog::updateGui()
-{
- QStringListModel * type_model = form_->typeModel();
- if (type_model->stringList().isEmpty()) {
- enableButtons();
- typeCO->setModel(type_model);
- tocTV->setModel(new QStandardItemModel);
- tocTV->setEditTriggers(QAbstractItemView::NoEditTriggers);
- depthSL->setEnabled(false);
- return;
- }
-
- typeCO->setModel(type_model);
- typeCO->setCurrentIndex(form_->getType());
-
- if (form_->tocModel()) {
- tocTV->setModel(form_->tocModel());
- tocTV->setEditTriggers(QAbstractItemView::NoEditTriggers);
- }
- // avoid flickering
- tocTV-> setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
- tocTV->showColumn(0);
- // hide the pointless QHeader for now
- // in the future, new columns may appear
- // like labels, bookmarks, etc...
- // tocTV->header()->hide();
- tocTV->header()->setVisible(false);
- enableButtons();
-
- reconnectSelectionModel();
- depthSL->setEnabled(true);
- depthSL->setMaximum(form_->getTocDepth());
- setTreeDepth();
- select(form_->getCurrentIndex());
-
- lyxerr[Debug::GUI]
- << "form_->tocModel()->rowCount " << form_->tocModel()->rowCount()
- << "\nform_->tocModel()->columnCount " << form_->tocModel()->columnCount()
- << endl;
-// setTitle(form_->guiname())
-}
-
-
-void QTocDialog::reconnectSelectionModel()
-{
- connect(tocTV->selectionModel(),
- SIGNAL(currentChanged(const QModelIndex &,
- const QModelIndex &)),
- this, SLOT(selectionChanged(const QModelIndex &,
- const QModelIndex &)));
-}
-
-
-void QTocDialog::apply()
-{
- // Nothing to do here... for now.
- // Ideas welcome... (Abdel, 17042006)
-}
-
-
-void QTocDialog::hide()
-{
- accept();
-}
-
-
-void QTocDialog::show()
-{
- form_->update();
- QDialog::show();
-}
-
-
-bool QTocDialog::isVisible() const
-{
- return QDialog::isVisible();
-}
-
-
-} // namespace frontend
-} // namespace lyx
-
-#include "QTocDialog_moc.cpp"
+++ /dev/null
-// -*- C++ -*-
-/**
- * \file QTocDialog.h
- * This file is part of LyX, the document processor.
- * Licence details can be found in the file COPYING.
- *
- * \author John Levon
- * \author Abdelrazak Younes
- *
- * Full author contact details are available in file CREDITS.
- */
-
-#ifndef QTOCDIALOG_H
-#define QTOCDIALOG_H
-
-#include "ui/QTocUi.h"
-#include "controllers/ControlToc.h"
-
-#include <QDialog>
-
-class QTreeViewItem;
-
-namespace lyx {
-namespace frontend {
-
-class QToc;
-
-class QTocDialog : public QDialog, public Ui::QTocUi, public Dialog::View {
- Q_OBJECT
-public:
- QTocDialog(Dialog &, QToc * form);
-
- ~QTocDialog();
-
- virtual void apply();
-
- /// Hide the dialog from sight
- void hide();
-
- /// Redraw the dialog (e.g. if the colors have been remapped).
- void redraw() {}
-
- /// Create the dialog if necessary, update it and display it.
- void show();
-
- /// Update the display of the dialog whilst it is still visible.
- void update();
-
- /// Update Gui of the display.
- void updateGui();
-
- /// \return true if the dialog is visible.
- bool isVisible() const;
-
-protected Q_SLOTS:
- ///
- void select(QModelIndex const & index);
- ///
- void selectionChanged(const QModelIndex & current,
- const QModelIndex & previous);
-
- void on_closePB_clicked();
- void on_updatePB_clicked();
- void on_depthSL_valueChanged(int depth);
- void on_typeCO_activated(int value);
- void on_moveUpPB_clicked();
- void on_moveDownPB_clicked();
- void on_moveInPB_clicked();
- void on_moveOutPB_clicked();
-
-protected:
- ///
- void enableButtons(bool enable = true);
- /// Reconnects the selection model change signal when TOC changed.
- void reconnectSelectionModel();
- ///
- int getIndexDepth(QModelIndex const & index, int depth = -1);
- ///
- void setTreeDepth(int depth = -1);
-
-private:
-
- QToc * form_;
-
- /// depth of list shown
- int depth_;
-};
-
-} // namespace frontend
-} // namespace lyx
-
-#endif // QTOCDIALOG_H
--- /dev/null
+/**
+ * \file TocWidget.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author John Levon
+ * \author Abdelrazak Younes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#include <config.h>
+
+#include "TocWidget.h"
+
+#include "QToc.h"
+#include "qt_helpers.h"
+
+#include "debug.h"
+
+#include <QHeaderView>
+#include <QPushButton>
+#include <QTreeWidgetItem>
+
+#include <vector>
+#include <string>
+#include <stack>
+
+using std::endl;
+using std::pair;
+using std::stack;
+using std::vector;
+using std::string;
+
+
+namespace lyx {
+namespace frontend {
+
+
+TocWidget::TocWidget(QToc * form, QMainWindow * parent)
+ : QWidget(parent), form_(form), depth_(0)
+{
+ setupUi(this);
+
+ connect(form, SIGNAL(modelReset()),
+ SLOT(updateGui()));
+
+ // avoid flickering
+ tocTV->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
+
+ tocTV->showColumn(0);
+
+ // hide the pointless QHeader for now
+ // in the future, new columns may appear
+ // like labels, bookmarks, etc...
+ // tocTV->header()->hide();
+ tocTV->header()->setVisible(false);
+}
+
+
+void TocWidget::selectionChanged(const QModelIndex & current,
+ const QModelIndex & /*previous*/)
+{
+ lyxerr[Debug::GUI]
+ << "selectionChanged index " << current.row()
+ << ", " << current.column()
+ << endl;
+
+ form_->goTo(current);
+}
+
+
+void TocWidget::on_updatePB_clicked()
+{
+ form_->updateBackend();
+ form_->update();
+ update();
+}
+
+/* FIXME (Ugras 17/11/06):
+I have implemented a getIndexDepth function to get the model indices. In my
+opinion, somebody should derive a new qvariant class for tocModelItem
+which saves the string data and depth information. that will save the
+depth calculation.
+*/
+int TocWidget::getIndexDepth(QModelIndex const & index, int depth)
+{
+ ++depth;
+ return (index.parent() == QModelIndex())? depth : getIndexDepth(index.parent(),depth);
+}
+
+
+void TocWidget::on_depthSL_valueChanged(int depth)
+{
+ if (depth == depth_)
+ return;
+ setTreeDepth(depth);
+}
+
+
+void TocWidget::setTreeDepth(int depth)
+{
+ depth_ = depth;
+
+ // expanding and then collapsing is probably better,
+ // but my qt 4.1.2 doesn't have expandAll()..
+ //tocTV->expandAll();
+ QModelIndexList indices =
+ form_->tocModel()->match(form_->tocModel()->index(0,0),
+ Qt::DisplayRole, "*", -1,
+ Qt::MatchWildcard|Qt::MatchRecursive);
+
+ int size = indices.size();
+ for (int i = 0; i < size; i++) {
+ QModelIndex index = indices[i];
+ if (getIndexDepth(index) < depth_)
+ tocTV->expand(index);
+ else
+ tocTV->collapse(index);
+ }
+}
+
+
+void TocWidget::on_typeCO_activated(int value)
+{
+ form_->setTocModel(value);
+ updateGui();
+}
+
+
+void TocWidget::on_moveUpPB_clicked()
+{
+ enableButtons(false);
+ QModelIndexList const & list = tocTV->selectionModel()->selectedIndexes();
+ if (!list.isEmpty()) {
+ enableButtons(false);
+ form_->goTo(list[0]);
+ form_->outlineUp();
+ enableButtons(true);
+ }
+}
+
+
+void TocWidget::on_moveDownPB_clicked()
+{
+ enableButtons(false);
+ QModelIndexList const & list = tocTV->selectionModel()->selectedIndexes();
+ if (!list.isEmpty()) {
+ enableButtons(false);
+ form_->goTo(list[0]);
+ form_->outlineDown();
+ enableButtons(true);
+ }
+}
+
+
+void TocWidget::on_moveInPB_clicked()
+{
+ enableButtons(false);
+ QModelIndexList const & list = tocTV->selectionModel()->selectedIndexes();
+ if (!list.isEmpty()) {
+ enableButtons(false);
+ form_->goTo(list[0]);
+ form_->outlineIn();
+ enableButtons(true);
+ }
+}
+
+
+void TocWidget::on_moveOutPB_clicked()
+{
+ QModelIndexList const & list = tocTV->selectionModel()->selectedIndexes();
+ if (!list.isEmpty()) {
+ enableButtons(false);
+ form_->goTo(list[0]);
+ form_->outlineOut();
+ enableButtons(true);
+ }
+}
+
+
+void TocWidget::select(QModelIndex const & index)
+{
+ if (!index.isValid()) {
+ lyxerr[Debug::GUI]
+ << "TocWidget::select(): QModelIndex is invalid!" << endl;
+ return;
+ }
+
+ tocTV->selectionModel()->blockSignals(true);
+ tocTV->scrollTo(index);
+ tocTV->selectionModel()->setCurrentIndex(index,
+ QItemSelectionModel::ClearAndSelect);
+ tocTV->selectionModel()->blockSignals(false);
+}
+
+
+void TocWidget::enableButtons(bool enable)
+{
+ updatePB->setEnabled(enable);
+
+ if (!form_->canOutline())
+ enable = false;
+
+ moveUpPB->setEnabled(enable);
+ moveDownPB->setEnabled(enable);
+ moveInPB->setEnabled(enable);
+ moveOutPB->setEnabled(enable);
+}
+
+
+void TocWidget::update()
+{
+ select(form_->getCurrentIndex());
+ QWidget::update();
+}
+
+
+void TocWidget::updateGui()
+{
+ QStringListModel * type_model = form_->typeModel();
+ if (type_model->stringList().isEmpty()) {
+ enableButtons(false);
+ typeCO->setModel(type_model);
+ tocTV->setModel(new QStandardItemModel);
+ tocTV->setEditTriggers(QAbstractItemView::NoEditTriggers);
+ depthSL->setEnabled(false);
+ return;
+ }
+
+ typeCO->setModel(type_model);
+ typeCO->setCurrentIndex(form_->getType());
+
+ bool buttons_enabled = false;
+ if (form_->tocModel()) {
+ buttons_enabled = form_->tocModel()->rowCount() > 0;
+ tocTV->setModel(form_->tocModel());
+ tocTV->setEditTriggers(QAbstractItemView::NoEditTriggers);
+ }
+
+ enableButtons(buttons_enabled);
+
+ reconnectSelectionModel();
+ depthSL->setEnabled(true);
+ depthSL->setMaximum(form_->getTocDepth());
+ depthSL->setValue(depth_);
+ select(form_->getCurrentIndex());
+
+ lyxerr[Debug::GUI]
+ << "form_->tocModel()->rowCount " << form_->tocModel()->rowCount()
+ << "\nform_->tocModel()->columnCount " << form_->tocModel()->columnCount()
+ << endl;
+}
+
+
+void TocWidget::reconnectSelectionModel()
+{
+ connect(tocTV->selectionModel(),
+ SIGNAL(currentChanged(const QModelIndex &,
+ const QModelIndex &)),
+ this, SLOT(selectionChanged(const QModelIndex &,
+ const QModelIndex &)));
+}
+
+} // namespace frontend
+} // namespace lyx
+
+#include "TocWidget_moc.cpp"
--- /dev/null
+// -*- C++ -*-
+/**
+ * \file TocWidget.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author John Levon
+ * \author Abdelrazak Younes
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#ifndef TOC_WIDGET_H
+#define TOC_WIDGET_H
+
+#include "ui/QTocUi.h"
+
+#include <QWidget>
+
+namespace lyx {
+namespace frontend {
+
+class QToc;
+
+class TocWidget : public QWidget, public Ui::QTocUi {
+ Q_OBJECT
+public:
+ TocWidget(QToc * form, QMainWindow * parent = 0);
+
+ /// Update the display of the dialog whilst it is still visible.
+ void update();
+
+protected Q_SLOTS:
+ /// Update Gui of the display.
+ void updateGui();
+ ///
+ void select(QModelIndex const & index);
+ ///
+ void selectionChanged(const QModelIndex & current,
+ const QModelIndex & previous);
+
+ void on_updatePB_clicked();
+ void on_depthSL_valueChanged(int depth);
+ void on_typeCO_activated(int value);
+ void on_moveUpPB_clicked();
+ void on_moveDownPB_clicked();
+ void on_moveInPB_clicked();
+ void on_moveOutPB_clicked();
+
+protected:
+ ///
+ void enableButtons(bool enable = true);
+ ///
+ int getIndexDepth(QModelIndex const & index, int depth = -1);
+ ///
+ void setTreeDepth(int depth);
+
+private:
+ /// Reconnects the selection model change signal when TOC changed.
+ void reconnectSelectionModel();
+
+ QToc * form_;
+
+ /// depth of list shown
+ int depth_;
+};
+
+} // namespace frontend
+} // namespace lyx
+
+#endif // TOC_WIDGET_H
<ui version="4.0" >
- <author></author>
- <comment></comment>
- <exportmacro></exportmacro>
<class>QTocUi</class>
- <widget class="QDialog" name="QTocUi" >
+ <widget class="QWidget" name="QTocUi" >
+ <property name="windowModality" >
+ <enum>Qt::NonModal</enum>
+ </property>
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
- <width>386</width>
- <height>351</height>
+ <width>257</width>
+ <height>404</height>
</rect>
</property>
<property name="windowTitle" >
<string/>
</property>
- <property name="sizeGripEnabled" >
- <bool>true</bool>
- </property>
<layout class="QGridLayout" >
<property name="margin" >
<number>9</number>
<property name="spacing" >
<number>6</number>
</property>
- <item row="3" column="0" >
+ <item row="3" column="0" colspan="2" >
<layout class="QGridLayout" >
<property name="margin" >
<number>0</number>
<number>6</number>
</property>
<item row="0" column="0" >
- <widget class="QPushButton" name="moveUpPB" >
+ <widget class="QPushButton" name="moveOutPB" >
<property name="text" >
- <string>&Up</string>
+ <string><- P&romote</string>
</property>
</widget>
</item>
- <item row="0" column="1" >
+ <item row="1" column="2" >
<widget class="QPushButton" name="moveDownPB" >
<property name="text" >
<string>&Down</string>
</property>
</widget>
</item>
- <item row="0" column="2" >
- <widget class="QPushButton" name="moveOutPB" >
- <property name="text" >
- <string><- &Promote</string>
- </property>
- </widget>
- </item>
- <item row="0" column="3" >
+ <item row="0" column="1" >
<widget class="QPushButton" name="moveInPB" >
<property name="text" >
<string>&Demote -></string>
</property>
</widget>
</item>
- </layout>
- </item>
- <item row="4" column="0" >
- <layout class="QGridLayout" >
- <property name="margin" >
- <number>0</number>
- </property>
- <property name="spacing" >
- <number>6</number>
- </property>
- <item row="0" column="2" >
- <widget class="QPushButton" name="closePB" >
+ <item row="1" column="0" colspan="2" >
+ <widget class="QPushButton" name="updatePB" >
<property name="text" >
- <string>&Close</string>
- </property>
- <property name="default" >
- <bool>true</bool>
+ <string>&Update</string>
</property>
</widget>
</item>
- <item row="0" column="1" >
- <spacer>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" >
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="0" column="0" >
- <widget class="QPushButton" name="updatePB" >
+ <item row="0" column="2" >
+ <widget class="QPushButton" name="moveUpPB" >
<property name="text" >
- <string>&Update</string>
+ <string>&Up</string>
</property>
</widget>
</item>
</layout>
</item>
- <item row="2" column="0" >
+ <item row="0" column="1" >
+ <widget class="QComboBox" name="typeCO" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2" >
+ <widget class="QTreeView" name="tocTV" >
+ <property name="sizePolicy" >
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>7</vsizetype>
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0" colspan="2" >
<widget class="QSlider" name="depthSL" >
<property name="maximum" >
<number>5</number>
</widget>
</item>
<item row="0" column="0" >
- <layout class="QHBoxLayout" >
- <property name="margin" >
- <number>0</number>
+ <widget class="QLabel" name="typeLA" >
+ <property name="text" >
+ <string>&Type:</string>
</property>
- <property name="spacing" >
- <number>6</number>
+ <property name="buddy" >
+ <cstring>typeCO</cstring>
</property>
- <item>
- <widget class="QLabel" name="typeLA" >
- <property name="text" >
- <string>&Type:</string>
- </property>
- <property name="buddy" >
- <cstring>typeCO</cstring>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QComboBox" name="typeCO" >
- <property name="sizePolicy" >
- <sizepolicy>
- <hsizetype>3</hsizetype>
- <vsizetype>0</vsizetype>
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- <item>
- <spacer>
- <property name="orientation" >
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeType" >
- <enum>QSizePolicy::Expanding</enum>
- </property>
- <property name="sizeHint" >
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </item>
- <item row="1" column="0" >
- <widget class="QTreeView" name="tocTV" />
+ </widget>
</item>
</layout>
</widget>
- <pixmapfunction></pixmapfunction>
<tabstops>
<tabstop>typeCO</tabstop>
<tabstop>tocTV</tabstop>
<tabstop>moveDownPB</tabstop>
<tabstop>moveInPB</tabstop>
<tabstop>moveOutPB</tabstop>
- <tabstop>updatePB</tabstop>
- <tabstop>closePB</tabstop>
</tabstops>
<includes>
<include location="local" >qt_helpers.h</include>