2 #include "simpletextview.h"
3 #include "mainwindow.h"
11 SimpleTextView::SimpleTextView(QWidget *parent) :
12 QPlainTextEdit(parent),
23 QPalette palette = this->palette();
24 palette.setColor(QPalette::Base,
25 settings.value(IniKey_ViewColorBgNormal).value<QColor>());
26 palette.setColor(QPalette::Text,
27 settings.value(IniKey_ViewColorFgNormal).value<QColor>());
30 QFont font = this->font();
32 font.setFamily("Menlo");
34 font.setFamily("MS ゴシック");
38 setContextMenuPolicy(Qt::DefaultContextMenu);
39 m_convEUC = new QAction(tr("EUC-JPで再読込"), this);
40 m_convJIS = new QAction(tr("ISO 2022-JP(JIS)で再読込"), this);
41 m_convSJIS = new QAction(tr("Shift-JISで再読込"), this);
42 m_convUTF8 = new QAction(tr("UTF-8で再読込"), this);
43 m_convUTF16BE = new QAction(tr("UTF-16BEで再読込"), this);
44 m_convUTF16LE = new QAction(tr("UTF-16LEで再読込"), this);
46 m_convEUC->setShortcut(QKeySequence("E"));
47 m_convJIS->setShortcut(QKeySequence("J"));
48 m_convSJIS->setShortcut(QKeySequence("S"));
49 m_convUTF8->setShortcut(QKeySequence("U"));
50 m_convUTF16BE->setShortcut(QKeySequence("B"));
51 m_convUTF16LE->setShortcut(QKeySequence("L"));
53 connect(m_convEUC, SIGNAL(triggered()), this, SLOT(convertFromEUC()));
54 connect(m_convJIS, SIGNAL(triggered()), this, SLOT(convertFromJIS()));
55 connect(m_convSJIS, SIGNAL(triggered()), this, SLOT(convertFromSJIS()));
56 connect(m_convUTF8, SIGNAL(triggered()), this, SLOT(convertFromUTF8()));
57 connect(m_convUTF16BE, SIGNAL(triggered()), this, SLOT(convertFromUTF16BE()));
58 connect(m_convUTF16LE, SIGNAL(triggered()), this, SLOT(convertFromUTF16LE()));
61 void SimpleTextView::setSource(const QByteArray &source)
71 void SimpleTextView::convertFromEUC()
73 QTextCodec *codec = QTextCodec::codecForName("EUC-JP");
74 setPlainText(codec->toUnicode(m_source));
77 void SimpleTextView::convertFromJIS()
79 QTextCodec *codec = QTextCodec::codecForName("ISO 2022-JP");
80 setPlainText(codec->toUnicode(m_source));
83 void SimpleTextView::convertFromSJIS()
85 QTextCodec *codec = QTextCodec::codecForName("Shift-JIS");
86 setPlainText(codec->toUnicode(m_source));
89 void SimpleTextView::convertFromUTF8()
91 QTextCodec *codec = QTextCodec::codecForName("UTF-8");
92 setPlainText(codec->toUnicode(m_source));
95 void SimpleTextView::convertFromUTF16BE()
97 QTextCodec *codec = QTextCodec::codecForName("UTF-16BE");
98 setPlainText(codec->toUnicode(m_source));
101 void SimpleTextView::convertFromUTF16LE()
103 QTextCodec *codec = QTextCodec::codecForName("UTF-16LE");
104 setPlainText(codec->toUnicode(m_source));
107 void SimpleTextView::keyPressEvent(QKeyEvent *event)
109 QString modifier = QString::null;
110 if (event->modifiers() & Qt::ShiftModifier) { modifier += "Shift+"; }
111 if (event->modifiers() & Qt::ControlModifier) { modifier += "Ctrl+"; }
112 if (event->modifiers() & Qt::AltModifier) { modifier += "Alt+"; }
113 if (event->modifiers() & Qt::MetaModifier) { modifier += "Meta+"; }
115 QString key = QKeySequence(event->key()).toString();
116 QString ksq = QKeySequence(modifier + key).toString();
118 if (ksq == "Return" || ksq == "Backspace" || ksq == "W") {
119 emit viewFinished(this);
124 if (!ksq.isEmpty()) {
125 foreach (QObject *obj, this->children()) {
126 QAction *action = qobject_cast<QAction*>(obj);
127 if (action && action->isEnabled()) {
128 foreach (const QKeySequence &keySeq, action->shortcuts()) {
129 if (ksq == keySeq.toString()) {
130 qDebug() << "emit " << ksq << " " << action->objectName();
131 emit action->triggered();
139 foreach (QObject *obj, getMainWnd()->children()) {
140 QAction *action = qobject_cast<QAction*>(obj);
141 if (action && action->isEnabled()) {
142 foreach (const QKeySequence &keySeq, action->shortcuts()) {
143 if (ksq == keySeq.toString()) {
144 qDebug() << "emit " << ksq << " " << action->objectName();
145 emit action->triggered();
154 if (ksq != "Down" && ksq != "Up") {
158 QPlainTextEdit::keyPressEvent(event);
162 void SimpleTextView::contextMenuEvent(QContextMenuEvent *event)
164 qDebug() << "contextMenuEvent();";
166 menu.addAction(m_convEUC);
167 menu.addAction(m_convJIS);
168 menu.addAction(m_convSJIS);
169 menu.addAction(m_convUTF8);
170 menu.addAction(m_convUTF16BE);
171 menu.addAction(m_convUTF16LE);
172 menu.exec(event->globalPos());