#ifndef DVTEXTEDIT_H #define DVTEXTEDIT_H #ifdef WIN32 #pragma warning(disable : 4251) #endif #include "tcommon.h" #include "tpixel.h" #include #include #include class QLabel; class QLineEdit; class QToolBar; class QAction; class QActionGroup; class QFontComboBox; class QComboBox; class QImage; #undef DVAPI #undef DVVAR #ifdef TOONZQT_EXPORTS #define DVAPI DV_EXPORT_API #define DVVAR DV_EXPORT_VAR #else #define DVAPI DV_IMPORT_API #define DVVAR DV_IMPORT_VAR #endif //============================================================================= namespace DVGui { class ColorField; //----------------------------------------------------------------------------- class DvMiniToolBar : public QFrame { QPoint m_dragPos; public: DvMiniToolBar(QWidget *parent = 0); ~DvMiniToolBar(); protected: void mousePressEvent(QMouseEvent *); void mouseMoveEvent(QMouseEvent *); }; //----------------------------------------------------------------------------- class DvTextEditButton : public QWidget { Q_OBJECT public: DvTextEditButton(QWidget *parent = 0); ~DvTextEditButton(); protected: void paintEvent(QPaintEvent *); void mousePressEvent(QMouseEvent *); signals: void clicked(); }; //----------------------------------------------------------------------------- class DVAPI DvTextEdit : public QTextEdit { Q_OBJECT bool m_paintMode; bool m_miniToolBarEnabled; QPoint m_mousePos; QComboBox *m_sizeComboBox; QFontComboBox *m_fontComboBox; QActionGroup *m_alignActionGroup; QAction *m_boldAction, *m_italicAction, *m_underlineAction, *m_alignLeftAction, *m_alignRightAction, *m_alignCenterAction; ColorField *m_colorField; DvMiniToolBar *m_miniToolBar; DvTextEditButton *m_button; public: DvTextEdit(QWidget *parent = 0); ~DvTextEdit(); void setMiniToolBarEnabled(bool value) { m_miniToolBarEnabled = value; } void changeFont(const QFont &f); protected: void createActions(); void createMiniToolBar(); void showMiniToolBar(const QPoint &pos); void hideMiniToolBar(); void mousePressEvent(QMouseEvent *); void mouseMoveEvent(QMouseEvent *); void mouseReleaseEvent(QMouseEvent *); void wheelEvent(QWheelEvent *); void focusInEvent(QFocusEvent *); void focusOutEvent(QFocusEvent *); void dragMoveEvent(QDragMoveEvent *); private: void fontChanged(const QFont &f); void colorChanged(const QColor &c); void alignmentChanged(Qt::Alignment a); void mergeFormatOnWordOrSelection(const QTextCharFormat &format); protected slots: void onCurrentCharFormatChanged(const QTextCharFormat &format); void onCursorPositionChanged(); void onSelectionChanged(); void onShowMiniToolBarClicked(); void setTextFamily(const QString &); void setTextColor(const TPixel32 &color, bool isDragging); void setTextBold(); void setTextItalic(); void setTextUnderline(); void setTextSize(const QString &p); void setTextAlign(QAction *); signals: void focusIn(); }; //----------------------------------------------------------------------------- } //namespace DVGui //----------------------------------------------------------------------------- #endif //DVTEXTEDIT_H