summaryrefslogtreecommitdiff
path: root/src/texteditor.cpp
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2019-06-15 18:54:19 -0400
committerisanae <14251494+isanae@users.noreply.github.com>2019-07-02 10:10:16 -0400
commit6bd5bed29f3ebcc1155e615d7daa1c9cd1724efb (patch)
tree9dea3a3a0b50b181f49c99eb57cfc3ef4b7a7ecf /src/texteditor.cpp
parent59e0c4aa34fec9048d064705863c3269aacd86b5 (diff)
added initial toolbar, splitter
moved most of the text editor stuff to a new TextEditor class
Diffstat (limited to 'src/texteditor.cpp')
-rw-r--r--src/texteditor.cpp76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/texteditor.cpp b/src/texteditor.cpp
new file mode 100644
index 00000000..eef74246
--- /dev/null
+++ b/src/texteditor.cpp
@@ -0,0 +1,76 @@
+#include "texteditor.h"
+#include "utility.h"
+
+TextEditor::TextEditor(QPlainTextEdit* edit)
+ : m_edit(edit), m_dirty(false)
+{
+ m_edit->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont));
+ wordWrap(true);
+
+ QObject::connect(
+ m_edit->document(), &QTextDocument::modificationChanged,
+ [&](bool b){ onChanged(b); });
+}
+
+bool TextEditor::load(const QString& filename)
+{
+ m_filename = filename;
+ m_edit->setPlainText(MOBase::readFileText(filename, &m_encoding));
+ m_edit->document()->setModified(false);
+
+ return true;
+}
+
+bool TextEditor::save()
+{
+ if (m_filename.isEmpty() || m_encoding.isEmpty()) {
+ return false;
+ }
+
+ QFile file(m_filename);
+ file.open(QIODevice::WriteOnly);
+ file.resize(0);
+
+ QTextCodec* codec = QTextCodec::codecForName(m_encoding.toUtf8());
+ QString data = m_edit->toPlainText().replace("\n", "\r\n");
+
+ file.write(codec->fromUnicode(data));
+ m_edit->document()->setModified(false);
+
+ return true;
+}
+
+const QString& TextEditor::filename() const
+{
+ return m_filename;
+}
+
+void TextEditor::wordWrap(bool b)
+{
+ if (b) {
+ m_edit->setLineWrapMode(QPlainTextEdit::WidgetWidth);
+ } else {
+ m_edit->setLineWrapMode(QPlainTextEdit::NoWrap);
+ }
+}
+
+bool TextEditor::wordWrap() const
+{
+ return (m_edit->lineWrapMode() == QPlainTextEdit::WidgetWidth);
+}
+
+void TextEditor::dirty(bool b)
+{
+ m_dirty = b;
+}
+
+bool TextEditor::dirty() const
+{
+ return m_dirty;
+}
+
+void TextEditor::onChanged(bool b)
+{
+ dirty(b);
+ emit changed(b);
+}