160 lines
3.1 KiB
C++
160 lines
3.1 KiB
C++
|
|
|
|
#ifndef DVTEXTEDIT_H
|
|
#define DVTEXTEDIT_H
|
|
|
|
#ifdef WIN32
|
|
#pragma warning(disable : 4251)
|
|
#endif
|
|
|
|
#include "tcommon.h"
|
|
#include "tpixel.h"
|
|
|
|
#include <QWidget>
|
|
#include <QString>
|
|
#include <QTextEdit>
|
|
|
|
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
|