2 #include "simpletextview.h"
3 #include "mainwindow.h"
11 SimpleTextView::SimpleTextView(QWidget *parent) :
12 QPlainTextEdit(parent),
24 QPalette palette = this->palette();
25 palette.setColor(QPalette::Base,
26 settings.value(IniKey_ViewColorBgNormal).value<QColor>());
27 palette.setColor(QPalette::Text,
28 settings.value(IniKey_ViewColorFgNormal).value<QColor>());
31 QFont font = this->font();
33 font.setFamily("Menlo");
35 font.setFamily("MS ゴシック");
39 setContextMenuPolicy(Qt::DefaultContextMenu);
40 m_convEUC = new QAction(tr("EUC-JPで再読込"), this);
41 m_convJIS = new QAction(tr("ISO 2022-JP(JIS)で再読込"), this);
42 m_convSJIS = new QAction(tr("Shift-JISで再読込"), this);
43 m_convUTF8 = new QAction(tr("UTF-8で再読込"), this);
44 m_convUTF16BE = new QAction(tr("UTF-16BEで再読込"), this);
45 m_convUTF16LE = new QAction(tr("UTF-16LEで再読込"), this);
46 m_back = new QAction(tr("戻る"), this);
48 m_convEUC->setShortcut(QKeySequence("E"));
49 m_convJIS->setShortcut(QKeySequence("J"));
50 m_convSJIS->setShortcut(QKeySequence("S"));
51 m_convUTF8->setShortcut(QKeySequence("U"));
52 m_convUTF16BE->setShortcut(QKeySequence("B"));
53 m_convUTF16LE->setShortcut(QKeySequence("L"));
54 m_back->setShortcut(QKeySequence("Return"));
56 connect(m_convEUC, SIGNAL(triggered()), this, SLOT(convertFromEUC()));
57 connect(m_convJIS, SIGNAL(triggered()), this, SLOT(convertFromJIS()));
58 connect(m_convSJIS, SIGNAL(triggered()), this, SLOT(convertFromSJIS()));
59 connect(m_convUTF8, SIGNAL(triggered()), this, SLOT(convertFromUTF8()));
60 connect(m_convUTF16BE, SIGNAL(triggered()), this, SLOT(convertFromUTF16BE()));
61 connect(m_convUTF16LE, SIGNAL(triggered()), this, SLOT(convertFromUTF16LE()));
62 connect(m_back, SIGNAL(triggered()), this, SLOT(back()));
65 void SimpleTextView::setSource(const QByteArray &source)
75 void SimpleTextView::convertFromEUC()
77 QTextCodec *codec = QTextCodec::codecForName("EUC-JP");
78 setPlainText(codec->toUnicode(m_source));
81 void SimpleTextView::convertFromJIS()
83 QTextCodec *codec = QTextCodec::codecForName("ISO 2022-JP");
84 setPlainText(codec->toUnicode(m_source));
87 void SimpleTextView::convertFromSJIS()
89 QTextCodec *codec = QTextCodec::codecForName("Shift-JIS");
90 setPlainText(codec->toUnicode(m_source));
93 void SimpleTextView::convertFromUTF8()
95 QTextCodec *codec = QTextCodec::codecForName("UTF-8");
96 setPlainText(codec->toUnicode(m_source));
99 void SimpleTextView::convertFromUTF16BE()
101 QTextCodec *codec = QTextCodec::codecForName("UTF-16BE");
102 setPlainText(codec->toUnicode(m_source));
105 void SimpleTextView::convertFromUTF16LE()
107 QTextCodec *codec = QTextCodec::codecForName("UTF-16LE");
108 setPlainText(codec->toUnicode(m_source));
111 void SimpleTextView::back()
113 emit viewFinished(this);
116 void SimpleTextView::keyPressEvent(QKeyEvent *event)
118 QString modifier = QString::null;
119 if (event->modifiers() & Qt::ShiftModifier) { modifier += "Shift+"; }
120 if (event->modifiers() & Qt::ControlModifier) { modifier += "Ctrl+"; }
121 if (event->modifiers() & Qt::AltModifier) { modifier += "Alt+"; }
122 if (event->modifiers() & Qt::MetaModifier) { modifier += "Meta+"; }
124 QString key = QKeySequence(event->key()).toString();
125 QString ksq = QKeySequence(modifier + key).toString();
127 if (ksq == "Return" || ksq == "Backspace" || ksq == "W") {
128 emit viewFinished(this);
133 if (!ksq.isEmpty()) {
134 foreach (QObject *obj, this->children()) {
135 QAction *action = qobject_cast<QAction*>(obj);
136 if (action && action->isEnabled()) {
137 foreach (const QKeySequence &keySeq, action->shortcuts()) {
138 if (ksq == keySeq.toString()) {
139 qDebug() << "emit " << ksq << " " << action->objectName();
140 emit action->triggered();
148 foreach (QObject *obj, getMainWnd()->children()) {
149 QAction *action = qobject_cast<QAction*>(obj);
150 if (action && action->isEnabled()) {
151 foreach (const QKeySequence &keySeq, action->shortcuts()) {
152 if (ksq == keySeq.toString()) {
153 qDebug() << "emit " << ksq << " " << action->objectName();
154 emit action->triggered();
163 if (ksq != "Down" && ksq != "Up") {
167 QPlainTextEdit::keyPressEvent(event);
171 void SimpleTextView::contextMenuEvent(QContextMenuEvent *event)
173 qDebug() << "contextMenuEvent();";
175 menu.addAction(m_convEUC);
176 menu.addAction(m_convJIS);
177 menu.addAction(m_convSJIS);
178 menu.addAction(m_convUTF8);
179 menu.addAction(m_convUTF16BE);
180 menu.addAction(m_convUTF16LE);
181 menu.addAction(m_back);
182 menu.exec(event->globalPos());