Tulip  4.1.0
Better Visualization Through Research
 All Classes Files Functions Variables Enumerations Enumerator Properties Groups Pages
ParameterListModel.h
1 /*
2  *
3  * This file is part of Tulip (www.tulip-software.org)
4  *
5  * Authors: David Auber and the Tulip development Team
6  * from LaBRI, University of Bordeaux 1 and Inria Bordeaux - Sud Ouest
7  *
8  * Tulip is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License
10  * as published by the Free Software Foundation, either version 3
11  * of the License, or (at your option) any later version.
12  *
13  * Tulip is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16  * See the GNU General Public License for more details.
17  *
18  */
19 ///@cond DOXYGEN_HIDDEN
20 
21 #ifndef PARAMETERLISTMODEL_H
22 #define PARAMETERLISTMODEL_H
23 
24 #include "tulip/TulipModel.h"
25 #include <tulip/WithParameter.h>
26 #include <tulip/DataSet.h>
27 #include <tulip/TulipMetaTypes.h>
28 
29 namespace tlp {
30 
31 class TLP_QT_SCOPE ParameterListModel : public TulipModel {
32  struct ParamInfos {
33  inline ParamInfos() {}
34  inline ParamInfos(bool m,const QString &n,const QString &d, const std::string& t): mandatory(m), name(n),desc(d), type(t) {}
35  bool mandatory;
36  QString name;
37  QString desc;
38  std::string type;
39 
40  QString getNameForDisplay() {
41  // if a a subtype prefix exists, don't show it
42  int pos = name.indexOf("::");
43 
44  if (pos != -1)
45  return name.mid(pos + 2);
46  else
47  return name;
48  }
49  };
50 
51  struct ParamInfosSorter {
52  bool operator()(ParamInfos a, ParamInfos b);
53  };
54 
55  QVector<ParamInfos> _params;
56  tlp::DataSet _data;
57  tlp::Graph* _graph;
58 
59 public:
60  explicit ParameterListModel(const tlp::ParameterDescriptionList &params, tlp::Graph *graph=NULL, QObject *parent=NULL);
61  tlp::DataSet parametersValues() const;
62  void setParametersValues(const tlp::DataSet& data);
63 
64  QModelIndex index(int row, int column,const QModelIndex &parent = QModelIndex()) const;
65  QModelIndex parent(const QModelIndex &child) const;
66  int rowCount(const QModelIndex &parent = QModelIndex()) const;
67  int columnCount(const QModelIndex &parent = QModelIndex()) const;
68  QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
69  QVariant headerData(int section, Qt::Orientation orientation, int role) const;
70  Qt::ItemFlags flags(const QModelIndex &index) const;
71  bool setData(const QModelIndex &index, const QVariant &value, int role);
72 };
73 
74 }
75 
76 #endif // PARAMETERLISTMODEL_H
77 ///@endcond