9 #include <QPlainTextEdit>
22 class QInputMethodEvent;
33 * \brief コンテンツに応じて大きさを変えるテキスト編集パネルです。
35 class TextPanel : public QPlainTextEdit
37 friend class TextArea;
40 explicit TextPanel(QWidget *parent);
42 void set_string(QString const &string_);
44 TextArea* parent_text_area();
45 QSize contents_size() const;
48 T* user_data() { return static_cast<T*>(m_user_data.get()); }
49 void set_user_data(UserData::pointer data);
51 QSize sizeHint() const;
58 void focusInEvent(QFocusEvent *ev);
59 void focusOutEvent(QFocusEvent *ev);
60 void hideEvent(QHideEvent *ev);
61 void inputMethodEvent(QInputMethodEvent *ev);
62 QVariant inputMethodQuery(Qt::InputMethodQuery property) const;
63 void keyPressEvent(QKeyEvent *ev);
64 void mousePressEvent(QMouseEvent *ev);
65 void mouseReleaseEvent(QMouseEvent *ev);
66 void showEvent(QShowEvent *ev);
68 virtual void do_click(QPoint const &pos);
69 virtual void do_focusin();
70 virtual void do_focusout();
73 int m_contents_offset;
74 UserData::pointer m_user_data;
77 QPoint m_mouse_press_pos;
81 * \brief TextPanelをリスト状に束ねたウィジェットです。
83 class TextArea : public QWidget
85 friend class TextPanel;
89 typedef QList<TextPanel*>::iterator iterator;
92 explicit TextArea(QWidget *parent = 0);
94 TextWidget* parent_text_widget();
97 TextPanel* append(TextPanel *panel);
99 T* append() { return static_cast<T*>(append(new T(this))); }
101 //TextPanel* current_panel();
102 TextPanel* find_previous_panel(TextPanel *panel);
103 TextPanel* find_next_panel(TextPanel *panel);
104 TextPanel* find_previous_visible_panel(TextPanel *panel);
105 TextPanel* find_next_visible_panel(TextPanel *panel);
110 void focus_previous(TextPanel *panel);
111 void focus_next(TextPanel *panel);
114 void focusInChild(TextPanel *new_, TextPanel *old_);
117 void resizeEvent(QResizeEvent *ev);
119 void ensure_visible(TextPanel *panel);
120 void perform_resize();
122 virtual void do_focusin_child(TextPanel *panel);
123 virtual void do_focusout_child(TextPanel *panel);
126 QList<TextPanel*> m_panels;
127 TextPanel *m_current_panel;
131 * \brief TextAreaにスクロールバーをつけたウィジェットです。
133 * スクロールバー以外の機能を持たないため、ほとんどの処理はTextAreaに対して
136 class TextWidget : public QScrollArea
138 friend class TextArea;
141 explicit TextWidget(QWidget *parent = 0);
143 TextArea* text_area();
149 #endif // TEXTWIDGET_H