QCodeEdit  2.2
qeditsession.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2006-2009 fullmetalcoder <fullmetalcoder@hotmail.fr>
4 **
5 ** This file is part of the Edyuk project <http://edyuk.org>
6 **
7 ** This file may be used under the terms of the GNU General Public License
8 ** version 3 as published by the Free Software Foundation and appearing in the
9 ** file GPL.txt included in the packaging of this file.
10 **
11 ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12 ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13 **
14 ****************************************************************************/
15 
16 #ifndef _QEDIT_SESSION_H_
17 #define _QEDIT_SESSION_H_
18 
19 #include "qce-config.h"
20 
26 #include <QHash>
27 #include <QObject>
28 #include <QPointer>
29 #include <QDateTime>
30 #include <QStringList>
31 
32 class QEditor;
33 
34 class QDocument;
35 class QDocumentCursor;
36 class QDocumentCommand;
37 
38 class QDataStream;
39 
41 {
42  Q_OBJECT
43 
44  public:
45  QEditSession(QObject *p = 0);
46  QEditSession(const QString& f, QObject *p = 0);
47  virtual ~QEditSession();
48 
49  int autoUpdateInterval() const;
50 
51  QString fileName() const;
52 
53  public slots:
54  virtual void addEditor(QEditor *e);
55  virtual void removeEditor(QEditor *e);
56 
57  virtual void updateData();
58 
59  virtual void setAutoUpdateInterval(int ms);
60 
61  virtual void setFileName(const QString& filename, bool restore = false);
62 
63  virtual void clear(bool cleanup = false);
64 
65  virtual void save();
66  virtual void restore();
67 
68  virtual void save(QDataStream& s);
69  virtual void restore(QDataStream& s);
70 
71  signals:
72  void restored(QEditor *e);
73 
74  protected slots:
75  virtual void destroyed(QObject *o);
76 
77  virtual void saved(QEditor *e, const QString& fn);
78  virtual void loaded(QEditor *e, const QString& fn);
79 
80  protected:
81  virtual void timerEvent(QTimerEvent *e);
82 
83  virtual QEditor* createEditor();
84 
85  struct Cursor
86  {
87  Cursor()
88  : beginLine(-1), beginColumn(-1), endLine(-1), endColumn(-1) {}
89 
90  Cursor(int line, int column)
91  : beginLine(line), beginColumn(column), endLine(-1), endColumn(-1) {}
92 
93  Cursor(const Cursor& c)
94  : beginLine(c.beginLine), beginColumn(c.beginColumn), endLine(c.endLine), endColumn(c.endColumn) {}
95 
96  Cursor(const QDocumentCursor& c);
97 
98  QDocumentCursor toDocumentCursor(QDocument *d) const;
99 
100  int beginLine;
101  int beginColumn;
102  int endLine;
103  int endColumn;
104  };
105 
106  struct Document
107  {
108  QString fileName;
109  QDateTime timeStamp;
110 
111  int scrollX, scrollY;
112 
113  QList<Cursor> cursors;
114  QHash<int, QList<int> > marks;
115  };
116 
117  virtual void update(QEditor *e, Document *d);
118 
119  int m_id;
120  int m_delay;
121  QString m_fileName;
122 
123  QList<QEditor*> m_editors;
124  QList<Document*> m_sessionData;
125 };
126 
127 #endif // ! _QEDIT_SESSION_H_
Definition: qeditsession.h:106
#define QCE_EXPORT
Macro needed for cross-platform shared libraries creation.
Definition: qce-config.h:40
Utility file for shared library creation.
Definition: qeditsession.h:85
A class storing a document.
Definition: qdocument.h:62
A text editing widget.
Definition: qeditor.h:55
The base class for document editing command.
Definition: qdocumentcommand.h:34
A session recording class.
Definition: qeditsession.h:40
A cursor to navigate within documents and edit them.
Definition: qdocumentcursor.h:36