#ifndef DOCUMENTITEM_H #define DOCUMENTITEM_H #include #include class DocumentBuffer; class DocumentItem : public QGraphicsObject { Q_OBJECT public: DocumentItem(int lineCharacterCount, int lineCount, QGraphicsItem *parent = 0); ~DocumentItem(); void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0); QRectF boundingRect() const; const DocumentBuffer& buffer() const; void setBuffer(DocumentBuffer *buffer); bool isEditable() const; void setEditable(bool on); void setText(const QString &text); void scroll(int lines); QPair cursorLocation() const; void setCursorLocation(const QPair &location); int scrollTop() const; void setScrollTop(int top); protected: void keyPressEvent(QKeyEvent *event); void wheelEvent(QGraphicsSceneWheelEvent *event); private: enum { CHARACTER_WIDTH = 25, CHARACTER_HEIGHT = 40 }; DocumentBuffer *m_buffer; int m_lineCharacterCount; int m_lineCount; int m_currentRow; int m_currentCol; int m_scrollTop; bool m_editable; }; #endif // DOCUMENTITEM_H