OpenMW
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
scriptedit.hpp
Go to the documentation of this file.
1 #ifndef SCRIPTEDIT_H
2 #define SCRIPTEDIT_H
3 
4 #include <QPlainTextEdit>
5 #include <QWidget>
6 #include <QVector>
7 #include <QTimer>
8 #include <QFont>
9 #include <QAction>
10 
11 #include "../../model/world/universalid.hpp"
12 
13 #include "scripthighlighter.hpp"
14 
15 class QRegExp;
16 
17 namespace CSMDoc
18 {
19  class Document;
20 }
21 
22 namespace CSVWorld
23 {
24  class LineNumberArea;
25 
27  class ScriptEdit : public QPlainTextEdit
28  {
29  Q_OBJECT
30 
31  public:
32 
33  class ChangeLock
34  {
36 
37  ChangeLock (const ChangeLock&);
39 
40  public:
41 
42  ChangeLock (ScriptEdit& edit);
43  ~ChangeLock();
44  };
45 
46  friend class ChangeLock;
47 
48  private:
49 
52  QTimer mUpdateTimer;
55  QFont mDefaultFont;
56  QFont mMonoFont;
61 
62  protected:
63 
64  bool event (QEvent *event);
65 
66  public:
67 
69  QWidget* parent);
70 
74  bool isChangeLocked() const;
75 
76  void lineNumberAreaPaintEvent(QPaintEvent *event);
77  int lineNumberAreaWidth();
78  void showLineNum(bool show);
79 
80  protected:
81 
82  virtual void resizeEvent(QResizeEvent *e);
83 
84  virtual void contextMenuEvent(QContextMenuEvent *event);
85 
86  private:
87 
88  QVector<CSMWorld::UniversalId::Type> mAllowedTypes;
90  const QRegExp mWhiteListQoutes;
91 
92  void dragEnterEvent (QDragEnterEvent* event);
93 
94  void dropEvent (QDropEvent* event);
95 
96  void dragMoveEvent (QDragMoveEvent* event);
97 
98  bool stringNeedsQuote(const std::string& id) const;
99 
101  void setTabWidth();
102 
105  void wrapLines(bool wrap);
106 
107  private slots:
108 
111  void settingChanged(const CSMPrefs::Setting *setting);
112 
113  void idListChanged();
114 
115  void updateHighlighting();
116 
117  void updateLineNumberAreaWidth(int newBlockCount);
118 
119  void updateLineNumberArea(const QRect &, int);
120 
121  void markOccurrences();
122 
123  void commentSelection();
124 
125  void uncommentSelection();
126 
127  };
128 
129  class LineNumberArea : public QWidget
130  {
132 
133  public:
134 
135  LineNumberArea(ScriptEdit *editor);
136  QSize sizeHint() const;
137 
138  protected:
139 
140  void paintEvent(QPaintEvent *event);
141  };
142 }
143 #endif // SCRIPTEDIT_H
void updateLineNumberArea(const QRect &, int)
Definition: scriptedit.cpp:298
Mode
Definition: scripthighlighter.hpp:38
void paintEvent(QPaintEvent *event)
Definition: scriptedit.cpp:477
void idListChanged()
Definition: scriptedit.cpp:257
bool isChangeLocked() const
Definition: scriptedit.cpp:139
LineNumberArea(ScriptEdit *editor)
Definition: scriptedit.cpp:469
void dropEvent(QDropEvent *event)
Definition: scriptedit.cpp:168
QFont mMonoFont
Definition: scriptedit.hpp:56
void wrapLines(bool wrap)
Turn line wrapping in script editor on or off.
Definition: scriptedit.cpp:211
LineNumberArea * mLineNumberArea
Definition: scriptedit.hpp:54
QTimer mUpdateTimer
Definition: scriptedit.hpp:52
int mTabCharCount
Definition: scriptedit.hpp:57
void showLineNum(bool show)
Definition: scriptedit.cpp:130
ChangeLock(const ChangeLock &)
QAction * mUncommentAction
Definition: scriptedit.hpp:60
virtual void resizeEvent(QResizeEvent *e)
Definition: scriptedit.cpp:387
ScriptEdit * mScriptEdit
Definition: scriptedit.hpp:131
void setTabWidth()
Set tab width for script editor.
Definition: scriptedit.cpp:205
bool stringNeedsQuote(const std::string &id) const
Definition: scriptedit.cpp:198
int wrap(int index, int max)
Definition: race.cpp:22
void uncommentSelection()
Definition: scriptedit.cpp:348
Definition: scriptedit.hpp:129
void settingChanged(const CSMPrefs::Setting *setting)
Update editor when related setting is changed.
Definition: scriptedit.cpp:223
void markOccurrences()
Definition: scriptedit.cpp:309
const QRegExp mWhiteListQoutes
Definition: scriptedit.hpp:90
bool event(QEvent *event)
Definition: scriptedit.cpp:29
void dragMoveEvent(QDragMoveEvent *event)
Definition: scriptedit.cpp:156
~ChangeLock()
Definition: scriptedit.cpp:24
Definition: setting.hpp:22
virtual void contextMenuEvent(QContextMenuEvent *event)
Definition: scriptedit.cpp:395
void updateLineNumberAreaWidth(int newBlockCount)
Definition: scriptedit.cpp:293
Definition: document.hpp:57
const CSMDoc::Document & mDocument
Definition: scriptedit.hpp:89
void lineNumberAreaPaintEvent(QPaintEvent *event)
Definition: scriptedit.cpp:415
ScriptHighlighter * mHighlighter
Definition: scriptedit.hpp:51
QVector< CSMWorld::UniversalId::Type > mAllowedTypes
Definition: scriptedit.hpp:88
int lineNumberAreaWidth()
Definition: scriptedit.cpp:275
QFont mDefaultFont
Definition: scriptedit.hpp:55
int mChangeLocked
Definition: scriptedit.hpp:50
QSize sizeHint() const
Definition: scriptedit.cpp:472
Definition: scriptedit.hpp:33
Definition: scripthighlighter.hpp:22
bool mShowLineNum
Definition: scriptedit.hpp:53
ScriptEdit & mEdit
Definition: scriptedit.hpp:35
ScriptEdit(const CSMDoc::Document &document, ScriptHighlighter::Mode mode, QWidget *parent)
Definition: scriptedit.cpp:43
void commentSelection()
Definition: scriptedit.cpp:328
void dragEnterEvent(QDragEnterEvent *event)
Definition: scriptedit.cpp:144
QAction * mCommentAction
Definition: scriptedit.hpp:59
ChangeLock & operator=(const ChangeLock &)
void updateHighlighting()
Definition: scriptedit.cpp:265
Editor for scripts.
Definition: scriptedit.hpp:27
bool mMarkOccurrences
Definition: scriptedit.hpp:58