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.
190 lines
5.2 KiB
190 lines
5.2 KiB
/* This file is part of the KDE project
|
|
Copyright (C) 2001 Andrea Rizzi <rizzi@kde.org>
|
|
Ulrich Kuettler <ulrich.kuettler@mailbox.tu-dresden.de>
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Library General Public
|
|
License as published by the Free Software Foundation; either
|
|
version 2 of the License, or (at your option) any later version.
|
|
|
|
This library 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
|
|
Library General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to
|
|
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
* Boston, MA 02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef KFORMULAVIEW_H
|
|
#define KFORMULAVIEW_H
|
|
|
|
#include <qevent.h>
|
|
#include <qobject.h>
|
|
#include <qrect.h>
|
|
|
|
#include "kformuladefs.h"
|
|
#include "contextstyle.h"
|
|
|
|
class QColorGroup;
|
|
|
|
KFORMULA_NAMESPACE_BEGIN
|
|
|
|
class BasicElement;
|
|
class FormulaCursor;
|
|
class FormulaElement;
|
|
class Container;
|
|
|
|
|
|
/**
|
|
* The view that shows the formula. Its main purpose is to handle
|
|
* the cursor. There are methods
|
|
* to move the cursor around. To edit the formula use the document.
|
|
*
|
|
* The view is meant to be easy embeddable into a widget or
|
|
* to be used alone if there is a bigger widget the formula
|
|
* is to be drawn into.
|
|
*/
|
|
class KOFORMULA_EXPORT View : public QObject {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
View(Container*);
|
|
virtual ~View();
|
|
|
|
/**
|
|
* @returns the point inside the formula view where the cursor is.
|
|
*/
|
|
QPoint getCursorPoint() const;
|
|
|
|
/**
|
|
* Puts the widget in read only mode.
|
|
*/
|
|
void setReadOnly(bool ro);
|
|
|
|
void mousePressEvent(QMouseEvent* event);
|
|
void mouseReleaseEvent(QMouseEvent* event);
|
|
void mouseDoubleClickEvent(QMouseEvent* event);
|
|
void mouseMoveEvent(QMouseEvent* event);
|
|
void wheelEvent(QWheelEvent* event);
|
|
|
|
// the mouse event happened at a certain point
|
|
void mousePressEvent( QMouseEvent* event, const PtPoint& pos );
|
|
void mouseReleaseEvent( QMouseEvent* event, const PtPoint& pos );
|
|
void mouseDoubleClickEvent( QMouseEvent* event, const PtPoint& pos );
|
|
void mouseMoveEvent( QMouseEvent* event, const PtPoint& pos );
|
|
void wheelEvent( QWheelEvent* event, const PtPoint& pos );
|
|
|
|
// the mouse event happened at a certain point
|
|
void mousePressEvent( QMouseEvent* event, const LuPixelPoint& pos );
|
|
void mouseReleaseEvent( QMouseEvent* event, const LuPixelPoint& pos );
|
|
void mouseDoubleClickEvent( QMouseEvent* event, const LuPixelPoint& pos );
|
|
void mouseMoveEvent( QMouseEvent* event, const LuPixelPoint& pos );
|
|
void wheelEvent( QWheelEvent* event, const LuPixelPoint& pos );
|
|
|
|
void keyPressEvent(QKeyEvent* event);
|
|
virtual void focusInEvent(QFocusEvent* event);
|
|
virtual void focusOutEvent(QFocusEvent* event);
|
|
|
|
void calcCursor();
|
|
|
|
void draw(QPainter& painter, const QRect& rect, const QColorGroup& cg);
|
|
void draw(QPainter& painter, const QRect& rect);
|
|
|
|
/**
|
|
* The document we show.
|
|
*/
|
|
virtual Container* getDocument() const { return container(); }
|
|
|
|
/**
|
|
* Our cursor.
|
|
*/
|
|
FormulaCursor* getCursor() const { return cursor(); }
|
|
|
|
void setSmallCursor(bool small);
|
|
|
|
// simple cursor movement.
|
|
|
|
void moveLeft( int flag = NormalMovement );
|
|
void moveRight( int flag = NormalMovement );
|
|
void moveUp( int flag = NormalMovement );
|
|
void moveDown( int flag = NormalMovement );
|
|
|
|
void moveHome( int flag = NormalMovement );
|
|
void moveEnd( int flag = NormalMovement );
|
|
|
|
/** @returns whether the cursor is at the first position. */
|
|
bool isHome() const;
|
|
|
|
/** @returns whether the cursor is at the last position. */
|
|
bool isEnd() const;
|
|
|
|
void eraseSelection( Direction direction = beforeCursor );
|
|
void addText( QString str );
|
|
|
|
signals:
|
|
|
|
/**
|
|
* Is emitted every time the cursor might have changed.
|
|
*/
|
|
void cursorChanged(bool visible, bool selecting);
|
|
|
|
public slots:
|
|
|
|
void slotSelectAll();
|
|
|
|
protected slots:
|
|
|
|
/**
|
|
* The cursor has been moved by the container.
|
|
* We need to repaint if it was ours.
|
|
*/
|
|
void slotCursorMoved(FormulaCursor* cursor);
|
|
|
|
/**
|
|
* A new formula has been loaded.
|
|
*/
|
|
void slotFormulaLoaded(FormulaElement*);
|
|
|
|
/**
|
|
* There is an element that will disappear from the tree.
|
|
* our cursor must not be inside it.
|
|
*/
|
|
void slotElementWillVanish(BasicElement*);
|
|
|
|
/**
|
|
* Tell the cursor to change its visibility status
|
|
*/
|
|
void slotBlinkCursor();
|
|
|
|
protected:
|
|
|
|
virtual bool cursorVisible();
|
|
|
|
private:
|
|
|
|
/**
|
|
* Tell everybody that our cursor has changed if so.
|
|
*/
|
|
void emitCursorChanged();
|
|
|
|
bool& cursorHasChanged();
|
|
bool& smallCursor();
|
|
bool& activeCursor();
|
|
Container* container() const;
|
|
void startCursorTimer();
|
|
void stopCursorTimer();
|
|
const ContextStyle& contextStyle() const;
|
|
FormulaCursor* cursor() const;
|
|
|
|
struct View_Impl;
|
|
View_Impl* impl;
|
|
};
|
|
|
|
KFORMULA_NAMESPACE_END
|
|
|
|
#endif // KFORMULAVIEW_H
|