diff options
| author | 2011-01-01 20:19:56 +0000 | |
|---|---|---|
| committer | 2011-01-01 20:19:56 +0000 | |
| commit | c601b5a27f74b16158adafe429faefbe573e64a2 (patch) | |
| tree | a3cde3206a45628f8ac86e8dfbdab70b20c3a831 /src/modules/editor/ScriptEditorImplementation.h | |
| parent | probable compilation fix for rijndaled/crypto++ (diff) | |
| download | KVIrc-c601b5a27f74b16158adafe429faefbe573e64a2.tar.gz KVIrc-c601b5a27f74b16158adafe429faefbe573e64a2.tar.bz2 KVIrc-c601b5a27f74b16158adafe429faefbe573e64a2.zip | |
The big rename for modules. Still some details remaining.
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5284 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules/editor/ScriptEditorImplementation.h')
| -rw-r--r-- | src/modules/editor/ScriptEditorImplementation.h | 219 |
1 files changed, 219 insertions, 0 deletions
diff --git a/src/modules/editor/ScriptEditorImplementation.h b/src/modules/editor/ScriptEditorImplementation.h new file mode 100644 index 000000000..50fcb3ca6 --- /dev/null +++ b/src/modules/editor/ScriptEditorImplementation.h @@ -0,0 +1,219 @@ +#ifndef _SCRIPTEDITOR_H_ +#define _SCRIPTEDITOR_H_ + +//============================================================================= +// +// File : ScriptEditorImplementation.h +// Creation date : Sun Mar 28 1999 16:11:48 CEST by Szymon Stefanek +// +// This file is part of the KVIrc IRC client distribution +// Copyright (C) 1999-2010 Szymon Stefanek <pragma at kvirc dot net> +// +// This program is FREE software. You can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation; either version 2 +// of the License, or (at your opinion) any later version. +// +// This program is distributed in the HOPE that it will be USEFUL, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, write to the Free Software Foundation, +// Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +// +//============================================================================= + +#include "KviScriptEditor.h" +#include "KviPointerList.h" +#include "KviSelectors.h" +#include "KviTalPopupMenu.h" + +#include <QCompleter> +#include <QLabel> +#include <QDialog> +#include <QEvent> +#include <QTextEdit> +#include <QListWidget> +#include <QCheckBox> +#include <QSyntaxHighlighter> +#include <QByteArray> + +class QTimer; + +//typedef KviPointerList<int> ColumnList; +class ScriptEditorSyntaxHighlighter; +class ScriptEditorWidget : public QTextEdit +{ + Q_OBJECT + Q_PROPERTY(bool contextSensitiveHelp READ contextSensitiveHelp) +public: + ScriptEditorWidget(QWidget * pParent); + virtual ~ScriptEditorWidget(); +public: + QString m_szFind; +protected: + ScriptEditorSyntaxHighlighter * m_pSyntaxHighlighter; + QCompleter * m_pCompleter; + QStringList * m_pListModulesNames; + QStringList * m_pListCompletition; + QTimer * m_pStartTimer; + QWidget * m_pParent; + int iIndex,iModulesCount; + QString m_szHelp; +public: + ScriptEditorSyntaxHighlighter * syntaxHighlighter(){return m_pSyntaxHighlighter;}; + void disableSyntaxHighlighter(); + void enableSyntaxHighlighter(); + + void createCompleter(QStringList &list); + + void loadCompleterFromFile(); + QCompleter * completer() const { return m_pCompleter; }; + QString textUnderCursor() const; + void updateOptions(); + //void find1(); + bool contextSensitiveHelp() const; +public slots: + void checkReadyCompleter(); + void insertCompletion(const QString & szCompletion); + void slotFind(); + void slotHelp(); + void slotReplace(); +protected slots: + void asyncCompleterCreation(); +signals: + void keyPressed(); +protected: + void contextMenuEvent(QContextMenuEvent * e); + virtual void keyPressEvent(QKeyEvent * e); +// void mouseReleaseEvent(QMouseEvent * e); +}; + +class ScriptEditorWidgetColorOptions : public QDialog +{ + Q_OBJECT +public: + ScriptEditorWidgetColorOptions(QWidget * pParent); + ~ScriptEditorWidgetColorOptions(); +private: + KviPointerList<KviSelectorInterface> * m_pSelectorInterfaceList; +protected: + KviColorSelector * addColorSelector(QWidget * pParent,const QString & txt,QColor * pOption,bool bEnabled); + +protected slots: + void okClicked(); + +}; + +class ScriptEditorSyntaxHighlighter : public QSyntaxHighlighter +{ +public: + ScriptEditorSyntaxHighlighter(ScriptEditorWidget * pWidget); + virtual ~ScriptEditorSyntaxHighlighter(); +public: + QTextEdit * m_pTextEdit; +public: + QTextEdit * textEdit(){ return m_pTextEdit; } + void highlightBlock(const QString & szText); + void updateSyntaxtTextFormat(); +private: + struct KviScriptHighlightingRule + { + QRegExp pattern; + QTextCharFormat format; + }; + + QVector<KviScriptHighlightingRule> highlightingRules; + QRegExp commentStartExpression; + QRegExp commentEndExpression; + + QTextCharFormat bracketFormat; + QTextCharFormat punctuationFormat; + QTextCharFormat keywordFormat; + QTextCharFormat variableFormat; + QTextCharFormat normaltextFormat; + QTextCharFormat findFormat; + QTextCharFormat functionFormat; + QTextCharFormat commentFormat; +}; + +class ScriptEditorImplementation : public KviScriptEditor +{ + Q_OBJECT +public: + ScriptEditorImplementation(QWidget * par); + virtual ~ScriptEditorImplementation(); +public: + QLineEdit * m_pFindLineEdit; +protected: + ScriptEditorWidgetColorOptions * m_pOptionsDialog; + ScriptEditorWidget * m_pEditor; + QLabel * m_pRowColLabel; + int m_lastCursorPos; +public: + virtual void setText(const char * txt); + virtual void setText(const QString & szText); + virtual void setText(const QByteArray & szText); + virtual void getText(QString & szText); + virtual void getText(QByteArray & szText); + virtual void setFindText(const QString & szText); + virtual void setEnabled(bool bEnabled); + virtual void setReadOnly(bool bReadOnly); + void setUnHighlightedText(const QString & szText); + + + virtual void setFocus(); + virtual bool isModified(); + virtual void setModified(bool); + + int getCursor(){return m_pEditor->textCursor().position();}; + void setCursorPosition(int iPos); + int cursor(){ return m_lastCursorPos; }; + QLineEdit * findLineEdit(){ return m_pFindLineEdit; }; +protected: + virtual void focusInEvent(QFocusEvent * e); + void loadOptions(); + void saveOptions(); +protected slots: + void saveToFile(); + void loadFromFile(); + void configureColors(); + void updateRowColLabel(); + void slotFind(); + void slotReplaceAll(const QString & szToReplace, const QString & szReplaceWith); + void slotInitFind(); + void slotNextFind(const QString &); + void optionsDialogFinished(int iResult); +signals: + void find(const QString &); + void replaceAll(const QString & szToReplace, const QString & szReplaceWith); + void initFind(); + void nextFind(const QString & szText); +}; + +class ScriptEditorReplaceDialog: public QDialog +{ + Q_OBJECT +public: + ScriptEditorReplaceDialog(QWidget * parent = 0, const QString & szName = QString()); + ~ScriptEditorReplaceDialog(); +public: + QLineEdit * m_pFindLineEdit; + QLineEdit * m_pReplaceLineEdit; +protected: + QPushButton * m_pReplaceButton; + QCheckBox * m_pCheckReplaceAll; + QWidget * m_pParent; +protected slots: + void textChanged(const QString &); + void slotReplace(); + void slotNextFind(); +signals: + void replaceAll(const QString &, const QString &); + void initFind(); + void nextFind(const QString &); +}; + +#endif // _SCRIPTEDITOR_H_ |
