You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kvirc/src/modules/editor/scripteditor.h

201 lines
5.4 KiB

#ifndef _SCRIPTEDITOR_H_
#define _SCRIPTEDITOR_H_
//=============================================================================
//
// File : scripteditor.h
// Created on Sun Mar 28 1999 16:11:48 CEST by Szymon Stefanek
//
// This file is part of the KVIrc IRC client distribution
// Copyright (C) 1999-2004 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 "kvi_scripteditor.h"
#include <qlabel.h>
#include <kvi_tal_textedit.h>
#include <qsyntaxhighlighter.h>
#include <qdialog.h>
#include <qcheckbox.h>
#include "kvi_tal_listbox.h"
#include <qevent.h>
#include "kvi_qcstring.h"
#include "kvi_tal_popupmenu.h"
#include "kvi_pointerlist.h"
#include "kvi_selectors.h"
typedef KviPointerList<int> ColumnList;
class KviCompletionBox: public KviTalListBox
{
Q_OBJECT
public:
KviCompletionBox(QWidget * parent);
~KviCompletionBox(){};
void updateContents(QString word);
protected:
virtual void keyPressEvent(QKeyEvent * e);
};
class KviScriptEditorWidget : public KviTalTextEdit
{
Q_OBJECT
Q_PROPERTY(bool contextSensitiveHelp READ contextSensitiveHelp)
public:
KviScriptEditorWidget(QWidget * pParent);
virtual ~KviScriptEditorWidget();
public:
void updateOptions();
void find1();
QString m_szFind;
KviCompletionBox *completelistbox;
void completition(bool bCanComplete = 1);
void getWordBeforeCursor(QString &buffer,int index,bool *);
void getWordOnCursor(QString &buffer,int index) const;
bool contextSensitiveHelp() const;
public slots:
void slotFind();
void slotHelp();
void slotReplace();
void slotComplete(const QString &str);
signals:
void keyPressed();
protected:
virtual void keyPressEvent(QKeyEvent * e);
void contentsMousePressEvent(QMouseEvent *);
#ifdef COMPILE_USE_QT4
Q3PopupMenu *createPopupMenu( const QPoint& pos );
#else
QPopupMenu *createPopupMenu( const QPoint& pos );
#endif
QWidget *m_pParent;
QString m_szHelp;
};
#ifdef COMPILE_USE_QT4
#include <q3syntaxhighlighter.h>
#define QSyntaxHighlighter Q3SyntaxHighlighter
#else
#include <qobjectlist.h>
#endif
class KviScriptSyntaxHighlighter : public QSyntaxHighlighter
{
public:
KviScriptSyntaxHighlighter(KviScriptEditorWidget * pWidget);
virtual ~KviScriptSyntaxHighlighter();
public:
virtual int highlightParagraph(const QString & text,int endStateOfLastPara);
};
class KviScriptEditorWidgetColorOptions : public QDialog
{
Q_OBJECT
public:
KviScriptEditorWidgetColorOptions(QWidget * pParent);
~KviScriptEditorWidgetColorOptions();
private:
KviPointerList<KviSelectorInterface> * m_pSelectorInterfaceList;
protected:
KviColorSelector * addColorSelector(QWidget * pParent,const QString & txt,QColor * pOption,bool bEnabled);
protected slots:
void okClicked();
};
class QTimer;
class KviScriptEditorImplementation : public KviScriptEditor
{
Q_OBJECT
public:
KviScriptEditorImplementation(QWidget * par);
virtual ~KviScriptEditorImplementation();
protected:
KviScriptEditorWidget * m_pEditor;
QLabel * m_pRowColLabel;
QPoint m_lastCursorPos;
public:
virtual void setText(const QString &txt);
virtual void getText(QString &txt);
virtual void setText(const KviQCString &txt);
virtual void getText(KviQCString &txt);
virtual void setFindText(const QString & text);
virtual void setEnabled(bool bEnabled);
virtual void setFocus();
virtual bool isModified();
void setFindLineeditReadOnly(bool b);
void setCursorPosition(QPoint);
QPoint getCursor();
QLineEdit *m_pFindlineedit;
QLineEdit * getFindlineedit();
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 &,const QString &);
void slotInitFind();
void slotNextFind(const QString &);
signals:
void find( const QString &);
void replaceAll( const QString &, const QString &);
void initFind();
void nextFind(const QString &);
};
class KviScriptEditorReplaceDialog: public QDialog
{
Q_OBJECT
public:
KviScriptEditorReplaceDialog( QWidget* parent = 0, const char* name = 0);
~KviScriptEditorReplaceDialog();
QLineEdit *m_pFindlineedit;
QLineEdit *m_pReplacelineedit;
protected:
QLabel *findlabel;
QLabel *replacelabel;
QPushButton *replacebutton;
QPushButton *replace;
QPushButton *findNext;
// QPushButton *cancelbutton;
KviStyledCheckBox *checkReplaceAll;
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_