tahoma2d/toonz/sources/include/toonzqt/dvtextedit.h

153 lines
3.3 KiB
C
Raw Normal View History

2016-05-17 03:04:11 +12:00
#pragma once
2016-03-19 06:57:51 +13:00
#ifndef DVTEXTEDIT_H
#define DVTEXTEDIT_H
#ifdef _MSC_VER
2016-03-19 06:57:51 +13:00
#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
//=============================================================================
2016-06-15 18:43:10 +12:00
namespace DVGui {
2016-03-19 06:57:51 +13:00
class ColorField;
//-----------------------------------------------------------------------------
class DvMiniToolBar final : public QFrame {
2016-06-15 18:43:10 +12:00
QPoint m_dragPos;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
DvMiniToolBar(QWidget *parent = 0);
~DvMiniToolBar();
2016-03-19 06:57:51 +13:00
protected:
2016-06-19 20:06:29 +12:00
void mousePressEvent(QMouseEvent *) override;
void mouseMoveEvent(QMouseEvent *) override;
2016-03-19 06:57:51 +13:00
};
//-----------------------------------------------------------------------------
class DvTextEditButton final : public QWidget {
2016-06-15 18:43:10 +12:00
Q_OBJECT
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
DvTextEditButton(QWidget *parent = 0);
~DvTextEditButton();
2016-03-19 06:57:51 +13:00
protected:
2016-06-19 20:06:29 +12:00
void paintEvent(QPaintEvent *) override;
void mousePressEvent(QMouseEvent *) override;
2016-03-19 06:57:51 +13:00
signals:
2016-06-15 18:43:10 +12:00
void clicked();
2016-03-19 06:57:51 +13:00
};
//-----------------------------------------------------------------------------
class DVAPI DvTextEdit final : public QTextEdit {
2016-06-15 18:43:10 +12:00
Q_OBJECT
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
bool m_paintMode;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
bool m_miniToolBarEnabled;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
QPoint m_mousePos;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
QComboBox *m_sizeComboBox;
QFontComboBox *m_fontComboBox;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
QActionGroup *m_alignActionGroup;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
QAction *m_boldAction, *m_italicAction, *m_underlineAction,
*m_alignLeftAction, *m_alignRightAction, *m_alignCenterAction;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
ColorField *m_colorField;
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
DvMiniToolBar *m_miniToolBar;
DvTextEditButton *m_button;
2016-03-19 06:57:51 +13:00
public:
2016-06-15 18:43:10 +12:00
DvTextEdit(QWidget *parent = 0);
~DvTextEdit();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void setMiniToolBarEnabled(bool value) { m_miniToolBarEnabled = value; }
void changeFont(const QFont &f);
2016-03-19 06:57:51 +13:00
protected:
2016-06-15 18:43:10 +12:00
void createActions();
void createMiniToolBar();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void showMiniToolBar(const QPoint &pos);
void hideMiniToolBar();
2016-03-19 06:57:51 +13:00
2016-06-19 20:06:29 +12:00
void mousePressEvent(QMouseEvent *) override;
void mouseMoveEvent(QMouseEvent *) override;
void mouseReleaseEvent(QMouseEvent *) override;
void wheelEvent(QWheelEvent *) override;
2016-03-19 06:57:51 +13:00
2016-06-19 20:06:29 +12:00
void focusInEvent(QFocusEvent *) override;
void focusOutEvent(QFocusEvent *) override;
2016-03-19 06:57:51 +13:00
2016-06-19 20:06:29 +12:00
void dragMoveEvent(QDragMoveEvent *) override;
2016-03-19 06:57:51 +13:00
private:
2016-06-15 18:43:10 +12:00
void fontChanged(const QFont &f);
void colorChanged(const QColor &c);
void alignmentChanged(Qt::Alignment a);
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void mergeFormatOnWordOrSelection(const QTextCharFormat &format);
2016-03-19 06:57:51 +13:00
protected slots:
2016-06-15 18:43:10 +12:00
void onCurrentCharFormatChanged(const QTextCharFormat &format);
void onCursorPositionChanged();
void onSelectionChanged();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
void onShowMiniToolBarClicked();
2016-03-19 06:57:51 +13:00
2016-06-15 18:43:10 +12:00
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 *);
2016-03-19 06:57:51 +13:00
signals:
2016-06-15 18:43:10 +12:00
void focusIn();
2016-03-19 06:57:51 +13:00
};
//-----------------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
} // namespace DVGui
2016-03-19 06:57:51 +13:00
//-----------------------------------------------------------------------------
2016-06-15 18:43:10 +12:00
#endif // DVTEXTEDIT_H