1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
/* This file was part of the SpeedCrunch project
Copyright (C) 2004,2005 Ariya Hidayat <ariya@kde.org>
And is now part of abakus.
Copyright (c) 2005 Michael Pyne <michael.pyne@kdemail.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 option) 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.
*/
#ifndef ABAKUS_EDITOR_H
#define ABAKUS_EDITOR_H
#include <qobject.h>
#include <qstringlist.h>
#include <qtextedit.h>
#include "hmath.h"
class QEvent;
class QKeyEvent;
class QWidget;
class Evaluator;
class Editor : public QTextEdit
{
Q_OBJECT
public:
typedef enum
{
Number, FunctionName, Variable, MatchedPar
} ColorType;
Editor( QWidget* parent = 0, const char* name = 0 );
~Editor();
QSize sizeHint() const;
QSize xminimumSizeHint() const;
QStringList history() const;
void setHistory( const QStringList& history );
bool autoCompleteEnabled() const;
void setAutoCompleteEnabled( bool enable );
bool autoCalcEnabled() const;
void setAutoCalcEnabled( bool enable );
void setFormat( char format );
void setDecimalDigits( int digits );
void setSyntaxHighlight( bool enable );
bool isSyntaxHighlightEnabled() const;
void setHighlightColor( ColorType type, QColor color );
QColor highlightColor( ColorType type );
public slots:
void appendHistory( const QString& text );
void clearHistory();
// Stop the timer from going off.
void squelchNextAutoCalc();
void setText(const QString &txt);
protected slots:
void checkAutoComplete();
void triggerAutoComplete();
void autoComplete( const QString& item );
void checkAutoCalc();
void autoCalc();
void checkMatching();
void doMatchingLeft();
void doMatchingRight();
void historyBack();
void historyForward();
protected:
void keyPressEvent( QKeyEvent* );
void wheelEvent( QWheelEvent* );
QString formatNumber( const Abakus::number_t &value ) const;
private:
class Private;
Private* d;
Editor( const Editor& );
Editor& operator=( const Editor& );
};
class EditorCompletion : public QObject
{
Q_OBJECT
public:
EditorCompletion( Editor* editor );
~EditorCompletion();
bool eventFilter( QObject *o, QEvent *e );
void doneCompletion();
void showCompletion( const QStringList &choices );
protected slots:
void moveCompletionPopup();
signals:
void selectedCompletion( const QString& item );
private:
class Private;
Private* d;
EditorCompletion( const EditorCompletion& );
EditorCompletion& operator=( const EditorCompletion& );
};
#endif // ABAKUS_EDITOR_H
// vim: set et ts=8 sw=4:
|