aboutsummaryrefslogtreecommitdiffstats
path: root/src/ui/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/widgets')
-rw-r--r--src/ui/widgets/EditorPage.cpp154
-rw-r--r--src/ui/widgets/InfoBoardWidget.h2
-rw-r--r--src/ui/widgets/PlainTextEditorPage.cpp257
-rw-r--r--src/ui/widgets/PlainTextEditorPage.h (renamed from src/ui/widgets/EditorPage.h)27
-rw-r--r--src/ui/widgets/TextEdit.cpp60
-rw-r--r--src/ui/widgets/TextEdit.h6
6 files changed, 303 insertions, 203 deletions
diff --git a/src/ui/widgets/EditorPage.cpp b/src/ui/widgets/EditorPage.cpp
deleted file mode 100644
index 8c26fe71..00000000
--- a/src/ui/widgets/EditorPage.cpp
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * This file is part of GpgFrontend.
- *
- * GpgFrontend is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Foobar is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Foobar. If not, see <https://www.gnu.org/licenses/>.
- *
- * The initial version of the source code is inherited from gpg4usb-team.
- * Their source code version also complies with GNU General Public License.
- *
- * The source code version of this software was modified and released
- * by Saturneric<[email protected]><[email protected]> starting on May 12, 2021.
- *
- */
-
-#include "ui/widgets/EditorPage.h"
-
-#include <boost/filesystem.hpp>
-#include <utility>
-
-#include "ui/thread/FileReadThread.h"
-
-namespace GpgFrontend::UI {
-
-EditorPage::EditorPage(QString filePath, QWidget* parent)
- : QWidget(parent), full_file_path_(std::move(filePath)) {
- // Set the Textedit properties
- textPage = new QTextEdit();
- textPage->setAcceptRichText(false);
-
- // Set the layout style
- mainLayout = new QVBoxLayout();
- mainLayout->setSpacing(0);
- mainLayout->addWidget(textPage);
- mainLayout->setContentsMargins(0, 0, 0, 0);
- setLayout(mainLayout);
-
- textPage->setFocus();
-
- // Front in same width
- this->setFont({"Courier"});
- this->setAttribute(Qt::WA_DeleteOnClose);
-}
-
-const QString& EditorPage::getFilePath() const { return full_file_path_; }
-
-QTextEdit* EditorPage::getTextPage() { return textPage; }
-
-void EditorPage::setFilePath(const QString& filePath) {
- full_file_path_ = filePath;
-}
-
-void EditorPage::showNotificationWidget(QWidget* widget,
- const char* className) {
- widget->setProperty(className, true);
- mainLayout->addWidget(widget);
-}
-
-void EditorPage::closeNoteByClass(const char* className) {
- QList<QWidget*> widgets = findChildren<QWidget*>();
- for (QWidget* widget : widgets) {
- if (widget->property(className) == true) {
- widget->close();
- }
- }
-}
-
-void EditorPage::slotFormatGpgHeader() {
- QString content = textPage->toPlainText();
-
- // Get positions of the gpg-headers, if they exist
- int start = content.indexOf(GpgFrontend::GpgConstants::PGP_SIGNED_BEGIN);
- int startSig =
- content.indexOf(GpgFrontend::GpgConstants::PGP_SIGNATURE_BEGIN);
- int endSig = content.indexOf(GpgFrontend::GpgConstants::PGP_SIGNATURE_END);
-
- if (start < 0 || startSig < 0 || endSig < 0 || signMarked) {
- return;
- }
-
- signMarked = true;
-
- // Set the fontstyle for the header
- QTextCharFormat signFormat;
- signFormat.setForeground(QBrush(QColor::fromRgb(80, 80, 80)));
- signFormat.setFontPointSize(9);
-
- // set font style for the signature
- QTextCursor cursor(textPage->document());
- cursor.setPosition(startSig, QTextCursor::MoveAnchor);
- cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, endSig);
- cursor.setCharFormat(signFormat);
-
- // set the font style for the header
- int headEnd = content.indexOf("\n\n", start);
- cursor.setPosition(start, QTextCursor::MoveAnchor);
- cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, headEnd);
- cursor.setCharFormat(signFormat);
-}
-
-void EditorPage::ReadFile() {
- LOG(INFO) << "Called";
-
- read_done_ = false;
-
- auto text_page = this->getTextPage();
- text_page->setReadOnly(true);
- auto thread = new FileReadThread(this->full_file_path_.toStdString());
-
- connect(thread, &FileReadThread::sendReadBlock, this,
- &EditorPage::slotInsertText);
-
- connect(thread, &FileReadThread::readDone, this, [=]() {
- LOG(INFO) << "thread read done";
- text_page->document()->setModified(false);
- text_page->setReadOnly(false);
- });
-
- connect(thread, &FileReadThread::finished, this, [=]() {
- LOG(INFO) << "thread finished";
- thread->deleteLater();
- read_done_ = true;
- read_hread_ = nullptr;
- });
-
- connect(this, &EditorPage::destroyed, [=]() {
- LOG(INFO) << "request interruption for read thread";
- thread->requestInterruption();
- read_hread_ = nullptr;
- });
- this->read_hread_ = thread;
- thread->start();
-}
-
-void EditorPage::slotInsertText(const QString& text) {
- this->getTextPage()->insertPlainText(text);
-}
-void EditorPage::PrepareToDestroy() {
- if (read_hread_) {
- read_hread_->requestInterruption();
- read_hread_ = nullptr;
- }
-}
-
-} // namespace GpgFrontend::UI
diff --git a/src/ui/widgets/InfoBoardWidget.h b/src/ui/widgets/InfoBoardWidget.h
index 8d37be6c..816da849 100644
--- a/src/ui/widgets/InfoBoardWidget.h
+++ b/src/ui/widgets/InfoBoardWidget.h
@@ -25,7 +25,7 @@
#ifndef __VERIFYNOTIFICATION_H__
#define __VERIFYNOTIFICATION_H__
-#include "EditorPage.h"
+#include "PlainTextEditorPage.h"
#include "gpg/result_analyse/VerifyResultAnalyse.h"
#include "ui/details/VerifyDetailsDialog.h"
diff --git a/src/ui/widgets/PlainTextEditorPage.cpp b/src/ui/widgets/PlainTextEditorPage.cpp
new file mode 100644
index 00000000..1a99c2a6
--- /dev/null
+++ b/src/ui/widgets/PlainTextEditorPage.cpp
@@ -0,0 +1,257 @@
+/**
+ * This file is part of GpgFrontend.
+ *
+ * GpgFrontend is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Foobar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Foobar. If not, see <https://www.gnu.org/licenses/>.
+ *
+ * The initial version of the source code is inherited from gpg4usb-team.
+ * Their source code version also complies with GNU General Public License.
+ *
+ * The source code version of this software was modified and released
+ * by Saturneric<[email protected]><[email protected]> starting on May 12, 2021.
+ *
+ */
+
+#include "ui/widgets/PlainTextEditorPage.h"
+
+#include <boost/filesystem.hpp>
+#include <boost/format.hpp>
+#include <utility>
+
+#include "ui/encoding/TextEncodingDetect.h"
+#include "ui/thread/FileReadThread.h"
+#include "ui_PlainTextEditor.h"
+
+namespace GpgFrontend::UI {
+
+PlainTextEditorPage::PlainTextEditorPage(QString filePath, QWidget* parent)
+ : QWidget(parent),
+ ui(std::make_shared<Ui_PlainTextEditor>()),
+ full_file_path_(std::move(filePath)) {
+ ui->setupUi(this);
+
+ if (full_file_path_.isEmpty()) read_done_ = true;
+
+ ui->textPage->setFocus();
+ ui->loadingLabel->setHidden(true);
+
+ // Front in same width
+ this->setFont({"Courier"});
+ this->setAttribute(Qt::WA_DeleteOnClose);
+
+ this->ui->characterLabel->setText(_("0 character"));
+ this->ui->lfLabel->setText(_("None"));
+ this->ui->encodingLabel->setText(_("Binary"));
+
+ connect(ui->textPage, &QPlainTextEdit::textChanged, this, [=]() {
+ if (!read_done_) return;
+
+ auto text = ui->textPage->document()->toPlainText();
+ auto str = boost::format(_("%1% character(s)")) % text.size();
+ this->ui->characterLabel->setText(str.str().c_str());
+
+ detect_encoding(text.toStdString());
+ });
+
+ ui->loadingLabel->setText(_("Loading..."));
+}
+
+const QString& PlainTextEditorPage::getFilePath() const {
+ return full_file_path_;
+}
+
+QPlainTextEdit* PlainTextEditorPage::getTextPage() { return ui->textPage; }
+
+void PlainTextEditorPage::setFilePath(const QString& filePath) {
+ full_file_path_ = filePath;
+}
+
+void PlainTextEditorPage::showNotificationWidget(QWidget* widget,
+ const char* className) {
+ widget->setProperty(className, true);
+ ui->verticalLayout->addWidget(widget);
+}
+
+void PlainTextEditorPage::closeNoteByClass(const char* className) {
+ QList<QWidget*> widgets = findChildren<QWidget*>();
+ for (QWidget* widget : widgets) {
+ if (widget->property(className) == true) {
+ widget->close();
+ }
+ }
+}
+
+void PlainTextEditorPage::slotFormatGpgHeader() {
+ QString content = ui->textPage->toPlainText();
+
+ // Get positions of the gpg-headers, if they exist
+ int start = content.indexOf(GpgFrontend::GpgConstants::PGP_SIGNED_BEGIN);
+ int startSig =
+ content.indexOf(GpgFrontend::GpgConstants::PGP_SIGNATURE_BEGIN);
+ int endSig = content.indexOf(GpgFrontend::GpgConstants::PGP_SIGNATURE_END);
+
+ if (start < 0 || startSig < 0 || endSig < 0 || signMarked) {
+ return;
+ }
+
+ signMarked = true;
+
+ // Set the fontstyle for the header
+ QTextCharFormat signFormat;
+ signFormat.setForeground(QBrush(QColor::fromRgb(80, 80, 80)));
+ signFormat.setFontPointSize(9);
+
+ // set font style for the signature
+ QTextCursor cursor(ui->textPage->document());
+ cursor.setPosition(startSig, QTextCursor::MoveAnchor);
+ cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, endSig);
+ cursor.setCharFormat(signFormat);
+
+ // set the font style for the header
+ int headEnd = content.indexOf("\n\n", start);
+ cursor.setPosition(start, QTextCursor::MoveAnchor);
+ cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, headEnd);
+ cursor.setCharFormat(signFormat);
+}
+
+void PlainTextEditorPage::ReadFile() {
+ LOG(INFO) << "called";
+
+ read_done_ = false;
+ read_bytes_ = 0;
+ ui->textPage->setEnabled(false);
+ ui->textPage->setReadOnly(true);
+ ui->textPage->blockSignals(true);
+ ui->loadingLabel->setHidden(false);
+ ui->textPage->document()->blockSignals(true);
+
+ auto text_page = this->getTextPage();
+ text_page->setReadOnly(true);
+ auto thread = new FileReadThread(this->full_file_path_.toStdString());
+
+ connect(thread, &FileReadThread::sendReadBlock, this,
+ &PlainTextEditorPage::slotInsertText);
+
+ connect(thread, &FileReadThread::readDone, this, [=]() {
+ LOG(INFO) << "thread read done";
+ if (!binary_mode_) {
+ text_page->setReadOnly(false);
+ }
+ });
+
+ connect(thread, &FileReadThread::finished, this, [=]() {
+ LOG(INFO) << "thread finished";
+ thread->deleteLater();
+ read_done_ = true;
+ read_thread_ = nullptr;
+ ui->textPage->setEnabled(true);
+ text_page->document()->setModified(false);
+ ui->textPage->blockSignals(false);
+ ui->textPage->document()->blockSignals(false);
+ ui->loadingLabel->setHidden(true);
+ });
+
+ connect(this, &PlainTextEditorPage::destroyed, [=]() {
+ LOG(INFO) << "request interruption for read thread";
+ thread->requestInterruption();
+ read_thread_ = nullptr;
+ });
+ this->read_thread_ = thread;
+ thread->start();
+}
+
+std::string binary_to_string(const std::string& source) {
+ static char syms[] = "0123456789ABCDEF";
+ std::stringstream ss;
+ for (unsigned char c : source)
+ ss << syms[((c >> 4) & 0xf)] << syms[c & 0xf] << " ";
+ return ss.str();
+}
+
+void PlainTextEditorPage::slotInsertText(const std::string& data) {
+ LOG(INFO) << "data size" << data.size();
+ read_bytes_ += data.size();
+ // If binary format is detected, the entire file is converted to binary format
+ // for display
+ bool if_last_binary_mode = binary_mode_;
+ if (!binary_mode_) {
+ detect_encoding(data);
+ }
+
+ if (binary_mode_) {
+ if (if_last_binary_mode != binary_mode_) {
+ auto text_buffer =
+ ui->textPage->document()->toRawText().toLocal8Bit().toStdString();
+ ui->textPage->clear();
+ this->getTextPage()->insertPlainText(
+ binary_to_string(text_buffer).c_str());
+ this->ui->lfLabel->setText("None");
+ }
+ this->getTextPage()->insertPlainText(binary_to_string(data).c_str());
+
+ auto str = boost::format(_("%1% byte(s)")) % read_bytes_;
+ this->ui->characterLabel->setText(str.str().c_str());
+ } else {
+ this->getTextPage()->insertPlainText(data.c_str());
+
+ auto text = this->getTextPage()->toPlainText();
+ auto str = boost::format(_("%1% character(s)")) % text.size();
+ this->ui->characterLabel->setText(str.str().c_str());
+ detect_cr_lf(text);
+ }
+}
+
+void PlainTextEditorPage::PrepareToDestroy() {
+ if (read_thread_) {
+ read_thread_->requestInterruption();
+ read_thread_ = nullptr;
+ }
+}
+
+void PlainTextEditorPage::detect_encoding(const std::string& data) {
+ AutoIt::Common::TextEncodingDetect text_detect;
+ AutoIt::Common::TextEncodingDetect::Encoding encoding =
+ text_detect.DetectEncoding((unsigned char*)(data.data()), data.size());
+
+ if (encoding == AutoIt::Common::TextEncodingDetect::None) {
+ binary_mode_ = true;
+ ui->encodingLabel->setText(_("Binary"));
+ } else if (encoding == AutoIt::Common::TextEncodingDetect::ASCII) {
+ ui->encodingLabel->setText(_("ASCII(7 bits)"));
+ } else if (encoding == AutoIt::Common::TextEncodingDetect::ANSI) {
+ ui->encodingLabel->setText(_("ASCII(8 bits)"));
+ } else if (encoding == AutoIt::Common::TextEncodingDetect::UTF8_BOM ||
+ encoding == AutoIt::Common::TextEncodingDetect::UTF8_NOBOM) {
+ ui->encodingLabel->setText(_("UTF-8"));
+ } else if (encoding == AutoIt::Common::TextEncodingDetect::UTF16_LE_BOM ||
+ encoding == AutoIt::Common::TextEncodingDetect::UTF16_LE_NOBOM) {
+ ui->encodingLabel->setText(_("UTF-16"));
+ } else if (encoding == AutoIt::Common::TextEncodingDetect::UTF16_BE_BOM ||
+ encoding == AutoIt::Common::TextEncodingDetect::UTF16_BE_NOBOM) {
+ ui->encodingLabel->setText(_("UTF-16(BE)"));
+ }
+}
+
+void PlainTextEditorPage::detect_cr_lf(const QString& data) {
+ if (binary_mode_) {
+ this->ui->lfLabel->setText("None");
+ return;
+ }
+ if (data.contains("\r\n")) {
+ this->ui->lfLabel->setText("CRLF");
+ } else {
+ this->ui->lfLabel->setText("LF");
+ }
+}
+
+} // namespace GpgFrontend::UI
diff --git a/src/ui/widgets/EditorPage.h b/src/ui/widgets/PlainTextEditorPage.h
index d1bc1ac2..24823c06 100644
--- a/src/ui/widgets/EditorPage.h
+++ b/src/ui/widgets/PlainTextEditorPage.h
@@ -28,12 +28,7 @@
#include "gpg/GpgConstants.h"
#include "ui/GpgFrontendUI.h"
-QT_BEGIN_NAMESPACE
-class QVBoxLayout;
-class QHBoxLayout;
-class QString;
-class QLabel;
-QT_END_NAMESPACE
+class Ui_PlainTextEditor;
namespace GpgFrontend::UI {
@@ -41,7 +36,7 @@ namespace GpgFrontend::UI {
* @brief Class for handling a single tab of the tabwidget
*
*/
-class EditorPage : public QWidget {
+class PlainTextEditorPage : public QWidget {
Q_OBJECT
public:
/**
@@ -50,7 +45,8 @@ class EditorPage : public QWidget {
* @param filePath Path of the file handled in this tab
* @param parent Pointer to the parent widget
*/
- explicit EditorPage(QString filePath = "", QWidget* parent = nullptr);
+ explicit PlainTextEditorPage(QString filePath = "",
+ QWidget* parent = nullptr);
/**
* @details Get the filepath of the currently activated tab.
@@ -67,7 +63,7 @@ class EditorPage : public QWidget {
/**
* @details Return pointer tp the textedit of the currently activated tab.
*/
- QTextEdit* getTextPage();
+ QPlainTextEdit* getTextPage();
/**
* @details Show additional widget at buttom of currently active tab
@@ -91,12 +87,17 @@ class EditorPage : public QWidget {
void PrepareToDestroy();
private:
- QTextEdit* textPage; /** The textedit of the tab */
- QVBoxLayout* mainLayout; /** The layout for the tab */
+ std::shared_ptr<Ui_PlainTextEditor> ui;
QString full_file_path_; /** The path to the file handled in the tab */
bool signMarked{}; /** true, if the signed header is marked, false if not */
bool read_done_ = false;
- QThread* read_hread_ = nullptr;
+ QThread* read_thread_ = nullptr;
+ bool binary_mode_ = false;
+ size_t read_bytes_ = 0;
+
+ void detect_encoding(const std::string& data);
+
+ void detect_cr_lf(const QString& data);
private slots:
@@ -105,7 +106,7 @@ class EditorPage : public QWidget {
*/
void slotFormatGpgHeader();
- void slotInsertText(const QString& text);
+ void slotInsertText(const std::string& data);
};
} // namespace GpgFrontend::UI
diff --git a/src/ui/widgets/TextEdit.cpp b/src/ui/widgets/TextEdit.cpp
index be6ec181..a8ff8d73 100644
--- a/src/ui/widgets/TextEdit.cpp
+++ b/src/ui/widgets/TextEdit.cpp
@@ -50,7 +50,7 @@ TextEdit::TextEdit(QWidget* parent) : QWidget(parent) {
void TextEdit::slotNewTab() {
QString header = _("untitled") + QString::number(++countPage) + ".txt";
- auto* page = new EditorPage();
+ auto* page = new PlainTextEditorPage();
auto index = tabWidget->addTab(page, header);
tabWidget->setTabIcon(index, QIcon(":file.png"));
tabWidget->setCurrentIndex(tabWidget->count() - 1);
@@ -80,11 +80,11 @@ void TextEdit::slotOpenFile(QString& path) {
LOG(INFO) << "path" << path.toStdString();
auto result = file.open(QIODevice::ReadOnly | QIODevice::Text);
if (result) {
- auto* page = new EditorPage(path);
+ auto* page = new PlainTextEditorPage(path);
connect(page->getTextPage()->document(),
&QTextDocument::modificationChanged, this,
&TextEdit::slotShowModified);
-
+
QApplication::setOverrideCursor(Qt::WaitCursor);
auto index = tabWidget->addTab(page, strippedName(path));
tabWidget->setTabIcon(index, QIcon(":file.png"));
@@ -111,7 +111,7 @@ void TextEdit::slotOpen() {
QFile file(fileName);
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
- auto* page = new EditorPage(fileName);
+ auto* page = new PlainTextEditorPage(fileName);
QTextStream in(&file);
QApplication::setOverrideCursor(Qt::WaitCursor);
@@ -165,7 +165,7 @@ bool TextEdit::saveFile(const QString& fileName) {
QFile file(fileName);
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
- EditorPage* page = slotCurPageTextEdit();
+ PlainTextEditorPage* page = slotCurPageTextEdit();
QTextStream outputStream(&file);
QApplication::setOverrideCursor(Qt::WaitCursor);
@@ -197,7 +197,7 @@ bool TextEdit::slotSaveAs() {
return true;
}
- EditorPage* page = slotCurPageTextEdit();
+ PlainTextEditorPage* page = slotCurPageTextEdit();
QString path;
if (!page->getFilePath().isEmpty()) {
path = page->getFilePath();
@@ -250,7 +250,7 @@ void TextEdit::removeTab(int index) {
* If it returns false, the close event should be aborted.
*/
bool TextEdit::maybeSaveCurrentTab(bool askToSave) {
- EditorPage* page = slotCurPageTextEdit();
+ PlainTextEditorPage* page = slotCurPageTextEdit();
// if this page is no textedit, there should be nothing to save
if (page == nullptr) {
return true;
@@ -352,13 +352,8 @@ bool TextEdit::maybeSaveAnyTab() {
return false;
}
-QTextEdit* TextEdit::curTextPage() const {
- auto* curTextPage = qobject_cast<EditorPage*>(tabWidget->currentWidget());
- if (curTextPage != nullptr) {
- return curTextPage->getTextPage();
- } else {
- return nullptr;
- }
+PlainTextEditorPage* TextEdit::curTextPage() const {
+ return qobject_cast<PlainTextEditorPage*>(tabWidget->currentWidget());
}
FilePage* TextEdit::curFilePage() const {
@@ -372,8 +367,9 @@ FilePage* TextEdit::curFilePage() const {
int TextEdit::tabCount() const { return tabWidget->count(); }
-EditorPage* TextEdit::slotCurPageTextEdit() const {
- auto* curPage = qobject_cast<EditorPage*>(tabWidget->currentWidget());
+PlainTextEditorPage* TextEdit::slotCurPageTextEdit() const {
+ auto* curPage =
+ qobject_cast<PlainTextEditorPage*>(tabWidget->currentWidget());
return curPage;
}
@@ -387,7 +383,7 @@ void TextEdit::slotQuote() const {
return;
}
- QTextCursor cursor(curTextPage()->document());
+ QTextCursor cursor(curTextPage()->getTextPage()->document());
// beginEditBlock and endEditBlock() let operation look like single undo/redo
// operation
@@ -405,10 +401,10 @@ void TextEdit::slotQuote() const {
}
void TextEdit::slotFillTextEditWithText(const QString& text) const {
- QTextCursor cursor(curTextPage()->document());
+ QTextCursor cursor(curTextPage()->getTextPage()->document());
cursor.beginEditBlock();
- this->curTextPage()->selectAll();
- this->curTextPage()->insertPlainText(text);
+ this->curTextPage()->getTextPage()->selectAll();
+ this->curTextPage()->getTextPage()->insertPlainText(text);
cursor.endEditBlock();
}
@@ -425,7 +421,7 @@ void TextEdit::loadFile(const QString& fileName) {
}
QTextStream in(&file);
QApplication::setOverrideCursor(Qt::WaitCursor);
- curTextPage()->setPlainText(in.readAll());
+ curTextPage()->getTextPage()->setPlainText(in.readAll());
QApplication::restoreOverrideCursor();
slotCurPageTextEdit()->setFilePath(fileName);
tabWidget->setTabText(tabWidget->currentIndex(), strippedName(fileName));
@@ -445,7 +441,7 @@ void TextEdit::slotPrint() {
#ifndef QT_NO_PRINTER
QTextDocument* document;
if (curTextPage() != nullptr) {
- document = curTextPage()->document();
+ document = curTextPage()->getTextPage()->document();
}
QPrinter printer;
@@ -464,7 +460,7 @@ void TextEdit::slotShowModified() const {
QString title = tabWidget->tabText(index);
// if doc is modified now, add leading * to title,
// otherwise remove the leading * from the title
- if (curTextPage()->document()->isModified()) {
+ if (curTextPage()->getTextPage()->document()->isModified()) {
tabWidget->setTabText(index, title.prepend("* "));
} else {
tabWidget->setTabText(index, title.remove(0, 2));
@@ -494,7 +490,7 @@ QHash<int, QString> TextEdit::unsavedDocuments() const {
// gedit like "unsaved changed"-dialog
for (int i = 0; i < tabWidget->count(); i++) {
- auto* ep = qobject_cast<EditorPage*>(tabWidget->widget(i));
+ auto* ep = qobject_cast<PlainTextEditorPage*>(tabWidget->widget(i));
if (ep != nullptr && ep->ReadDone() &&
ep->getTextPage()->document()->isModified()) {
QString doc_name = tabWidget->tabText(i);
@@ -513,7 +509,7 @@ void TextEdit::slotCut() const {
return;
}
- curTextPage()->cut();
+ curTextPage()->getTextPage()->cut();
}
void TextEdit::slotCopy() const {
@@ -522,7 +518,7 @@ void TextEdit::slotCopy() const {
}
if (curTextPage() != nullptr) {
- curTextPage()->copy();
+ curTextPage()->getTextPage()->copy();
}
}
@@ -531,7 +527,7 @@ void TextEdit::slotPaste() const {
return;
}
- curTextPage()->paste();
+ curTextPage()->getTextPage()->paste();
}
void TextEdit::slotUndo() const {
@@ -539,7 +535,7 @@ void TextEdit::slotUndo() const {
return;
}
- curTextPage()->undo();
+ curTextPage()->getTextPage()->undo();
}
void TextEdit::slotRedo() const {
@@ -547,7 +543,7 @@ void TextEdit::slotRedo() const {
return;
}
- curTextPage()->redo();
+ curTextPage()->getTextPage()->redo();
}
void TextEdit::slotZoomIn() const {
@@ -556,7 +552,7 @@ void TextEdit::slotZoomIn() const {
}
if (curTextPage() != nullptr) {
- curTextPage()->zoomIn();
+ curTextPage()->getTextPage()->zoomIn();
}
}
@@ -566,7 +562,7 @@ void TextEdit::slotZoomOut() const {
}
if (curTextPage() != nullptr) {
- curTextPage()->zoomOut();
+ curTextPage()->getTextPage()->zoomOut();
}
}
@@ -574,7 +570,7 @@ void TextEdit::slotSelectAll() const {
if (tabWidget->count() == 0 || curTextPage() == nullptr) {
return;
}
- curTextPage()->selectAll();
+ curTextPage()->getTextPage()->selectAll();
}
void TextEdit::slotFilePagePathChanged(const QString& path) const {
diff --git a/src/ui/widgets/TextEdit.h b/src/ui/widgets/TextEdit.h
index e877ccc1..c1f44969 100644
--- a/src/ui/widgets/TextEdit.h
+++ b/src/ui/widgets/TextEdit.h
@@ -26,9 +26,9 @@
#define __TEXTEDIT_H__
#include "ui/QuitDialog.h"
-#include "ui/widgets/EditorPage.h"
#include "ui/widgets/FilePage.h"
#include "ui/widgets/HelpPage.h"
+#include "ui/widgets/PlainTextEditorPage.h"
namespace GpgFrontend::UI {
/**
@@ -66,7 +66,7 @@ class TextEdit : public QWidget {
* @return \li reference to QTextEdit if tab has one
* \li 0 otherwise (e.g. if helppage)
*/
- [[nodiscard]] QTextEdit* curTextPage() const;
+ [[nodiscard]] PlainTextEditorPage* curTextPage() const;
[[nodiscard]] FilePage* curFilePage() const;
@@ -84,7 +84,7 @@ class TextEdit : public QWidget {
* @details Return pointer to the currently activated text edit tab page.
*
*/
- EditorPage* slotCurPageTextEdit() const;
+ PlainTextEditorPage* slotCurPageTextEdit() const;
/**
* @details Return pointer to the currently activated file treeview tab page.