#ifndef _SCRIPTEDITOR_H_ #define _SCRIPTEDITOR_H_ //============================================================================= // // File : scripteditor.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-2008 Szymon Stefanek // // 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. ,59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // //============================================================================= #include "kvi_scripteditor.h" #include "kvi_pointerlist.h" #include "kvi_selectors.h" #include "kvi_qcstring.h" #include "kvi_tal_textedit.h" #include "kvi_tal_popupmenu.h" #include #include #include #include #include #include #include #include class QTimer; //typedef KviPointerList ColumnList; class KviScriptEditorWidget : public QTextEdit { Q_OBJECT Q_PROPERTY(bool contextSensitiveHelp READ contextSensitiveHelp) public: KviScriptEditorWidget(QWidget * pParent); virtual ~KviScriptEditorWidget(); public: QString m_szFind; protected: QCompleter * m_pCompleter; QStringList * m_pListModulesNames; QStringList * m_pListCompletition; QTimer * m_pStartTimer; QWidget * m_pParent; QString m_szHelp; public: 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 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 KviScriptEditorWidgetColorOptions : public QDialog { Q_OBJECT public: KviScriptEditorWidgetColorOptions(QWidget * pParent); ~KviScriptEditorWidgetColorOptions(); private: KviPointerList * m_pSelectorInterfaceList; protected: KviColorSelector * addColorSelector(QWidget * pParent,const QString & txt,QColor * pOption,bool bEnabled); protected slots: void okClicked(); }; class KviScriptEditorSyntaxHighlighter : public QSyntaxHighlighter { public: KviScriptEditorSyntaxHighlighter(KviScriptEditorWidget * pWidget); virtual ~KviScriptEditorSyntaxHighlighter(); public: QTextEdit * m_pTextEdit; public: QTextEdit * textEdit(){ return m_pTextEdit; } void highlightBlock(const QString & szText); }; class KviScriptEditorImplementation : public KviScriptEditor { Q_OBJECT public: KviScriptEditorImplementation(QWidget * par); virtual ~KviScriptEditorImplementation(); public: QLineEdit * m_pFindLineEdit; protected: KviScriptEditorWidget * m_pEditor; QLabel * m_pRowColLabel; int m_lastCursorPos; public: virtual void setText(const QString & szText); virtual void setText(const KviQCString & szText); virtual void text(QString & szText); virtual void text(KviQCString & szText); virtual void setFindText(const QString & szText); virtual void setEnabled(bool bEnabled); virtual void setFocus(); virtual bool isModified(); void setFindLineEditReadOnly(bool b); 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 &); signals: void find(const QString &); void replaceAll(const QString & szToReplace, const QString & szReplaceWith); void initFind(); void nextFind(const QString & szText); }; class KviScriptEditorReplaceDialog: public QDialog { Q_OBJECT public: KviScriptEditorReplaceDialog(QWidget * parent = 0, const char * name = 0); ~KviScriptEditorReplaceDialog(); 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_