From 153430bbd3dc4fa581990c1a872de47b633275df Mon Sep 17 00:00:00 2001 From: Otmane Lahlou <otmane.lahlou@c-s.fr> Date: Mon, 19 Sep 2011 16:39:19 +0200 Subject: [PATCH] ENH : Add QListWidget class --- .../otbWrapperQtWidgetListViewParameter.cxx | 90 +++++++++++++++++++ .../otbWrapperQtWidgetListViewParameter.h | 69 ++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 Code/Wrappers/QtWidget/otbWrapperQtWidgetListViewParameter.cxx create mode 100644 Code/Wrappers/QtWidget/otbWrapperQtWidgetListViewParameter.h diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetListViewParameter.cxx b/Code/Wrappers/QtWidget/otbWrapperQtWidgetListViewParameter.cxx new file mode 100644 index 0000000000..9196863bdc --- /dev/null +++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetListViewParameter.cxx @@ -0,0 +1,90 @@ +/*========================================================================= + + Program: ORFEO Toolbox + Language: C++ + Date: $Date$ + Version: $Revision$ + + + Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. + See OTBCopyright.txt for details. + + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#include "otbWrapperQtWidgetListViewParameter.h" + +#include "otbWrapperQtWidgetParameterLabel.h" +#include "otbWrapperQtWidgetParameterFactory.h" + +namespace otb +{ +namespace Wrapper +{ + +QtWidgetListViewParameter::QtWidgetListViewParameter(ListViewParameter* param, QtWidgetModel* m) +: QtWidgetParameterBase(m), + m_ListViewParam(param) +{ +} + +QtWidgetListViewParameter::~QtWidgetListViewParameter() +{ +} + +void QtWidgetListViewParameter::DoUpdateGUI() +{ + // remove all the items set before + while(m_ListView->takeItem(0)) + { + m_ListView->removeItemWidget( m_ListView->takeItem(0) ); + } + + for (unsigned int i = 0; i < m_ListViewParam->GetNbChoices(); ++i) + { + // Add listBox items + QString key = QString::fromStdString( m_ListViewParam->GetChoiceKey(i) ); + m_ListView->addItem( key); + } + + // Update the combobox value + unsigned int value = m_ListViewParam->GetValue( ); + m_ListView->setCurrentRow(value); +} + +void QtWidgetListViewParameter::DoCreateWidget() +{ + m_ListView = new QListWidget(); + m_ListView->setToolTip(m_ListViewParam->GetDescription()); + m_ListView->setSelectionMode(QAbstractItemView::MultiSelection); + connect( m_ListView, SIGNAL(itemSelectionChanged()), this, SLOT(SelectedItems()) ); + connect( GetModel(), SIGNAL(UpdateGui()), this, SLOT(UpdateGUI() ) ); + + m_VLayout = new QHBoxLayout; + m_VLayout->setContentsMargins(0, 0, 0, 0); + m_VLayout->addWidget(m_ListView); + + this->setLayout(m_VLayout); +} + +void QtWidgetListViewParameter::SelectedItems() +{ + // Clear previous item selected + m_SelectedItems.clear(); + + // Item changed (check if selected or not) + for (int idx = 0; idx < m_ListView->count(); ++idx) + { + if (m_ListView->item(idx)->isSelected()) + { + m_SelectedItems.push_back(idx); + } + } + m_ListViewParam->SetSelectedItems(m_SelectedItems); +} + +} +} diff --git a/Code/Wrappers/QtWidget/otbWrapperQtWidgetListViewParameter.h b/Code/Wrappers/QtWidget/otbWrapperQtWidgetListViewParameter.h new file mode 100644 index 0000000000..cbf2b2140c --- /dev/null +++ b/Code/Wrappers/QtWidget/otbWrapperQtWidgetListViewParameter.h @@ -0,0 +1,69 @@ +/*========================================================================= + + Program: ORFEO Toolbox + Language: C++ + Date: $Date$ + Version: $Revision$ + + + Copyright (c) Centre National d'Etudes Spatiales. All rights reserved. + See OTBCopyright.txt for details. + + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#ifndef __otbWrapperQtWidgetListViewParameter_h +#define __otbWrapperQtWidgetListViewParameter_h + +#include <QtGui> +#include "otbWrapperListViewParameter.h" +#include "otbWrapperParameterGroup.h" +#include "otbWrapperQtWidgetParameterBase.h" + +namespace otb +{ +namespace Wrapper +{ + +/** \class + * \brief + */ +class QtWidgetListViewParameter : public QtWidgetParameterBase +{ + Q_OBJECT +public: + QtWidgetListViewParameter(ListViewParameter*, QtWidgetModel*); + virtual ~QtWidgetListViewParameter(); + + std::vector<int> GetSelectedItems() + { + return m_SelectedItems; + } + +protected slots: + void SelectedItems(); + +private: + QtWidgetListViewParameter(const QtWidgetListViewParameter&); //purposely not implemented + void operator=(const QtWidgetListViewParameter&); //purposely not implemented + + virtual void DoCreateWidget(); + + virtual void DoUpdateGUI(); + + ListViewParameter::Pointer m_ListViewParam; + + QListWidget* m_ListView; + + QHBoxLayout* m_VLayout; + + std::vector<int> m_SelectedItems; +}; + +} +} + +#endif -- GitLab