if (!ksq.isEmpty()) {\r
foreach (QObject *obj, getMainWnd()->children()) {\r
QAction *action = qobject_cast<QAction*>(obj);\r
- if (action) {\r
+ if (action && action->isEnabled()) {\r
foreach (const QKeySequence &keySeq, action->shortcuts()) {\r
if (ksq == keySeq.toString()) {\r
qDebug() << "emit " << ksq << " " << action->objectName();\r
m_focusedView = QApplication::focusWidget();\r
\r
setUpdatesEnabled(false);\r
+\r
+ foreach (QObject *obj, this->children()) {\r
+ QAction *action = qobject_cast<QAction*>(obj);\r
+ if (action) {\r
+ if (action->objectName() == "help_About" ||\r
+ action->objectName() == "check_Update" ||\r
+ action->objectName() == "copy_Fullpath" ||\r
+ action->objectName() == "copy_Filename" ||\r
+ action->objectName() == "action_Quit" ||\r
+ action->objectName() == "action_Setting")\r
+ {\r
+ continue;\r
+ }\r
+ qDebug() << action->objectName();\r
+ action->setEnabled(false);\r
+ }\r
+ }\r
+\r
+ ui->menu_File->setVisible(false);\r
ui->splitter->setVisible(false);\r
ui->plainTextEdit->setVisible(true);\r
ui->plainTextEdit->setFocus();\r
+\r
setUpdatesEnabled(true);\r
\r
QFile file(info.absoluteFilePath());\r
- if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {\r
- QTextStream ts(&file);\r
- ui->plainTextEdit->setPlainText(ts.readAll());\r
+ if (file.open(QIODevice::ReadOnly)) {\r
+ ui->plainTextEdit->setSource(file.readAll());\r
}\r
}\r
\r
void MainWindow::viewFinish(QWidget *sender)\r
{\r
setUpdatesEnabled(false);\r
+\r
+ foreach (QObject *obj, this->children()) {\r
+ QAction *action = qobject_cast<QAction*>(obj);\r
+ if (action) {\r
+ action->setEnabled(true);\r
+ }\r
+ }\r
+\r
sender->setVisible(false);\r
ui->splitter->setVisible(true);\r
m_focusedView->setFocus();\r
+\r
setUpdatesEnabled(true);\r
}\r
\r
#include "simpletextview.h"
#include <QDebug>
+#include <QMenu>
#include <QSettings>
+#include <QTextCodec>
SimpleTextView::SimpleTextView(QWidget *parent) :
- QPlainTextEdit(parent)
+ QPlainTextEdit(parent),
+ m_convEUC(NULL),
+ m_convJIS(NULL),
+ m_convSJIS(NULL),
+ m_convUTF8(NULL),
+ m_convUTF16BE(NULL),
+ m_convUTF16LE(NULL)
{
setReadOnly(true);
palette.setColor(QPalette::Text,
settings.value(IniKey_ViewColorFgNormal).value<QColor>());
setPalette(palette);
+
+ QFont font = this->font();
+#ifdef Q_OS_MAC
+ font.setFamily("Menlo");
+#else
+ font.setFamily("MS ゴシック");
+#endif
+ setFont(font);
+
+ setContextMenuPolicy(Qt::DefaultContextMenu);
+ m_convEUC = new QAction(tr("EUC-JPで再読込"), this);
+ m_convJIS = new QAction(tr("ISO 2022-JP(JIS)で再読込"), this);
+ m_convSJIS = new QAction(tr("Shift-JISで再読込"), this);
+ m_convUTF8 = new QAction(tr("UTF-8で再読込"), this);
+ m_convUTF16BE = new QAction(tr("UTF-16BEで再読込"), this);
+ m_convUTF16LE = new QAction(tr("UTF-16LEで再読込"), this);
+
+ connect(m_convSJIS, SIGNAL(triggered()), this, SLOT(convertFromSJIS()));
+}
+
+void SimpleTextView::convertFromSJIS()
+{
+ QTextCodec *codec = QTextCodec::codecForName("Shift-JIS");
+ setPlainText(codec->toUnicode(m_source));
}
+void SimpleTextView::setSource(const QByteArray &source)
+{
+ m_source = source;
+ convertFromSJIS();
+}
void SimpleTextView::keyPressEvent(QKeyEvent *event)
{
}
QPlainTextEdit::keyPressEvent(event);
}
+
+
+void SimpleTextView::contextMenuEvent(QContextMenuEvent *event)
+{
+ qDebug() << "contextMenuEvent();";
+ QMenu menu(this);
+ menu.addAction(m_convEUC);
+ menu.addAction(m_convJIS);
+ menu.addAction(m_convSJIS);
+ menu.addAction(m_convUTF8);
+ menu.addAction(m_convUTF16BE);
+ menu.addAction(m_convUTF16LE);
+ menu.exec(event->globalPos());
+}
public:
explicit SimpleTextView(QWidget *parent = 0);
+ void setSource(const QByteArray &source);
+
+private:
+ QAction *m_convEUC;
+ QAction *m_convJIS;
+ QAction *m_convSJIS;
+ QAction *m_convUTF8;
+ QAction *m_convUTF16BE;
+ QAction *m_convUTF16LE;
+ QByteArray m_source;
+
signals:
void viewFinished(QWidget *sender);
public slots:
+private slots:
+ void convertFromSJIS();
// QWidget interface
protected:
void keyPressEvent(QKeyEvent *event);
+ void contextMenuEvent(QContextMenuEvent *event);
};
#endif // SIMPLETEXTVIEW_H