Itasca C++ Interface
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
iinputrecord.h
1 #pragma once
2 
3 #include "base/src/baseqt.h"
4 
5 namespace itasca {
6  class Archive2;
7 
9  class IInputRecord {
10  public:
12  struct FileData {
13  QString name_;
14  QDateTime time_;
15  qint64 size_;
16  QString role_;
17  quint32 order_;
18  };
20  using FileDataSet = QSet<FileData>;
21 
23  virtual QObject * getQObject()=0;
25  virtual const QObject *getQObject() const=0;
26 
27  // Get record, not from playback;
29  virtual quint64 getTotalInputLines() const=0;
33  virtual QStringList getInputLines(quint64 start=0,quint64 len=limits<quint64>::max()) const=0;
35  virtual FileDataSet getInputFiles() const=0;
38  //virtual FileDataSet readFromSaveFile(Archive2 &a,QStringList *linesw) const=0;
41  //virtual FileDataSet extractFromStream(QDataStream &in,QTextStream &out) const=0;
44  virtual quint64 getTimeToPlayback(quint64 marksToUndo) const=0;
45  virtual bool canSmartUndo(quint64 marksToUndo) const=0;
47  virtual bool isPlaybackActive() const=0;
49  virtual QStringList filterInputForDataFile(const QStringList &input) const=0;
50 
52  virtual void addFile(const QString &fullPath,const QString &role)=0;
53  //
55  virtual void lineAdded(const QString &line)=0;
57  virtual void inputLineModified(qint64 line,const QString &newLine)=0;
58  virtual void inputLineRemoved(qint64 line)=0;
60  virtual void fileAdded(const IInputRecord::FileData &fd)=0; // save, call, etc.
63  virtual void dataReset(qint64 lines)=0;
66  virtual void playbackActiveChanged(bool on,double timeExpected)=0;
67  };
68 
69  inline uint32 qHash(const IInputRecord::FileData &fd) {
70  return qHash(fd.name_+fd.role_);
71  }
72 
73  inline bool operator==(const IInputRecord::FileData &fd1,const IInputRecord::FileData &fd2) {
74  if (fd1.name_!=fd2.name_) return false;
75  if (fd1.time_!=fd2.time_) return false;
76  if (fd1.size_!=fd2.size_) return false;
77  if (fd1.role_!=fd2.role_) return false;
78  return true;
79  }
80 
81 } // namespace itascaxd
82 // EoF
virtual bool isPlaybackActive() const =0
Return true if an undo operation is being performed or a call file is being executed.
quint32 order_
order in which this file was added to the input record, starts with 1.
Definition: iinputrecord.h:17
QDateTime time_
last modified time/date stamp when added
Definition: iinputrecord.h:14
virtual void playbackActiveChanged(bool on, double timeExpected)=0
This struct holds file information stored in FileDataSet.
Definition: iinputrecord.h:12
QString name_
filePath relative to current directory when added
Definition: iinputrecord.h:13
virtual void inputLineModified(qint64 line, const QString &newLine)=0
Signal emitted when the last input line is modified.
qint64 size_
size of the file when added
Definition: iinputrecord.h:15
namespace Itasca
Definition: basememory.cpp:9
virtual QObject * getQObject()=0
Return a QObject pointer to this object - useful for connecting Qt signals and slots.
virtual quint64 getTimeToPlayback(quint64 marksToUndo) const =0
virtual void dataReset(qint64 lines)=0
QSet< FileData > FileDataSet
A list of files.
Definition: iinputrecord.h:20
The input record maintains a list of all commands used in the creation of the model.
Definition: iinputrecord.h:9
debug checked shorthand for std::numeric_limits<T>::
Definition: limit.h:25
QString role_
string used to indicate the file role, "save", "call", etc.
Definition: iinputrecord.h:16
virtual void lineAdded(const QString &line)=0
Signal emitted when a line is added.
virtual FileDataSet getInputFiles() const =0
Return a list of the files used in the input record.
virtual quint64 getTotalInputLines() const =0
Return the total number of lines in the input record.
virtual void fileAdded(const IInputRecord::FileData &fd)=0
Signal emitted when afile was added to the input record.
virtual void addFile(const QString &fullPath, const QString &role)=0
Add a file to the input record.
virtual QStringList filterInputForDataFile(const QStringList &input) const =0
Filters out all non-command lines and interrupted lines, moves FISH CREATE commands to the front.
All default base headers if Qt is being used.
virtual QStringList getInputLines(quint64 start=0, quint64 len=limits< quint64 >::max()) const =0