From 28f6f66234c85f78ca45d211d5d4dd36bf6242af Mon Sep 17 00:00:00 2001 From: Mark Long Date: Sat, 15 Oct 2016 17:48:26 -0500 Subject: [PATCH] Added word wrap to all text-based viewer widgets. --- src/ui/viewers/applesoftfileviewer.cxx | 4 +-- src/ui/viewers/disassemblerviewer.cpp | 33 +++++++++++++++++++++++ src/ui/viewers/disassemblerviewer.h | 3 ++- src/ui/viewers/hexdumpviewer.cpp | 37 ++++++++++++++++++++++++++ src/ui/viewers/hexdumpviewer.h | 3 ++- src/ui/viewers/texthexdumpviewer.cpp | 34 +++++++++++++++++++++++ src/ui/viewers/texthexdumpviewer.h | 4 ++- 7 files changed, 113 insertions(+), 5 deletions(-) diff --git a/src/ui/viewers/applesoftfileviewer.cxx b/src/ui/viewers/applesoftfileviewer.cxx index 336eb13..bbeaa76 100644 --- a/src/ui/viewers/applesoftfileviewer.cxx +++ b/src/ui/viewers/applesoftfileviewer.cxx @@ -18,13 +18,13 @@ ApplesoftFileViewer::ApplesoftFileViewer(QWidget *parent) : setWindowTitle(title); m_formatter = new ApplesoftFormatter(this); - //m_formatter->setFlags(ApplesoftFormatter::PrettyFlags | ApplesoftFormatter::BreakAfterReturn); m_formatter->setFlags(ApplesoftFormatter::PrettyFlags); connect(ui->findButton,SIGNAL(clicked(bool)), SLOT(findText())); m_isFirstFind = true; ui->textArea->setUndoRedoEnabled(false); ui->textArea->setUndoRedoEnabled(true); - ui->textArea->setWordWrapMode(QTextOption::NoWrap); + + toggleWordWrap(settings.value("ASViewer.WordWrap",true).toBool()); } ApplesoftFileViewer::~ApplesoftFileViewer() diff --git a/src/ui/viewers/disassemblerviewer.cpp b/src/ui/viewers/disassemblerviewer.cpp index 3a4107d..1a6f9f6 100644 --- a/src/ui/viewers/disassemblerviewer.cpp +++ b/src/ui/viewers/disassemblerviewer.cpp @@ -4,6 +4,9 @@ #include "memory.h" #include "relocatablefile.h" +#include +#include +#include #include DisassemblerViewer::DisassemblerViewer(QWidget *parent) : @@ -14,6 +17,9 @@ DisassemblerViewer::DisassemblerViewer(QWidget *parent) : QString title = QString("Disassembly Viewer"); setWindowTitle(title); + + QSettings settings; + toggleWordWrap(settings.value("DisassemblerViewer.WordWrap",true).toBool()); } DisassemblerViewer::~DisassemblerViewer() @@ -33,6 +39,20 @@ void DisassemblerViewer::setFile(GenericFile *file) } } +void DisassemblerViewer::toggleWordWrap(bool enabled) +{ + if (enabled) + { + ui->textArea->setWordWrapMode(QTextOption::WordWrap); + } + else + { + ui->textArea->setWordWrapMode(QTextOption::NoWrap); + } + QSettings settings; + settings.setValue("DisassemblerViewer.WordWrap",enabled); +} + void DisassemblerViewer::setFile(BinaryFile *file) { m_file = file; @@ -1391,6 +1411,19 @@ QString DisassemblerViewer::getPotentialLabel(quint16 address) { return retval; } +bool DisassemblerViewer::optionsMenuItems(QMenu *menu) +{ + QSettings settings; + + QAction *action = new QAction("&Word Wrap"); + action->setCheckable(true); + action->setChecked(settings.value("DisassemblerViewer.WordWrap",true).toBool()); + connect(action, SIGNAL(toggled(bool)), SLOT(toggleWordWrap(bool))); + menu->addAction(action); + + return true; +} + void DisassemblerViewer::setData(QByteArray data) { ui->textArea->setText(data); diff --git a/src/ui/viewers/disassemblerviewer.h b/src/ui/viewers/disassemblerviewer.h index 335dd32..9685878 100644 --- a/src/ui/viewers/disassemblerviewer.h +++ b/src/ui/viewers/disassemblerviewer.h @@ -26,10 +26,11 @@ public: void setText(QString text); QString getPotentialLabel(quint16 address); - virtual bool optionsMenuItems(QMenu *) { return false; } + virtual bool optionsMenuItems(QMenu *); public slots: void setFile(GenericFile *file); + void toggleWordWrap(bool enabled); private: Ui::DisassemblerViewer *ui; diff --git a/src/ui/viewers/hexdumpviewer.cpp b/src/ui/viewers/hexdumpviewer.cpp index 56e1918..8cd54d3 100644 --- a/src/ui/viewers/hexdumpviewer.cpp +++ b/src/ui/viewers/hexdumpviewer.cpp @@ -3,6 +3,9 @@ #include #include +#include +#include +#include HexDumpViewer::HexDumpViewer(QWidget *parent) : FileViewerInterface(parent), @@ -13,6 +16,9 @@ HexDumpViewer::HexDumpViewer(QWidget *parent) : QString title = QString("Hex Viewer"); setWindowTitle(title); + + QSettings settings; + toggleWordWrap(settings.value("HexViewer.WordWrap",true).toBool()); } HexDumpViewer::~HexDumpViewer() @@ -20,6 +26,24 @@ HexDumpViewer::~HexDumpViewer() delete ui; } +void HexDumpViewer::toggleWordWrap(bool enabled) +{ + if (enabled) + { + ui->textArea->setWordWrapMode(QTextOption::WordWrap); + } + else + { + ui->textArea->setWordWrapMode(QTextOption::NoWrap); + } + QSettings settings; + settings.setValue("HexViewer.WordWrap",enabled); +} + + + + + void HexDumpViewer::showHexAndAsciiValues() { int offset = ui->textArea->verticalScrollBar()->value(); @@ -107,6 +131,19 @@ void HexDumpViewer::setFile(GenericFile *file, quint16 offset) } +bool HexDumpViewer::optionsMenuItems(QMenu *menu) +{ + QSettings settings; + + QAction *action = new QAction("&Word Wrap"); + action->setCheckable(true); + action->setChecked(settings.value("HexViewer.WordWrap",true).toBool()); + connect(action, SIGNAL(toggled(bool)), SLOT(toggleWordWrap(bool))); + menu->addAction(action); + + return true; +} + void HexDumpViewer::setData(QByteArray data) { ui->textArea->setHtml(data); diff --git a/src/ui/viewers/hexdumpviewer.h b/src/ui/viewers/hexdumpviewer.h index f5d5e6d..61a3016 100644 --- a/src/ui/viewers/hexdumpviewer.h +++ b/src/ui/viewers/hexdumpviewer.h @@ -24,10 +24,11 @@ public: void setFile(GenericFile *file) { setFile(file,0); } void setFile(GenericFile *file, quint16 offset); - virtual bool optionsMenuItems(QMenu *) { return false; } + virtual bool optionsMenuItems(QMenu *menu); public slots: void showHexAndAsciiValues(); + void toggleWordWrap(bool enabled); private: void setText(QString text); diff --git a/src/ui/viewers/texthexdumpviewer.cpp b/src/ui/viewers/texthexdumpviewer.cpp index 85071f2..ef3719d 100644 --- a/src/ui/viewers/texthexdumpviewer.cpp +++ b/src/ui/viewers/texthexdumpviewer.cpp @@ -4,6 +4,9 @@ #include #include +#include +#include +#include TextHexDumpViewer::TextHexDumpViewer(QWidget *parent) : FileViewerInterface(parent), @@ -14,6 +17,9 @@ TextHexDumpViewer::TextHexDumpViewer(QWidget *parent) : QString title = QString("Text/Hex File Viewer"); setWindowTitle(title); + + QSettings settings; + toggleWordWrap(settings.value("TexHexViewer.WordWrap",true).toBool()); } TextHexDumpViewer::~TextHexDumpViewer() @@ -21,6 +27,21 @@ TextHexDumpViewer::~TextHexDumpViewer() delete ui; } +void TextHexDumpViewer::toggleWordWrap(bool enabled) +{ + if (enabled) + { + ui->textArea->setWordWrapMode(QTextOption::WordWrap); + } + else + { + ui->textArea->setWordWrapMode(QTextOption::NoWrap); + } + QSettings settings; + settings.setValue("TextHexViewer.WordWrap",enabled); +} + + QString TextHexDumpViewer::makeHexStr(QByteArray data) { QString retval; @@ -93,3 +114,16 @@ void TextHexDumpViewer::setText(QString text) { ui->textArea->setHtml(text); } + +bool TextHexDumpViewer::optionsMenuItems(QMenu *menu) +{ + QSettings settings; + + QAction *action = new QAction("&Word Wrap"); + action->setCheckable(true); + action->setChecked(settings.value("TexHexViewer.WordWrap",true).toBool()); + connect(action, SIGNAL(toggled(bool)), SLOT(toggleWordWrap(bool))); + menu->addAction(action); + + return true; +} diff --git a/src/ui/viewers/texthexdumpviewer.h b/src/ui/viewers/texthexdumpviewer.h index 50221f2..224fde8 100644 --- a/src/ui/viewers/texthexdumpviewer.h +++ b/src/ui/viewers/texthexdumpviewer.h @@ -26,8 +26,10 @@ public: void setData(QByteArray data); void setText(QString text); - virtual bool optionsMenuItems(QMenu *) { return false; } + virtual bool optionsMenuItems(QMenu *menu); +public slots: + void toggleWordWrap(bool enabled); protected: QString makeTextStr(QByteArray data); QString makeHexStr(QByteArray data);