#include "QToc.h"
#include "qt_helpers.h"
+#include "support/filetools.h"
+#include "support/lstrings.h"
#include "debug.h"
namespace lyx {
-namespace frontend {
+using support::FileName;
+using support::libFileSearch;
+
+namespace frontend {
TocWidget::TocWidget(QToc * form, QWidget * parent)
: QWidget(parent), form_(form), depth_(0)
connect(form, SIGNAL(modelReset()),
SLOT(updateGui()));
-
+
+ FileName icon_path = libFileSearch("images", "promote.xpm");
+ moveOutTB->setIcon(QIcon(toqstr(icon_path.absFilename())));
+ icon_path = libFileSearch("images", "demote.xpm");
+ moveInTB->setIcon(QIcon(toqstr(icon_path.absFilename())));
+ icon_path = libFileSearch("images", "up.xpm");
+ moveUpTB->setIcon(QIcon(toqstr(icon_path.absFilename())));
+ icon_path = libFileSearch("images", "down.xpm");
+ moveDownTB->setIcon(QIcon(toqstr(icon_path.absFilename())));
+ icon_path = libFileSearch("images", "reload.xpm");
+ updateTB->setIcon(QIcon(toqstr(icon_path.absFilename())));
+
// avoid flickering
tocTV->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
// like labels, bookmarks, etc...
// tocTV->header()->hide();
tocTV->header()->setVisible(false);
+
+ // Only one item selected at a time.
+ tocTV->setSelectionMode(QAbstractItemView::SingleSelection);
}
}
-void TocWidget::on_updatePB_clicked()
+void TocWidget::on_updateTB_clicked()
{
+ // The backend update can take some time so we disable
+ // the controls while waiting.
+ enableControls(false);
form_->updateBackend();
- form_->update();
- update();
}
/* FIXME (Ugras 17/11/06):
int TocWidget::getIndexDepth(QModelIndex const & index, int depth)
{
++depth;
- return (index.parent() == QModelIndex())? depth : getIndexDepth(index.parent(),depth);
+ return (index.parent() ==
+ QModelIndex())? depth : getIndexDepth(index.parent(),depth);
}
}
}
-
-void TocWidget::on_typeCO_activated(int value)
+void TocWidget::on_typeCO_currentIndexChanged(int value)
{
setTocModel(value);
}
-void TocWidget::on_moveUpPB_clicked()
+void TocWidget::on_moveUpTB_clicked()
{
enableControls(false);
QModelIndexList const & list = tocTV->selectionModel()->selectedIndexes();
}
-void TocWidget::on_moveDownPB_clicked()
+void TocWidget::on_moveDownTB_clicked()
{
enableControls(false);
QModelIndexList const & list = tocTV->selectionModel()->selectedIndexes();
}
-void TocWidget::on_moveInPB_clicked()
+void TocWidget::on_moveInTB_clicked()
{
enableControls(false);
QModelIndexList const & list = tocTV->selectionModel()->selectedIndexes();
}
-void TocWidget::on_moveOutPB_clicked()
+void TocWidget::on_moveOutTB_clicked()
{
QModelIndexList const & list = tocTV->selectionModel()->selectedIndexes();
if (!list.isEmpty()) {
return;
}
- tocTV->selectionModel()->blockSignals(true);
- tocTV->scrollTo(index);
- tocTV->selectionModel()->setCurrentIndex(index,
- QItemSelectionModel::ClearAndSelect);
- tocTV->selectionModel()->blockSignals(false);
+ disconnectSelectionModel();
+ tocTV->setCurrentIndex(index);
+ tocTV->scrollTo(index);
+ reconnectSelectionModel();
}
void TocWidget::enableControls(bool enable)
{
- updatePB->setEnabled(enable);
+ updateTB->setEnabled(enable);
if (!form_->canOutline(typeCO->currentIndex()))
enable = false;
- moveUpPB->setEnabled(enable);
- moveDownPB->setEnabled(enable);
- moveInPB->setEnabled(enable);
- moveOutPB->setEnabled(enable);
+ moveUpTB->setEnabled(enable);
+ moveDownTB->setEnabled(enable);
+ moveInTB->setEnabled(enable);
+ moveOutTB->setEnabled(enable);
depthSL->setEnabled(enable);
}
void TocWidget::updateGui()
{
- QStringListModel * type_model = form_->typeModel();
- if (type_model->stringList().isEmpty()) {
+ vector<docstring> const & type_names = form_->typeNames();
+ if (type_names.empty()) {
enableControls(false);
- typeCO->setModel(type_model);
+ typeCO->clear();
tocTV->setModel(new QStandardItemModel);
tocTV->setEditTriggers(QAbstractItemView::NoEditTriggers);
return;
}
QString current_text = typeCO->currentText();
- typeCO->setModel(type_model);
- int const current_type = typeCO->findText(current_text);
+ lyxerr << "current_text " << fromqstr(current_text) << endl;
+ typeCO->blockSignals(true);
+ typeCO->clear();
+ int current_type = -1;
+ for (size_t i = 0; i != type_names.size(); ++i) {
+ QString item = toqstr(type_names[i]);
+ typeCO->addItem(item);
+ if (item == current_text)
+ current_type = i;
+ }
if (current_type != -1)
typeCO->setCurrentIndex(current_type);
else
typeCO->setCurrentIndex(form_->selectedType());
+ typeCO->blockSignals(false);
setTocModel(typeCO->currentIndex());
}
{
connect(tocTV->selectionModel(),
SIGNAL(currentChanged(const QModelIndex &,
- const QModelIndex &)),
- this, SLOT(selectionChanged(const QModelIndex &,
+ const QModelIndex &)),
+ this,
+ SLOT(selectionChanged(const QModelIndex &,
+ const QModelIndex &)));
+}
+
+void TocWidget::disconnectSelectionModel()
+{
+ disconnect(tocTV->selectionModel(),
+ SIGNAL(currentChanged(const QModelIndex &,
+ const QModelIndex &)),
+ this,
+ SLOT(selectionChanged(const QModelIndex &,
const QModelIndex &)));
}