Lines 38-44
Link Here
|
38 |
#include <QMenuBar> |
38 |
#include <QMenuBar> |
39 |
#include <QScreen> |
39 |
#include <QScreen> |
40 |
#include <QStatusBar> |
40 |
#include <QStatusBar> |
41 |
#include <QtCore/QTextCodec> |
41 |
#include <QtCore5Compat/QTextCodec> |
42 |
#include <QtCore/QProcess> |
42 |
#include <QtCore/QProcess> |
43 |
#include <QtCore/QSettings> |
43 |
#include <QtCore/QSettings> |
44 |
#include <QtCore/QTextStream> |
44 |
#include <QtCore/QTextStream> |
Lines 82-88
Link Here
|
82 |
|
82 |
|
83 |
QList<MainWindow *> MainWindow::s_mainWindowList; |
83 |
QList<MainWindow *> MainWindow::s_mainWindowList; |
84 |
|
84 |
|
85 |
MainWindow::MainWindow() |
85 |
MainWindow::MainWindow() : m_doOverrideEncoder(false), m_doOverrideDecoder(false) |
86 |
{ |
86 |
{ |
87 |
// QTime t = QTime::currentTime(); |
87 |
// QTime t = QTime::currentTime(); |
88 |
#ifndef KTIKZ_USE_KDE |
88 |
#ifndef KTIKZ_USE_KDE |
Lines 140-146
MainWindow::MainWindow()
Link Here
|
140 |
QWidget *mainWidget = new QWidget(this); |
140 |
QWidget *mainWidget = new QWidget(this); |
141 |
QVBoxLayout *mainLayout = new QVBoxLayout(mainWidget); |
141 |
QVBoxLayout *mainLayout = new QVBoxLayout(mainWidget); |
142 |
mainLayout->setSpacing(0); |
142 |
mainLayout->setSpacing(0); |
143 |
mainLayout->setMargin(0); |
143 |
mainLayout->setContentsMargins(0, 0, 0, 0); |
144 |
mainLayout->addWidget(m_tikzPreviewController->templateWidget()); |
144 |
mainLayout->addWidget(m_tikzPreviewController->templateWidget()); |
145 |
mainLayout->addWidget(m_tikzEditorView); |
145 |
mainLayout->addWidget(m_tikzEditorView); |
146 |
|
146 |
|
Lines 933-944
void MainWindow::applySettings()
Link Here
|
933 |
updateCompleter(); |
933 |
updateCompleter(); |
934 |
settings.beginGroup(QLatin1String("encoding")); |
934 |
settings.beginGroup(QLatin1String("encoding")); |
935 |
QVariant qv = settings.value(QLatin1String("default")); |
935 |
QVariant qv = settings.value(QLatin1String("default")); |
936 |
setCurrentEncoding(qv.isNull() ? QTextCodec::codecForLocale() |
936 |
if (qv.isNull()) |
937 |
: QTextCodec::codecForName(qv.toByteArray())); |
937 |
{ |
|
|
938 |
setCurrentEncoding( QStringConverter::System ) ; |
939 |
} else { |
940 |
std::optional<QStringConverter::Encoding> currentEncoding = QStringConverter::encodingForName(qv.toString().toStdString().c_str()); |
941 |
setCurrentEncoding( currentEncoding.value_or( QStringConverter::System ) ) ; |
942 |
} |
943 |
|
938 |
qv = settings.value(QLatin1String("encoder")); |
944 |
qv = settings.value(QLatin1String("encoder")); |
939 |
m_overrideEncoder = qv.isNull() ? NULL : QTextCodec::codecForName(qv.toByteArray()); |
945 |
if (qv.isNull()) |
|
|
946 |
{ |
947 |
m_doOverrideEncoder = false; |
948 |
} else { |
949 |
std::optional<QStringConverter::Encoding> overrideEncoding = QStringConverter::encodingForName(qv.toString().toStdString().c_str()); |
950 |
m_doOverrideEncoder = overrideEncoding.has_value(); |
951 |
m_overrideEncoder = overrideEncoding.value_or( QStringConverter::System ) ; |
952 |
} |
940 |
qv = settings.value(QLatin1String("decoder")); |
953 |
qv = settings.value(QLatin1String("decoder")); |
941 |
m_overrideDecoder = qv.isNull() ? NULL : QTextCodec::codecForName(qv.toByteArray()); |
954 |
if (qv.isNull()) |
|
|
955 |
{ |
956 |
m_doOverrideDecoder = false; |
957 |
} else { |
958 |
std::optional<QStringConverter::Encoding> overrideDecoding = QStringConverter::encodingForName(qv.toString().toStdString().c_str()); |
959 |
m_doOverrideDecoder = overrideDecoding.has_value(); |
960 |
m_overrideDecoder = overrideDecoding.value_or( QStringConverter::System ) ; |
961 |
} |
942 |
m_encoderBom = settings.value(QLatin1String("bom"), true).toBool(); |
962 |
m_encoderBom = settings.value(QLatin1String("bom"), true).toBool(); |
943 |
settings.endGroup(); |
963 |
settings.endGroup(); |
944 |
|
964 |
|
Lines 1069-1075
void MainWindow::loadUrl(const QUrl &url)
Link Here
|
1069 |
QApplication::setOverrideCursor(Qt::WaitCursor); |
1089 |
QApplication::setOverrideCursor(Qt::WaitCursor); |
1070 |
this->configureStreamDecoding(in); |
1090 |
this->configureStreamDecoding(in); |
1071 |
m_tikzQtEditorView->editor()->setPlainText(in.readAll()); |
1091 |
m_tikzQtEditorView->editor()->setPlainText(in.readAll()); |
1072 |
setCurrentEncoding(in.codec()); |
1092 |
setCurrentEncoding(in.encoding()); |
1073 |
} |
1093 |
} |
1074 |
|
1094 |
|
1075 |
QApplication::restoreOverrideCursor(); |
1095 |
QApplication::restoreOverrideCursor(); |
Lines 1131-1137
bool MainWindow::saveUrl(const QUrl &url)
Link Here
|
1131 |
return true; |
1151 |
return true; |
1132 |
} |
1152 |
} |
1133 |
|
1153 |
|
1134 |
void MainWindow::setCurrentEncoding(QTextCodec *codec) |
1154 |
void MainWindow::setCurrentEncoding(QStringConverter::Encoding codec ) |
1135 |
{ |
1155 |
{ |
1136 |
m_currentEncoding = codec; |
1156 |
m_currentEncoding = codec; |
1137 |
// TODO: implement user warning and suggestion to reload the file. |
1157 |
// TODO: implement user warning and suggestion to reload the file. |
Lines 1160-1186
QString MainWindow::strippedName(const QUrl &url) const
Link Here
|
1160 |
return (fileName.isEmpty()) ? QLatin1String("untitled.txt") : fileName; |
1180 |
return (fileName.isEmpty()) ? QLatin1String("untitled.txt") : fileName; |
1161 |
} |
1181 |
} |
1162 |
|
1182 |
|
1163 |
QTextCodec *MainWindow::getEncoder() const |
1183 |
QStringConverter::Encoding MainWindow::getEncoder() const |
1164 |
{ |
1184 |
{ |
1165 |
return this->m_overrideEncoder ? this->m_overrideEncoder : this->m_currentEncoding; |
1185 |
return this->m_doOverrideEncoder ? this->m_overrideEncoder : this->m_currentEncoding; |
1166 |
} |
1186 |
} |
1167 |
|
1187 |
|
1168 |
void MainWindow::configureStreamEncoding(QTextStream &textStream) |
1188 |
void MainWindow::configureStreamEncoding(QTextStream &textStream) |
1169 |
{ |
1189 |
{ |
1170 |
QTextCodec *encoder = this->getEncoder(); |
1190 |
textStream.setEncoding(this->getEncoder()); |
1171 |
if (Q_LIKELY(encoder)) // should be true |
|
|
1172 |
textStream.setCodec(encoder); |
1173 |
else |
1174 |
qWarning("The encoder variable should not be null."); |
1175 |
|
1191 |
|
1176 |
textStream.setGenerateByteOrderMark(this->m_encoderBom); |
1192 |
textStream.setGenerateByteOrderMark(this->m_encoderBom); |
1177 |
} |
1193 |
} |
1178 |
|
1194 |
|
1179 |
void MainWindow::configureStreamDecoding(QTextStream &textStream) |
1195 |
void MainWindow::configureStreamDecoding(QTextStream &textStream) |
1180 |
{ |
1196 |
{ |
1181 |
if (m_overrideDecoder) { |
1197 |
if(m_doOverrideDecoder) |
1182 |
textStream.setCodec(m_overrideDecoder); |
1198 |
textStream.setEncoding(m_overrideDecoder); |
1183 |
} |
|
|
1184 |
textStream.setAutoDetectUnicode(true); |
1199 |
textStream.setAutoDetectUnicode(true); |
1185 |
} |
1200 |
} |
1186 |
|
1201 |
|