QSS Solver GUI  4.5.3
treeitem.cpp
Go to the documentation of this file.
1 /*****************************************************************************
2 
3  This file is part of QSS Solver.
4 
5  QSS Solver is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 3 of the License, or
8  (at your option) any later version.
9 
10  QSS Solver is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with QSS Solver. If not, see <http://www.gnu.org/licenses/>.
17 
18  ******************************************************************************/
19 
20 /*
21  * treeitem.cpp
22  *
23  * A container for items of data supplied by the simple tree model.
24  **/
25 
26 #include <QStringList>
27 #include <QtGui>
28 #include <QtGui>
29 
30 #include "treeitem.h"
31 
32 #define SLASH '/'
33 
34 TreeItem::TreeItem(const QVector<QVariant> &data, TreeItem *parent)
35 {
37  itemData = data;
38 }
39 
40 TreeItem::~TreeItem() { qDeleteAll(childItems); }
41 
42 TreeItem *TreeItem::child(int number) { return childItems.value(number); }
43 
44 int TreeItem::childCount() const { return childItems.count(); }
45 
47 {
48  if (parentItem) return parentItem->childItems.indexOf(const_cast<TreeItem *>(this));
49  return 0;
50 }
51 
52 int TreeItem::columnCount() const { return itemData.count(); }
53 
54 QVariant TreeItem::data(int column) const { return itemData.value(column); }
55 
56 bool TreeItem::insertChildren(int position, int count, int columns)
57 {
58  if (position < 0 || position > childItems.size()) return false;
59  for (int row = 0; row < count; ++row) {
60  QVector<QVariant> data(columns);
61  TreeItem *item = new TreeItem(data, this);
62  childItems.insert(position, item);
63  }
64  return true;
65 }
66 
67 bool TreeItem::insertColumns(int position, int columns)
68 {
69  if (position < 0 || position > itemData.size()) return false;
70  for (int column = 0; column < columns; ++column) itemData.insert(position, QVariant());
71  foreach (TreeItem *child, childItems) {
72  child->insertColumns(position, columns);
73  }
74  return true;
75 }
76 
78 
79 bool TreeItem::removeChildren(int position, int count)
80 {
81  if (position < 0 || position + count > childItems.size()) return false;
82  for (int row = 0; row < count; ++row) delete childItems.takeAt(position);
83  return true;
84 }
85 
86 bool TreeItem::removeColumns(int position, int columns)
87 {
88  if (position < 0 || position + columns > itemData.size()) return false;
89  for (int column = 0; column < columns; ++column) itemData.remove(position);
90  foreach (TreeItem *child, childItems)
91  child->removeColumns(position, columns);
92  return true;
93 }
94 
95 bool TreeItem::setData(int column, const QVariant &value)
96 {
97  if (column < 0 || column >= itemData.size()) return false;
98  itemData[column] = value;
99  return true;
100 }
101 
102 FileItem::FileItem(QString v, bool l, bool s, bool p, bool i, QString output)
103 {
104  lines = l;
105  steps = s;
106  plot = p;
107  impulses = i;
108  variable = v;
109  out = output;
110 }
111 
113 {
114  lines = false;
115  steps = false;
116  plot = false;
117  impulses = false;
118  variable = QString();
119 }
120 
122 {
123  QString ret;
124  if (plot) {
125  ret.append("\"").append(out).append(variable).append(".dat\"");
126  if (lines) ret.append("with lines");
127  if (steps) ret.append("with steps");
128  ret.append(" title \"").append(variable).append("\"");
129  }
130  return ret;
131 }
132 
134 
135 MapFiles::MapFiles(QString output)
136 {
137  _files = new QMap<QString, QList<FileItem>>();
138  _output = output;
139 }
140 
142 
143 QList<FileItem> MapFiles::files(QString file) { return _files->value(file); }
144 
145 void MapFiles::clear() { _files->clear(); }
146 
147 void MapFiles::addFiles(QString dir, bool init)
148 {
149  QDir d(dir);
150  QFileInfoList fil = d.entryInfoList(QStringList("*.dat"));
151  if (fil.isEmpty()) return;
152  QList<FileItem> fitems;
153  foreach (QFileInfo f, fil) {
154  FileItem fitem(f.baseName(), true, false, init, false, _output + QString(SLASH) + dir + QString(SLASH));
155  fitems << fitem;
156  }
157  _files->insert(d.dirName(), fitems);
158 }
159 
160 void MapFiles::removeFiles(QString dir)
161 {
162  QDir d(dir);
163  _files->remove(d.dirName());
164 }
165 
166 void MapFiles::clearFiles(QString dir) { _changeFiles(dir, false); }
167 
168 void MapFiles::setFiles(QString dir) { _changeFiles(dir, true); }
169 
170 FileItem MapFiles::fileItem(QString dir, QString name)
171 {
172  /* QList<FileItem> fitems = _files->value(dir);
173  int idx = fitems.indexOf(name);
174  if(idx > 0 && idx < fitems.size())
175  return fitems.at(fitems.indexOf(name));
176  else*/
177  return FileItem();
178 }
179 
180 void MapFiles::setFileItem(FileItem it, QString dir, QString name)
181 {
182  /* QList<FileItem> fitems = _files->value(dir);
183  int idx = fitems.indexOf(it);
184  if(idx < 0 && idx >= fitems.size()) return;
185  fitems.replace(idx,it);*/
186 }
187 
188 void MapFiles::_changeFiles(QString dir, bool st)
189 {
190  QList<FileItem> fitems = _files->value(dir);
191  for (int i = 0; i < fitems.count(); i++) {
192  FileItem fitem = fitems.at(i);
193  fitem.plot = st;
194  fitems.replace(i, fitem);
195  }
196  _files->insert(dir, fitems);
197 }
198 
200 {
201  QMap<QString, QList<FileItem>>::const_iterator it;
202  for (it = _files->constBegin(); it != _files->constEnd(); it++) {
203  clearFiles(it.key());
204  }
205 }
206 
208 {
209  QMap<QString, QList<FileItem>>::const_iterator it;
210  for (it = _files->constBegin(); it != _files->constEnd(); it++) {
211  setFiles(it.key());
212  }
213 }
TreeItem::childCount
int childCount() const
Definition: treeitem.cpp:44
SLASH
#define SLASH
Definition: treeitem.cpp:32
MapFiles::setAllFiles
void setAllFiles()
Definition: treeitem.cpp:207
FileItem::impulses
bool impulses
Definition: treeitem.hpp:160
TreeItem::childItems
QList< TreeItem * > childItems
Definition: treeitem.hpp:129
TreeItem
Definition: treeitem.hpp:30
FileItem::out
QString out
Definition: treeitem.hpp:168
MapFiles::fileItem
FileItem fileItem(QString dir, QString name)
Definition: treeitem.cpp:170
MapFiles::_output
QString _output
Definition: treeitem.hpp:247
FileItem::plot
bool plot
Definition: treeitem.hpp:156
FileItem::lines
bool lines
Definition: treeitem.hpp:148
TreeItem::setData
bool setData(int column, const QVariant &value)
Definition: treeitem.cpp:95
TreeItem::columnCount
int columnCount() const
Definition: treeitem.cpp:52
TreeItem::removeChildren
bool removeChildren(int position, int count)
Definition: treeitem.cpp:79
TreeItem::~TreeItem
~TreeItem()
Definition: treeitem.cpp:40
MapFiles::~MapFiles
~MapFiles()
Definition: treeitem.cpp:141
MapFiles::addFiles
void addFiles(QString dir, bool init=true)
Definition: treeitem.cpp:147
MapFiles::MapFiles
MapFiles(QString output=QString())
Definition: treeitem.cpp:135
FileItem::variable
QString variable
Definition: treeitem.hpp:164
MapFiles::clearAllFiles
void clearAllFiles()
Definition: treeitem.cpp:199
TreeItem::removeColumns
bool removeColumns(int position, int columns)
Definition: treeitem.cpp:86
TreeItem::childNumber
int childNumber() const
Definition: treeitem.cpp:46
FileItem
Definition: treeitem.hpp:120
MapFiles::setFileItem
void setFileItem(FileItem it, QString dir, QString name)
Definition: treeitem.cpp:180
TreeItem::TreeItem
TreeItem(const QVector< QVariant > &data, TreeItem *parent=0)
Definition: treeitem.cpp:34
FileItem::~FileItem
~FileItem()
Definition: treeitem.cpp:133
TreeItem::parent
TreeItem * parent()
Definition: treeitem.cpp:77
MapFiles::removeFiles
void removeFiles(QString dir)
Definition: treeitem.cpp:160
TreeItem::insertChildren
bool insertChildren(int position, int count, int columns)
Definition: treeitem.cpp:56
MapFiles::files
QList< FileItem > files(QString file)
Definition: treeitem.cpp:143
FileItem::plotStr
QString plotStr()
Definition: treeitem.cpp:121
MapFiles::setFiles
void setFiles(QString dir)
Definition: treeitem.cpp:168
TreeItem::itemData
QVector< QVariant > itemData
Definition: treeitem.hpp:130
TreeItem::insertColumns
bool insertColumns(int position, int columns)
Definition: treeitem.cpp:67
MapFiles::_changeFiles
void _changeFiles(QString file, bool st)
Definition: treeitem.cpp:188
MapFiles::_files
QMap< QString, QList< FileItem > > * _files
Definition: treeitem.hpp:246
TreeItem::data
QVariant data(int column) const
Definition: treeitem.cpp:54
TreeItem::child
TreeItem * child(int number)
Definition: treeitem.cpp:42
FileItem::FileItem
FileItem()
Definition: treeitem.cpp:112
FileItem::steps
bool steps
Definition: treeitem.hpp:152
TreeItem::parentItem
TreeItem * parentItem
Definition: treeitem.hpp:131
MapFiles::clear
void clear()
Definition: treeitem.cpp:145
MapFiles::clearFiles
void clearFiles(QString dir)
Definition: treeitem.cpp:166