#include "support/debug.h"
#include <QFontMetrics>
-#include <QStackedWidget>
-#include <QTreeWidget>
#include <QHBoxLayout>
#include <QHeaderView>
+#include <QStackedWidget>
+#include <QTreeWidget>
-#include "support/assert.h"
-
-#include <iostream>
+#include "support/lassert.h"
using namespace std;
list_->setRootIsDecorated(false);
list_->setColumnCount(1);
- // Hide the pointless list header
list_->header()->hide();
-// QStringList HeaderLabels;
-// HeaderLabels << QString("Category");
-// list_->setHeaderLabels(HeaderLabels);
- connect(list_, SIGNAL(currentItemChanged (QTreeWidgetItem*, QTreeWidgetItem*)),
+ connect(list_, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)),
this, SLOT(switchPanel(QTreeWidgetItem *, QTreeWidgetItem*)));
connect(list_, SIGNAL(itemClicked (QTreeWidgetItem*, int)),
this, SLOT(itemSelected(QTreeWidgetItem *, int)));
{
QTreeWidgetItem * item = 0;
- LYXERR(Debug::GUI, "addCategory n= " << fromqstr(name) << " parent= ");
+ LYXERR(Debug::GUI, "addCategory n= " << name << " parent= ");
int depth = 1;
QFontMetrics fm(list_->font());
// calculate the real size the current item needs in the listview
- int itemsize = fm.width(name) + 10
- + list_->indentation() * depth;
+ int itemsize = fm.width(name) + 10 + list_->indentation() * depth;
// adjust the listview width to the max. itemsize
if (itemsize > list_->minimumWidth())
list_->setMinimumWidth(itemsize);
}
+void PanelStack::showPanel(QString const & name, bool show)
+{
+ QTreeWidgetItem * item = panel_map_.value(name, 0);
+ LASSERT(item, return);
+
+ item->setHidden(!show);
+}
+
+
void PanelStack::setCurrentPanel(QString const & name)
{
QTreeWidgetItem * item = panel_map_.value(name, 0);
- LASSERT(item, /**/);
+ LASSERT(item, return);
// force on first set
if (list_->currentItem() == item)
}
+bool PanelStack::isCurrentPanel(QString const & name) const
+{
+ QTreeWidgetItem * item = panel_map_.value(name, 0);
+ LASSERT(item, return false);
+
+ return (list_->currentItem() == item);
+}
+
+
void PanelStack::switchPanel(QTreeWidgetItem * item,
QTreeWidgetItem * previous)
{
+ // do nothing when clicked on whitespace (item=NULL)
+ if( !item )
+ return;
+
// if we have a category, expand the tree and go to the
// first item
if (item->childCount() > 0) {
item->setExpanded(true);
- if (previous != item->child(0))
- list_->setCurrentItem(item->child(0));
+ if (previous && previous->parent() != item)
+ switchPanel( item->child(0), previous );
}
- if (QWidget * w = widget_map_.value(item, 0))
+ else if (QWidget * w = widget_map_.value(item, 0)) {
stack_->setCurrentWidget(w);
+ }
}
} // namespace frontend
} // namespace lyx
-#include "PanelStack_moc.cpp"
+#include "moc_PanelStack.cpp"