Optika GUI Toolik  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Optika_treeview.hpp
Go to the documentation of this file.
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Optika: A Tool For Developing Parameter Obtaining GUIs
5 // Copyright (2009) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, with Sandia Corporation, the
8 // U.S. Government retains certain rights in this software.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Kurtis Nusbaum (klnusbaum@gmail.com)
38 //
39 // ***********************************************************************
40 // @HEADER
41 #ifndef OPTIKA_TREEVIEW_HPP_
42 #define OPTIKA_TREEVIEW_HPP_
43 #include <QTreeView>
44 #include <QQueue>
45 #include "Optika_delegate.hpp"
46 
51 namespace Optika{
52 
53 class Delegate;
54 class TreeModel;
55 
59 class TreeView : public QTreeView{
60  Q_OBJECT
61 public:
64 
68  typedef std::pair<QModelIndex, QString> invalidIndex;
69 
71 
74 
82  TreeView(TreeModel *treeModel, Delegate *delegate, QWidget* parent=0);
83 
85 
86 public slots:
87 
90 
97  void showRow(int row, const QModelIndex& parent);
98 
105  void hideRow(int row, const QModelIndex& parent);
106 
115  void handleBadValue(QModelIndex badValueIndex, QString message);
116 
123  void checkForOtherBadValues();
124 
126 
127 private:
130 
135  QQueue<invalidIndex> invalidInicies;
136 
138 };
139 
140 
141 
142 }
143 #endif //OPTIKA_TREEVIEW_HPP_
The delegate used in the MVC framework for Optika.
void checkForOtherBadValues()
Checks to see if there are any other invalid indicies. If there are, it dequeues the next invalidInde...
void hideRow(int row, const QModelIndex &parent)
Used to change the visiblity of a row from shown to hidden.
TreeView(TreeModel *treeModel, Delegate *delegate, QWidget *parent=0)
Constructs a TreeView.
Class used to view TreeModels.
QQueue< invalidIndex > invalidInicies
A Queue containing any invalid indicies that need to be delt with.
void showRow(int row, const QModelIndex &parent)
Used to change the visiblity of a row from hidden to shown.
std::pair< QModelIndex, QString > invalidIndex
A pair representing an invalidIndex and why it's invalid.
void handleBadValue(QModelIndex badValueIndex, QString message)
Handles any badValue signals that might be emitted by the TreeModel.
TreeModel is a type of QAbstractItemModel that has a Tree like structure.
The delegate used for the Optika package. For non-documented functions please refer to the Qt API...