From c5d1c575e11e2ffcc5a62613fd46adbf1d8c40e3 Mon Sep 17 00:00:00 2001 From: Mark Long Date: Wed, 12 Oct 2016 17:52:13 -0500 Subject: [PATCH] Added preliminary Applesoft Variable Viewer tool --- AppleSAWS.pro | 10 ++-- src/applesoftfile/applesoftfile.cxx | 1 - src/applesoftfile/applesoftline.cpp | 2 - src/applesoftfile/applesofttoken.cxx | 2 - src/ui/viewers/applesoftfiledetailviewer.cpp | 56 ++++++++++++++++++++ src/ui/viewers/applesoftfiledetailviewer.h | 29 ++++++++++ src/ui/viewers/applesoftfiledetailviewer.ui | 46 ++++++++++++++++ src/ui/viewers/applesoftfileviewer.cxx | 11 ++++ src/ui/viewers/applesoftfileviewer.h | 3 ++ src/ui/viewers/applesoftfileviewer.ui | 9 +++- 10 files changed, 159 insertions(+), 10 deletions(-) delete mode 100644 src/applesoftfile/applesoftline.cpp create mode 100644 src/ui/viewers/applesoftfiledetailviewer.cpp create mode 100644 src/ui/viewers/applesoftfiledetailviewer.h create mode 100644 src/ui/viewers/applesoftfiledetailviewer.ui diff --git a/AppleSAWS.pro b/AppleSAWS.pro index f322da3..b74977d 100644 --- a/AppleSAWS.pro +++ b/AppleSAWS.pro @@ -36,7 +36,6 @@ SOURCES += \ src/applesoftfile/applesoftfile.cxx \ src/applesoftfile/applesofttoken.cxx \ src/applesoftfile/applesoftformatter.cxx \ - src/applesoftfile/applesoftline.cpp \ src/binaryfile/disassembler.cxx \ src/binaryfile/binaryfile.cxx \ src/textfile/textfile.cxx \ @@ -53,7 +52,8 @@ SOURCES += \ src/relocatablefile/relocatablefile.cxx \ src/binaryfile/binaryfilemetadata.cpp \ src/util/charset.cpp \ - src/ui/widgets/characterwidget.cpp + src/ui/widgets/characterwidget.cpp \ + src/ui/viewers/applesoftfiledetailviewer.cpp HEADERS += \ @@ -86,7 +86,8 @@ HEADERS += \ src/binaryfile/binaryfilemetadata.h \ src/ui/widgets/characterwidget.h \ src/util/charset.h \ - src/ui/viewers/charsetviewer.h + src/ui/viewers/charsetviewer.h \ + src/ui/viewers/applesoftfiledetailviewer.h FORMS += \ src/ui/catalogwidget.ui \ @@ -94,4 +95,5 @@ FORMS += \ src/ui/viewers/applesoftfileviewer.ui \ src/ui/viewers/disassemblerviewer.ui \ src/ui/viewers/hexdumpviewer.ui \ - src/ui/viewers/texthexdumpviewer.ui + src/ui/viewers/texthexdumpviewer.ui \ + src/ui/viewers/applesoftfiledetailviewer.ui diff --git a/src/applesoftfile/applesoftfile.cxx b/src/applesoftfile/applesoftfile.cxx index edd8bc0..69f3a25 100644 --- a/src/applesoftfile/applesoftfile.cxx +++ b/src/applesoftfile/applesoftfile.cxx @@ -22,7 +22,6 @@ void ApplesoftFile::setData(QByteArray data) quint8 addhi = m_data.at(1); m_length = addlo + (addhi * 256); m_data.remove(0,2); - // m_data = m_data.left(m_length); parse(); } diff --git a/src/applesoftfile/applesoftline.cpp b/src/applesoftfile/applesoftline.cpp deleted file mode 100644 index 00452ac..0000000 --- a/src/applesoftfile/applesoftline.cpp +++ /dev/null @@ -1,2 +0,0 @@ -#include "applesoftline.h" - diff --git a/src/applesoftfile/applesofttoken.cxx b/src/applesoftfile/applesofttoken.cxx index 95fe9c7..9608c9a 100644 --- a/src/applesoftfile/applesofttoken.cxx +++ b/src/applesoftfile/applesofttoken.cxx @@ -106,8 +106,6 @@ QString ApplesoftToken::getHtmlPrintableString() if (getTokenId() == ApplesoftToken::IntegerTokenVal || getTokenId() == ApplesoftToken::FloatAryVarTokenVal) return QString("%1").arg(baseval); - - return QString("%1").arg(baseval); } diff --git a/src/ui/viewers/applesoftfiledetailviewer.cpp b/src/ui/viewers/applesoftfiledetailviewer.cpp new file mode 100644 index 0000000..d21a2ac --- /dev/null +++ b/src/ui/viewers/applesoftfiledetailviewer.cpp @@ -0,0 +1,56 @@ +#include "applesoftfiledetailviewer.h" +#include "ui_applesoftfiledetailviewer.h" + +#include +#include +#include + + +ApplesoftFileDetailViewer::ApplesoftFileDetailViewer(QWidget *parent) : + QWidget(parent), + ui(new Ui::ApplesoftFileDetailViewer) +{ + ui->setupUi(this); +} + +ApplesoftFileDetailViewer::~ApplesoftFileDetailViewer() +{ + delete ui; +} + +void ApplesoftFileDetailViewer::process() +{ + QMap vardata; + + foreach (ApplesoftLine line, m_lines) + { + quint16 linenum = line.linenum; + foreach(ApplesoftToken token, line.tokens) + { + quint16 tid = token.getTokenId(); + if (tid == ApplesoftToken::IntVarTokenVal || + tid == ApplesoftToken::IntAryVarTokenVal || + tid == ApplesoftToken::FloatVarTokenVal || + tid == ApplesoftToken::FloatAryVarTokenVal || + tid == ApplesoftToken::StringVarTokenVal || + tid == ApplesoftToken::StringAryVarTokenVal) + { + QString varname = token.getStringValue(); + if (varname.contains("(")) { varname.append(")"); } + vardata[varname].append(QString("%1").arg(linenum)); + } + } + } + QStringList keys = vardata.keys(); + ui->m_varView->setRowCount(keys.count()); + qSort(keys); + int idx = 0; + foreach (QString key, keys) + { + QString linenums = vardata[key].join(","); + ui->m_varView->setItem(idx,1,new QTableWidgetItem(key)); + ui->m_varView->setItem(idx,2,new QTableWidgetItem(linenums)); + idx++; + } + +} diff --git a/src/ui/viewers/applesoftfiledetailviewer.h b/src/ui/viewers/applesoftfiledetailviewer.h new file mode 100644 index 0000000..48c0057 --- /dev/null +++ b/src/ui/viewers/applesoftfiledetailviewer.h @@ -0,0 +1,29 @@ +#ifndef APPLESOFTFILEDETAILVIEWER_H +#define APPLESOFTFILEDETAILVIEWER_H + +#include +#include "applesoftline.h" +#include "applesofttoken.h" + +namespace Ui { +class ApplesoftFileDetailViewer; +} + +class ApplesoftFileDetailViewer : public QWidget +{ + Q_OBJECT + +public: + explicit ApplesoftFileDetailViewer(QWidget *parent = 0); + ~ApplesoftFileDetailViewer(); + + void setLineData(QVector lineData) { m_lines = lineData; process(); } + +private: + void process(); + + Ui::ApplesoftFileDetailViewer *ui; + QVector m_lines; +}; + +#endif // APPLESOFTFILEDETAILVIEWER_H diff --git a/src/ui/viewers/applesoftfiledetailviewer.ui b/src/ui/viewers/applesoftfiledetailviewer.ui new file mode 100644 index 0000000..fa67e95 --- /dev/null +++ b/src/ui/viewers/applesoftfiledetailviewer.ui @@ -0,0 +1,46 @@ + + + ApplesoftFileDetailViewer + + + + 0 + 0 + 607 + 389 + + + + Form + + + + + + true + + + true + + + + Type + + + + + Variable + + + + + Lines + + + + + + + + + diff --git a/src/ui/viewers/applesoftfileviewer.cxx b/src/ui/viewers/applesoftfileviewer.cxx index cddb7d5..bd5ae89 100644 --- a/src/ui/viewers/applesoftfileviewer.cxx +++ b/src/ui/viewers/applesoftfileviewer.cxx @@ -1,6 +1,7 @@ #include "applesoftfileviewer.h" #include "ui_applesoftfileviewer.h" #include "applesoftformatter.h" +#include "applesoftfiledetailviewer.h" #include ApplesoftFileViewer::ApplesoftFileViewer(QWidget *parent) : @@ -19,6 +20,8 @@ ApplesoftFileViewer::ApplesoftFileViewer(QWidget *parent) : ui->textArea->setUndoRedoEnabled(false); ui->textArea->setUndoRedoEnabled(true); + + connect(ui->varBrowserButton, SIGNAL(clicked(bool)), SLOT(launchVarBrowser())); } ApplesoftFileViewer::~ApplesoftFileViewer() @@ -46,6 +49,14 @@ void ApplesoftFileViewer::setText(QString text) ui->textArea->setHtml(text); } +void ApplesoftFileViewer::launchVarBrowser() +{ + ApplesoftFileDetailViewer *afdv = new ApplesoftFileDetailViewer(); + + afdv->setLineData(m_file->getLines()); + afdv->show(); +} + void ApplesoftFileViewer::findText() { QString searchString = ui->findText->text(); diff --git a/src/ui/viewers/applesoftfileviewer.h b/src/ui/viewers/applesoftfileviewer.h index 4b0d925..af46bcc 100644 --- a/src/ui/viewers/applesoftfileviewer.h +++ b/src/ui/viewers/applesoftfileviewer.h @@ -26,6 +26,9 @@ public slots: void findText(); +protected slots: + void launchVarBrowser(); + private: ApplesoftFile *m_file; ApplesoftFormatter *m_formatter; diff --git a/src/ui/viewers/applesoftfileviewer.ui b/src/ui/viewers/applesoftfileviewer.ui index 632846f..fc9c187 100644 --- a/src/ui/viewers/applesoftfileviewer.ui +++ b/src/ui/viewers/applesoftfileviewer.ui @@ -21,7 +21,7 @@ - + @@ -47,6 +47,13 @@ + + + + Var Broswer + + +