mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
113 lines
4.1 KiB
C++
113 lines
4.1 KiB
C++
/*=========================================================================
|
|
|
|
Program: ParaView
|
|
Module: pqCheckableHeaderView.h
|
|
|
|
Copyright (c) 2005-2008 Sandia Corporation, Kitware Inc.
|
|
All rights reserved.
|
|
|
|
ParaView is a free software; you can redistribute it and/or modify it
|
|
under the terms of the ParaView license version 1.2.
|
|
|
|
See License_v1.2.txt for the full ParaView license.
|
|
A copy of this license can be obtained by contacting
|
|
Kitware Inc.
|
|
28 Corporate Drive
|
|
Clifton Park, NY 12065
|
|
USA
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR
|
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
=========================================================================*/
|
|
|
|
/// \file pqCheckableHeaderView.h
|
|
/// \date 03/04/2014
|
|
|
|
#ifndef _pqCheckableHeaderView_h
|
|
#define _pqCheckableHeaderView_h
|
|
|
|
|
|
#include "pqWidgetsModule.h"
|
|
#include <QHeaderView>
|
|
|
|
/// Pimpl class that handles drawing of all the section header checkboxes and
|
|
/// stores states of the checkboxes
|
|
class pqCheckableHeaderViewInternal;
|
|
|
|
/// \class pqCheckableHeaderView
|
|
/// \brief
|
|
/// A convenience QHeaderView painted with a QCheckBox.
|
|
/// This allows for providing a global checkbox when the model items are
|
|
/// user checkable.
|
|
/// The checkbox is painted per section with one of the three states
|
|
/// (checked, partially checked, unchecked) depending on the check state
|
|
/// of individual items.
|
|
/// Currently used in pqTreeView.
|
|
class PQWIDGETS_EXPORT pqCheckableHeaderView : public QHeaderView
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
/// \brief
|
|
/// Constructs the pqCheckableHeaderView class.
|
|
/// \param parent The parent object
|
|
pqCheckableHeaderView(Qt::Orientation orientation, QWidget *parent=0);
|
|
virtual ~pqCheckableHeaderView();
|
|
|
|
/// \brief
|
|
/// Get the checkstate of the header checkbox for the \em section.
|
|
/// \param section The section to get the checkstate of
|
|
QVariant getCheckState(int section);
|
|
|
|
signals:
|
|
/// \brief
|
|
/// This signal is emitted whenever the state of the \em section header
|
|
/// checkbox changes. The new state can be obtained using the \em
|
|
/// getCheckState method.
|
|
/// \param section The section whose checkstate changed
|
|
/// \sa getCheckState
|
|
void checkStateChanged(int section) const;
|
|
|
|
protected:
|
|
/// \brief
|
|
/// Paint the header section.
|
|
/// Depending on whether the top-level items in the model are checkable
|
|
/// a checkbox is painted left-aligned on the header section.
|
|
/// The checkbox is tristate and the state is decided based on the
|
|
/// initial checkstates of model items.
|
|
/// Reimplemented form QHeaderView::paintSection()
|
|
/// \sa QHeaderView::paintSection
|
|
virtual void paintSection(QPainter *painter, const QRect &rect,
|
|
int logicalIndex) const;
|
|
|
|
/// \brief
|
|
/// Handle mouse press event on the header.
|
|
/// Checks whether the mouse press was in the checkbox.
|
|
/// Clicking on the checkbox triggers the \em checkStateChanged signal.
|
|
/// Reimplemented from QWidget::mousePressEvent()
|
|
/// \sa QHeaderView::mousePressEvent
|
|
void mousePressEvent(QMouseEvent *event);
|
|
|
|
/// \brief
|
|
/// Update the checkstate of all checkable items in the model based
|
|
/// on the checkstate of the header checkbox.
|
|
/// This will undo any individual item checkstate modifications.
|
|
/// \param section The section whose model checkstate is updated.
|
|
void updateModelCheckState(int section);
|
|
|
|
private:
|
|
pqCheckableHeaderViewInternal *Internal;
|
|
};
|
|
|
|
#endif //_pqCheckableHeaderView_h
|