diff --git a/.hgignore b/.hgignore
new file mode 100644
--- /dev/null
+++ b/.hgignore
@@ -0,0 +1,3 @@
+mode=blob
+
+build/*
diff --git a/serialplot.pro b/serialplot.pro
deleted file mode 100644
--- a/serialplot.pro
+++ /dev/null
@@ -1,194 +0,0 @@
-#
-# Copyright © 2019 Hasan Yavuz Özderya
-#
-# This file is part of serialplot.
-#
-# serialplot 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.
-#
-# serialplot 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 serialplot. If not, see .
-#
-
-#-------------------------------------------------
-#
-# Project created by QtCreator 2015-03-04T08:20:06
-#
-#-------------------------------------------------
-
-QT += core gui serialport network svg
-
-greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
-
-TARGET = serialplot
-TEMPLATE = app
-
-CONFIG += qwt
-# LIBS += -lqwt # enable this line if qwt pri files aren't installed
-
-DEFINES += PROGRAM_NAME="\\\"serialplot\\\""
-
-DEFINES += VERSION_MAJOR=10 VERSION_MINOR=0 VERSION_PATCH=0 VERSION_STRING=\\\"10.0.0\\\"
-
-SOURCES += \
- src/main.cpp \
- src/mainwindow.cpp \
- src/portcontrol.cpp \
- src/plot.cpp \
- src/zoomer.cpp \
- src/scrollzoomer.cpp \
- src/scrollbar.cpp \
- src/hidabletabwidget.cpp \
- src/scalepicker.cpp \
- src/scalezoomer.cpp \
- src/portlist.cpp \
- src/snapshot.cpp \
- src/snapshotview.cpp \
- src/snapshotmanager.cpp \
- src/plotsnapshotoverlay.cpp \
- src/commandpanel.cpp \
- src/commandwidget.cpp \
- src/commandedit.cpp \
- src/dataformatpanel.cpp \
- src/plotcontrolpanel.cpp \
- src/recordpanel.cpp \
- src/datarecorder.cpp \
- src/tooltipfilter.cpp \
- src/sneakylineedit.cpp \
- src/stream.cpp \
- src/streamchannel.cpp \
- src/channelinfomodel.cpp \
- src/ringbuffer.cpp \
- src/indexbuffer.cpp \
- src/linindexbuffer.cpp \
- src/readonlybuffer.cpp \
- src/framebufferseries.cpp \
- src/numberformatbox.cpp \
- src/endiannessbox.cpp \
- src/abstractreader.cpp \
- src/binarystreamreader.cpp \
- src/binarystreamreadersettings.cpp \
- src/asciireader.cpp \
- src/asciireadersettings.cpp \
- src/demoreader.cpp \
- src/demoreadersettings.cpp \
- src/framedreader.cpp \
- src/framedreadersettings.cpp \
- src/plotmanager.cpp \
- src/plotmenu.cpp \
- src/barplot.cpp \
- src/barchart.cpp \
- src/barscaledraw.cpp \
- src/numberformat.cpp \
- src/updatechecker.cpp \
- src/versionnumber.cpp \
- src/updatecheckdialog.cpp \
- src/samplepack.cpp \
- src/source.cpp \
- src/sink.cpp \
- src/samplecounter.cpp \
- src/ledwidget.cpp \
- src/datatextview.cpp \
- src/bpslabel.cpp
-
-HEADERS += \
- src/mainwindow.h \
- src/utils.h \
- src/portcontrol.h \
- src/floatswap.h \
- src/plot.h \
- src/hidabletabwidget.h \
- src/framebuffer.h \
- src/scalepicker.h \
- src/scalezoomer.h \
- src/portlist.h \
- src/snapshotview.h \
- src/snapshotmanager.h \
- src/snapshot.h \
- src/plotsnapshotoverlay.h \
- src/commandpanel.h \
- src/commandwidget.h \
- src/commandedit.h \
- src/dataformatpanel.h \
- src/tooltipfilter.h \
- src/sneakylineedit.h \
- src/framebufferseries.h \
- src/plotcontrolpanel.h \
- src/numberformatbox.h \
- src/endiannessbox.h \
- src/framedreadersettings.h \
- src/abstractreader.h \
- src/binarystreamreader.h \
- src/binarystreamreadersettings.h \
- src/asciireadersettings.h \
- src/asciireader.h \
- src/demoreader.h \
- src/framedreader.h \
- src/plotmanager.h \
- src/setting_defines.h \
- src/numberformat.h \
- src/recordpanel.h \
- src/updatechecker.h \
- src/updatecheckdialog.h \
- src/demoreadersettings.h \
- src/datatextview.h \
- src/bpslabel.h \
- src/barchart.h \
- src/barplot.h \
- src/barscaledraw.h \
- src/channelinfomodel.h \
- src/datarecorder.h \
- src/defines.h \
- src/indexbuffer.h \
- src/ledwidget.h \
- src/linindexbuffer.h \
- src/plotmenu.h \
- src/readonlybuffer.h \
- src/ringbuffer.h \
- src/samplecounter.h \
- src/samplepack.h \
- src/scrollbar.h \
- src/scrollzoomer.h \
- src/sink.h \
- src/source.h \
- src/streamchannel.h \
- src/stream.h \
- src/version.h \
- src/versionnumber.h \
- src/zoomer.h
-
-FORMS += \
- src/mainwindow.ui \
- src/about_dialog.ui \
- src/portcontrol.ui \
- src/snapshotview.ui \
- src/commandpanel.ui \
- src/commandwidget.ui \
- src/dataformatpanel.ui \
- src/plotcontrolpanel.ui \
- src/numberformatbox.ui \
- src/endiannessbox.ui \
- src/framedreadersettings.ui \
- src/binarystreamreadersettings.ui \
- src/asciireadersettings.ui \
- src/recordpanel.ui \
- src/updatecheckdialog.ui \
- src/demoreadersettings.ui \
- src/datatextview.ui
-
-INCLUDEPATH += qmake/ src/
-
-CONFIG += c++11
-
-RESOURCES += misc/icons.qrc
-
-win32 {
- RESOURCES += misc/winicons.qrc
-}
diff --git a/src/about_dialog.ui b/src/about_dialog.ui
--- a/src/about_dialog.ui
+++ b/src/about_dialog.ui
@@ -6,8 +6,8 @@
0
0
- 487
- 325
+ 516
+ 360
@@ -23,7 +23,7 @@
- <html><head/><body><p align="center"><span style=" font-size:14pt;">SerialPlot</span></p><p align="center"><span style=" font-size:10pt;">$VERSION_STRING$</span></p><p align="center">Developed by Hasan Yavuz Özderya</p><p align="center">Using Qt (<a href="https://www.qt.io/"><span style=" text-decoration: underline; color:#0000ff;">https://www.qt.io/</span></a>) and Qwt (<a href="http://qwt.sf.net"><span style=" text-decoration: underline; color:#0000ff;">http://qwt.sf.net</span></a>)</p><p align="center"><br/></p><p align="center">This software is GPL licensed. You can obtain source code from <a href="https://bitbucket.org/hyOzd/serialplot"><span style=" text-decoration: underline; color:#0000ff;">https://bitbucket.org/hyOzd/serialplot</span></a>.</p><p align="center"><br/></p><p align="right"><span style=" font-size:8pt;">RevID: $VERSION_REVISION$<br/></span></p></body></html>
+ <html><head/><body><p align="center"><span style=" font-size:14pt;">Tempo Thermocouple Plotter</span></p><p align="center">$VERSION_STRING$</p><p align="center">Based on SerialPlot</p><p align="center">Developed by Hasan Yavuz Özderya</p><p align="center">Adapted by Ethan Zonca</p><p align="center">Using Qt (<a href="https://www.qt.io/"><span style=" text-decoration: underline; color:#0000ff;">https://www.qt.io/</span></a>) and Qwt (<a href="http://qwt.sf.net"><span style=" text-decoration: underline; color:#0000ff;">http://qwt.sf.net</span></a>)</p><p align="center"><br/></p><p align="center">This software is GPL licensed. Original source code is avialable here: <a href="https://bitbucket.org/hyOzd/serialplot"><span style=" text-decoration: underline; color:#0000ff;">https://bitbucket.org/hyOzd/serialplot</span></a>.</p><p align="center"><br/></p><p align="right"><span style=" font-size:8pt;">RevID: $VERSION_REVISION$<br/></span></p></body></html>
true
diff --git a/src/bpslabel.cpp b/src/bpslabel.cpp
--- a/src/bpslabel.cpp
+++ b/src/bpslabel.cpp
@@ -48,7 +48,7 @@ void BPSLabel::onBpsTimeout()
prevBytesRead = curBytesRead;
unsigned bits = bytesRead * 8;
- unsigned maxBps = _portControl->maxBitRate();
+ unsigned maxBps = 1000000; // EMZ FIXME
QString str;
if (bits >= maxBps)
{
diff --git a/src/dataformatpanel.cpp b/src/dataformatpanel.cpp
--- a/src/dataformatpanel.cpp
+++ b/src/dataformatpanel.cpp
@@ -47,21 +47,22 @@ DataFormatPanel::DataFormatPanel(QSerial
ui->rbBinary->setChecked(true);
ui->horizontalLayout->addWidget(bsReader.settingsWidget(), 1);
- // initalize reader selection buttons
- connect(ui->rbBinary, &QRadioButton::toggled, [this](bool checked)
- {
- if (checked) selectReader(&bsReader);
- });
+ selectReader(&asciiReader);
+// // initalize reader selection buttons
+// connect(ui->rbBinary, &QRadioButton::toggled, [this](bool checked)
+// {
+// if (checked) selectReader(&bsReader);
+// });
- connect(ui->rbAscii, &QRadioButton::toggled, [this](bool checked)
- {
- if (checked) selectReader(&asciiReader);
- });
+// connect(ui->rbAscii, &QRadioButton::toggled, [this](bool checked)
+// {
+// if (checked) selectReader(&asciiReader);
+// });
- connect(ui->rbFramed, &QRadioButton::toggled, [this](bool checked)
- {
- if (checked) selectReader(&framedReader);
- });
+// connect(ui->rbFramed, &QRadioButton::toggled, [this](bool checked)
+// {
+// if (checked) selectReader(&framedReader);
+// });
}
DataFormatPanel::~DataFormatPanel()
diff --git a/src/dataformatpanel.ui b/src/dataformatpanel.ui
--- a/src/dataformatpanel.ui
+++ b/src/dataformatpanel.ui
@@ -25,18 +25,24 @@
Simple Binary
- true
+ false
-
+
+ true
+
Data is sent in the form of ASCII text as comma seperated values. Easy to implement.
ASCII
+
+ true
+
-
diff --git a/src/main.cpp b/src/main.cpp
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -81,7 +81,7 @@ int main(int argc, char *argv[])
a.installEventFilter(&ttf);
// log application information
- qDebug() << "SerialPlot" << VERSION_STRING;
+ qDebug() << "Tempo Plotter" << VERSION_STRING;
qDebug() << "Revision" << VERSION_REVISION;
w.show();
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -53,13 +53,13 @@ Q_IMPORT_PLUGIN(QWindowsIntegrationPlugi
// TODO: depends on tab insertion order, a better solution would be to use object names
const QMap panelSettingMap({
- {0, "Port"},
- {1, "DataFormat"},
- {2, "Plot"},
- {3, "Commands"},
- {4, "Record"},
- {5, "TextView"},
- {6, "Log"}
+ // {0, "Port"},
+ // {0, "DataFormat"},
+ {0, "Plot"},
+ {1, "Commands"},
+ {2, "Record"},
+ //{3, "TextView"},
+ {3, "Log"}
});
MainWindow::MainWindow(QWidget *parent) :
@@ -73,19 +73,18 @@ MainWindow::MainWindow(QWidget *parent)
dataFormatPanel(&serialPort),
recordPanel(&stream),
textView(&stream),
- updateCheckDialog(this),
bpsLabel(&portControl, &dataFormatPanel, this)
{
ui->setupUi(this);
plotMan = new PlotManager(ui->plotArea, &plotMenu, &stream);
- ui->tabWidget->insertTab(0, &portControl, "Port");
- ui->tabWidget->insertTab(1, &dataFormatPanel, "Data Format");
- ui->tabWidget->insertTab(2, &plotControlPanel, "Plot");
- ui->tabWidget->insertTab(3, &commandPanel, "Commands");
- ui->tabWidget->insertTab(4, &recordPanel, "Record");
- ui->tabWidget->insertTab(5, &textView, "Text View");
+// ui->tabWidget->insertTab(0, &portControl, "Port");
+// ui->tabWidget->insertTab(0, &dataFormatPanel, "Data Format");
+ ui->tabWidget->insertTab(0, &plotControlPanel, "Plot");
+ ui->tabWidget->insertTab(1, &commandPanel, "Commands");
+ ui->tabWidget->insertTab(2, &recordPanel, "Record");
+// ui->tabWidget->insertTab(3, &textView, "Text View");
ui->tabWidget->setCurrentIndex(0);
auto tbPortControl = portControl.toolBar();
addToolBar(tbPortControl);
@@ -113,6 +112,8 @@ MainWindow::MainWindow(QWidget *parent)
tbMenu->addAction(ui->plotToolBar->toggleViewAction());
tbMenu->addAction(portControl.toolBar()->toggleViewAction());
+
+
// init secondary plot menu
auto group = new QActionGroup(this);
group->addAction(ui->actionVertical);
@@ -124,6 +125,7 @@ MainWindow::MainWindow(QWidget *parent)
connect(ui->actionBarPlot, &QAction::triggered,
this, &MainWindow::showBarPlot);
+
connect(ui->actionVertical, &QAction::triggered,
[this](bool checked)
{
@@ -140,9 +142,6 @@ MainWindow::MainWindow(QWidget *parent)
QObject::connect(ui->actionHelpAbout, &QAction::triggered,
&aboutDialog, &QWidget::show);
- QObject::connect(ui->actionCheckUpdate, &QAction::triggered,
- &updateCheckDialog, &QWidget::show);
-
QObject::connect(ui->actionReportBug, &QAction::triggered,
[](){QDesktopServices::openUrl(QUrl(BUG_REPORT_URL));});
@@ -224,6 +223,9 @@ MainWindow::MainWindow(QWidget *parent)
stream.setNumSamples(numOfSamples);
plotControlPanel.setChannelInfoModel(stream.infoModel());
+ // Show bar plot EMZ
+ this->showBarPlot(true);
+
// init scales
stream.setXAxis(plotControlPanel.xAxisAsIndex(),
plotControlPanel.xMin(), plotControlPanel.xMax());
@@ -303,7 +305,7 @@ void MainWindow::closeEvent(QCloseEvent
if (!snapshotMan.isAllSaved())
{
auto clickedButton = QMessageBox::warning(
- this, "Closing SerialPlot",
+ this, "Closing Tempo Plotter",
"There are un-saved snapshots. If you close you will loose the data.",
QMessageBox::Discard, QMessageBox::Cancel);
if (clickedButton == QMessageBox::Cancel)
@@ -325,13 +327,13 @@ void MainWindow::closeEvent(QCloseEvent
if (settings.status() == QSettings::AccessError)
{
QString file = settings.fileName();
- errorText = QString("Serialplot cannot save settings due to access error. \
+ errorText = QString("Tempo Plotter cannot save settings due to access error. \
This happens if you have run serialplot as root (with sudo for ex.) previously. \
Try fixing the permissions of file: %1, or just delete it.").arg(file);
}
else
{
- errorText = QString("Serialplot cannot save settings due to unknown error: %1").\
+ errorText = QString("Tempo Plotter cannot save settings due to unknown error: %1").\
arg(settings.status());
}
@@ -508,29 +510,27 @@ void MainWindow::messageHandler(QtMsgTyp
void MainWindow::saveAllSettings(QSettings* settings)
{
saveMWSettings(settings);
- portControl.saveSettings(settings);
- dataFormatPanel.saveSettings(settings);
- stream.saveSettings(settings);
- plotControlPanel.saveSettings(settings);
- plotMenu.saveSettings(settings);
- commandPanel.saveSettings(settings);
- recordPanel.saveSettings(settings);
- textView.saveSettings(settings);
- updateCheckDialog.saveSettings(settings);
+// portControl.saveSettings(settings);
+// dataFormatPanel.saveSettings(settings);
+// stream.saveSettings(settings);
+// plotControlPanel.saveSettings(settings);
+// plotMenu.saveSettings(settings);
+// commandPanel.saveSettings(settings);
+// recordPanel.saveSettings(settings);
+// textView.saveSettings(settings);
}
void MainWindow::loadAllSettings(QSettings* settings)
{
loadMWSettings(settings);
- portControl.loadSettings(settings);
- dataFormatPanel.loadSettings(settings);
- stream.loadSettings(settings);
- plotControlPanel.loadSettings(settings);
- plotMenu.loadSettings(settings);
- commandPanel.loadSettings(settings);
- recordPanel.loadSettings(settings);
- textView.loadSettings(settings);
- updateCheckDialog.loadSettings(settings);
+// portControl.loadSettings(settings);
+// dataFormatPanel.loadSettings(settings);
+// stream.loadSettings(settings);
+// plotControlPanel.loadSettings(settings);
+// plotMenu.loadSettings(settings);
+// commandPanel.loadSettings(settings);
+// recordPanel.loadSettings(settings);
+// textView.loadSettings(settings);
}
void MainWindow::saveMWSettings(QSettings* settings)
@@ -650,10 +650,6 @@ void MainWindow::handleCommandLineOption
portControl.selectPort(parser.value(portOpt));
}
- if (parser.isSet(baudrateOpt))
- {
- portControl.selectBaudrate(parser.value(baudrateOpt));
- }
if (parser.isSet(openPortOpt))
{
diff --git a/src/mainwindow.h b/src/mainwindow.h
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -44,7 +44,6 @@
#include "snapshotmanager.h"
#include "plotmanager.h"
#include "plotmenu.h"
-#include "updatecheckdialog.h"
#include "samplecounter.h"
#include "datatextview.h"
#include "bpslabel.h"
@@ -91,7 +90,6 @@ private:
PlotControlPanel plotControlPanel;
PlotMenu plotMenu;
DataTextView textView;
- UpdateCheckDialog updateCheckDialog;
BPSLabel bpsLabel;
void handleCommandLineOptions(const QCoreApplication &app);
diff --git a/src/mainwindow.ui b/src/mainwindow.ui
--- a/src/mainwindow.ui
+++ b/src/mainwindow.ui
@@ -11,7 +11,7 @@
- SerialPlot
+ Tempo Thermocouple Plotter
@@ -101,16 +101,13 @@
0
0
653
- 24
+ 30
-
-
- -
-
-
-
-
-
- QFrame::NoFrame
+
-
+
+
+
+ 0
+ 0
+
-
-
-
-
-
- No Parity
-
-
- true
-
-
-
- -
-
-
- Odd Parity
-
-
-
- -
-
-
- Even Parity
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 2
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
- 8 bits
-
-
- true
-
-
-
- -
-
-
- 7 bits
-
-
-
- -
-
-
- 6 bits
-
-
-
- -
-
-
- 5 bits
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 2
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
- 1 Stop Bit
-
-
- true
-
-
-
- -
-
-
- 2 Stop Bit
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 2
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
- No Flow Control
-
-
- true
-
-
-
- -
-
-
- Hardware Control
-
-
-
- -
-
-
- Software Control
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 2
-
-
-
-
-
+
+
+ 85
+ 25
+
+
+
+ Toggle port status
+
+
+ Open
+
+
+ true
+
@@ -280,292 +112,13 @@
-
-
-
-
-
-
-
- 0
- 0
-
-
-
-
- 85
- 50
-
-
-
- Toggle port status
-
-
- Open
-
-
- true
-
-
-
- -
-
-
- 2
-
-
-
-
-
-
- 15
- 15
-
-
-
-
- 15
- 15
-
-
-
- Request To Send
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
- 40
- 20
-
-
-
- Data Terminal Ready
-
-
- DTR
-
-
-
- -
-
-
-
- 15
- 15
-
-
-
-
- 15
- 15
-
-
-
- Data Terminal Ready
-
-
-
- -
-
-
-
- 15
- 15
-
-
-
-
- 15
- 15
-
-
-
- Data Set Ready
-
-
-
- -
-
-
- Data Set Ready
-
-
- DSR
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 40
- 20
-
-
-
- Request To Send
-
-
- RTS
-
-
-
- -
-
-
- Data Carrier Detect
-
-
- DCD
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 15
- 15
-
-
-
-
- 15
- 15
-
-
-
- Data Carrier Detect
-
-
-
- -
-
-
- Ring Indicator
-
-
- RI
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 15
- 15
-
-
-
-
- 15
- 15
-
-
-
- Ring Indicator
-
-
-
- -
-
-
-
- 15
- 15
-
-
-
-
- 15
- 15
-
-
-
- Clear To Send
-
-
-
- -
-
-
- Clear To Send
-
-
- CTS
-
-
- Qt::AlignCenter
-
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
-
- 20
- 1
-
-
-
-
-
+
-
-
- LedWidget
- QWidget
-
- 1
-
-
cbPortList
pbReloadPorts
- pbOpenPort
- cbBaudRate
- rbNoParity
- rbOddParity
- rbEvenParity
- rb8Bits
- rb7Bits
- rb6Bits
- rb5Bits
- rb1StopBit
- rb2StopBit
- rbNoFlowControl
- rbHardwareControl
- rbSoftwareControl
diff --git a/src/updatecheckdialog.cpp b/src/updatecheckdialog.cpp
deleted file mode 100644
--- a/src/updatecheckdialog.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- Copyright © 2017 Hasan Yavuz Özderya
-
- This file is part of serialplot.
-
- serialplot 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.
-
- serialplot 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 serialplot. If not, see .
-*/
-
-#include "setting_defines.h"
-#include "updatecheckdialog.h"
-#include "ui_updatecheckdialog.h"
-
-UpdateCheckDialog::UpdateCheckDialog(QWidget *parent) :
- QDialog(parent),
- ui(new Ui::UpdateCheckDialog)
-{
- ui->setupUi(this);
-
- // by default start from yesterday, so that we check at first run
- lastCheck = QDate::currentDate().addDays(-1);
-
- connect(&updateChecker, &UpdateChecker::checkFailed,
- [this](QString errorMessage)
- {
- lastCheck = QDate::currentDate();
- ui->label->setText(QString("Update check failed.\n") + errorMessage);
- });
-
- connect(&updateChecker, &UpdateChecker::checkFinished,
- [this](bool found, QString newVersion, QString downloadUrl)
- {
- QString text;
- if (!found)
- {
- text = "There is no update yet.";
- }
- else
- {
- show();
-#ifdef UPDATE_TYPE_PKGMAN
- text = QString("There is a new version: %1. "
- "Use your package manager to update"
- " or click to download.")\
- .arg(newVersion).arg(downloadUrl);
-#else
- text = QString("Found update to version %1. Click to download.")\
- .arg(newVersion).arg(downloadUrl);
-#endif
- }
-
- lastCheck = QDate::currentDate();
- ui->label->setText(text);
- });
-}
-
-UpdateCheckDialog::~UpdateCheckDialog()
-{
- delete ui;
-}
-
-void UpdateCheckDialog::showEvent(QShowEvent *event)
-{
- updateChecker.checkUpdate();
- ui->label->setText("Checking update...");
-}
-
-void UpdateCheckDialog::closeEvent(QShowEvent *event)
-{
- if (updateChecker.isChecking()) updateChecker.cancelCheck();
-}
-
-void UpdateCheckDialog::saveSettings(QSettings* settings)
-{
- settings->beginGroup(SettingGroup_UpdateCheck);
- settings->setValue(SG_UpdateCheck_Periodic, ui->cbPeriodic->isChecked());
- settings->setValue(SG_UpdateCheck_LastCheck, lastCheck.toString(Qt::ISODate));
- settings->endGroup();
-}
-
-void UpdateCheckDialog::loadSettings(QSettings* settings)
-{
- settings->beginGroup(SettingGroup_UpdateCheck);
- ui->cbPeriodic->setChecked(settings->value(SG_UpdateCheck_Periodic,
- ui->cbPeriodic->isChecked()).toBool());
- auto lastCheckS = settings->value(SG_UpdateCheck_LastCheck, lastCheck.toString(Qt::ISODate)).toString();
- lastCheck = QDate::fromString(lastCheckS, Qt::ISODate);
- settings->endGroup();
-
- // start the periodic update if required
- if (ui->cbPeriodic->isChecked() && lastCheck < QDate::currentDate())
- {
- updateChecker.checkUpdate();
- }
-}
diff --git a/src/updatecheckdialog.h b/src/updatecheckdialog.h
deleted file mode 100644
--- a/src/updatecheckdialog.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- Copyright © 2017 Hasan Yavuz Özderya
-
- This file is part of serialplot.
-
- serialplot 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.
-
- serialplot 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 serialplot. If not, see .
-*/
-
-#ifndef UPDATECHECKDIALOG_H
-#define UPDATECHECKDIALOG_H
-
-#include
-#include
-#include
-#include "updatechecker.h"
-
-namespace Ui {
-class UpdateCheckDialog;
-}
-
-class UpdateCheckDialog : public QDialog
-{
- Q_OBJECT
-
-public:
- explicit UpdateCheckDialog(QWidget *parent = 0);
- ~UpdateCheckDialog();
-
- /// Stores update settings into a `QSettings`.
- void saveSettings(QSettings* settings);
- /// Loads update settings from a `QSettings`.
- void loadSettings(QSettings* settings);
-
-private:
- Ui::UpdateCheckDialog *ui;
- UpdateChecker updateChecker;
- QDate lastCheck;
-
- void showEvent(QShowEvent *event);
- void closeEvent(QShowEvent *event);
-};
-
-#endif // UPDATECHECKDIALOG_H
diff --git a/src/updatecheckdialog.ui b/src/updatecheckdialog.ui
deleted file mode 100644
--- a/src/updatecheckdialog.ui
+++ /dev/null
@@ -1,71 +0,0 @@
-
-
- UpdateCheckDialog
-
-
-
- 0
- 0
- 400
- 148
-
-
-
- Check Update
-
-
- -
-
-
- Checking update...
-
-
- true
-
-
-
- -
-
-
- Updates will be checked only once a day at first start of the application
-
-
- Check updates periodically
-
-
- true
-
-
-
- -
-
-
- Qt::Horizontal
-
-
- QDialogButtonBox::Close
-
-
-
-
-
-
-
-
- buttonBox
- clicked(QAbstractButton*)
- UpdateCheckDialog
- close()
-
-
- 199
- 125
-
-
- 199
- 73
-
-
-
-
-
diff --git a/src/updatechecker.cpp b/src/updatechecker.cpp
deleted file mode 100644
--- a/src/updatechecker.cpp
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- Copyright © 2018 Hasan Yavuz Özderya
-
- This file is part of serialplot.
-
- serialplot 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.
-
- serialplot 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 serialplot. If not, see .
-*/
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "updatechecker.h"
-
-// This link returns the list of downloads in JSON format. Note that we only use
-// the first page because results are sorted new to old.
-const char BB_DOWNLOADS_URL[] = "https://api.bitbucket.org/2.0/repositories/hyozd/serialplot/downloads?fields=values.name,values.links.self.href";
-
-UpdateChecker::UpdateChecker(QObject *parent) :
- QObject(parent), nam(this)
-{
- activeReply = NULL;
-
- connect(&nam, &QNetworkAccessManager::finished,
- this, &UpdateChecker::onReqFinished);
-}
-
-bool UpdateChecker::isChecking() const
-{
- return activeReply != NULL && !activeReply->isFinished();
-}
-
-void UpdateChecker::checkUpdate()
-{
- if (isChecking()) return;
-
- auto req = QNetworkRequest(QUrl(BB_DOWNLOADS_URL));
- activeReply = nam.get(req);
-}
-
-void UpdateChecker::cancelCheck()
-{
- if (activeReply != NULL) activeReply->abort();
-}
-
-void UpdateChecker::onReqFinished(QNetworkReply* reply)
-{
- if (reply->error() != QNetworkReply::NoError)
- {
- emit checkFailed(QString("Network error: ") + reply->errorString());
- }
- else
- {
- QJsonParseError error;
- auto data = QJsonDocument::fromJson(reply->readAll(), &error);
- if (error.error != QJsonParseError::NoError)
- {
- emit checkFailed(QString("JSon parsing error: ") + error.errorString());
- }
- else
- {
- QList files;
- if (!parseData(data, files))
- {
- // TODO: emit detailed data contents for logging
- emit checkFailed("Data parsing error.");
- }
- else
- {
- FileInfo updateFile;
- if (findUpdate(files, updateFile))
- {
- emit checkFinished(
- true, updateFile.version.toString(), updateFile.link);
- }
- else
- {
- emit checkFinished(false, "", "");
- }
- }
- }
- }
- reply->deleteLater();
- activeReply = NULL;
-}
-
-bool UpdateChecker::parseData(const QJsonDocument& data, QList& files) const
-{
- /* Data is expected to be in this form:
-
- {
- "values": [
- {
- "name": "serialplot-0.9.1-x86_64.AppImage",
- "links": {
- "self": {
- "href": "https://api.bitbucket.org/2.0/repositories/hyOzd/serialplot/downloads/serialplot-0.9.1-x86_64.AppImage"
- }
- }
- }, ... ]
- }
- */
-
- if (!data.isObject()) return false;
-
- auto values = data.object().value("values");
- if (values == QJsonValue::Undefined || !values.isArray()) return false;
-
- for (auto value : values.toArray())
- {
- if (!value.isObject()) return false;
-
- auto name = value.toObject().value("name");
- if (name.isUndefined() || !name.isString())
- return false;
-
- auto links = value.toObject().value("links");
- if (links.isUndefined() || !links.isObject())
- return false;
-
- auto self = links.toObject().value("self");
- if (self.isUndefined() || !self.isObject())
- return false;
-
- auto href = self.toObject().value("href");
- if (href.isUndefined() || !href.isString())
- return false;
-
- FileInfo finfo;
- finfo.name = name.toString();
- finfo.link = href.toString();
- finfo.hasVersion = VersionNumber::extract(name.toString(), finfo.version);
-
- if (finfo.name.contains("amd64") ||
- finfo.name.contains("x86_64") ||
- finfo.name.contains("win64"))
- {
- finfo.arch = FileArch::amd64;
- }
- else if (finfo.name.contains("win32") ||
- finfo.name.contains("i386"))
- {
- finfo.arch = FileArch::_i386;
- }
- else
- {
- finfo.arch = FileArch::unknown;
- }
-
- files += finfo;
- }
-
- return true;
-}
-
-bool UpdateChecker::findUpdate(const QList& files, FileInfo& foundFile) const
-{
- QList fflist;
-
- // filter the file list according to extension and version number
- for (int i = 0; i < files.length(); i++)
- {
- // file type to look
-#if defined(Q_OS_WIN)
- const char ext[] = ".exe";
-#else // of course linux
- const char ext[] = ".appimage";
-#endif
-
- // file architecture to look
-#if defined(Q_PROCESSOR_X86_64)
- const FileArch arch = FileArch::amd64;
-#elif defined(Q_PROCESSOR_X86_32)
- const FileArch arch = FileArch::_i386;
-#elif defined(Q_PROCESSOR_ARM)
- const FileArch arch = FileArch::arm;
-#else
- #error Unknown architecture for update file detection.
-#endif
-
- // filter the file list
- auto file = files[i];
- if (file.name.contains(ext, Qt::CaseInsensitive) &&
- file.arch == arch &&
- file.hasVersion && file.version > CurrentVersion)
- {
- fflist += file;
- }
- }
-
- // sort and find most up to date file
- if (!fflist.empty())
- {
- std::sort(fflist.begin(), fflist.end(),
- [](const FileInfo& a, const FileInfo& b)
- {
- return a.version > b.version;
- });
-
- foundFile = fflist[0];
- return true;
- }
- else
- {
- return false;
- }
-}
diff --git a/src/updatechecker.h b/src/updatechecker.h
deleted file mode 100644
--- a/src/updatechecker.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- Copyright © 2018 Hasan Yavuz Özderya
-
- This file is part of serialplot.
-
- serialplot 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.
-
- serialplot 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 serialplot. If not, see .
-*/
-
-#ifndef UPDATECHECKER_H
-#define UPDATECHECKER_H
-
-#include
-#include
-#include
-#include
-
-#include "versionnumber.h"
-
-class UpdateChecker : public QObject
-{
- Q_OBJECT
-public:
- explicit UpdateChecker(QObject *parent = 0);
-
- bool isChecking() const;
-
-signals:
- void checkFinished(bool found, QString newVersion, QString downloadUrl);
- void checkFailed(QString errorMessage);
-
-public slots:
- void checkUpdate();
- void cancelCheck();
-
-private:
- enum class FileArch
- {
- unknown,
- _i386,
- amd64,
- arm
- };
-
- struct FileInfo
- {
- QString name;
- QString link;
- bool hasVersion;
- VersionNumber version;
- FileArch arch;
- };
-
- QNetworkAccessManager nam;
- QNetworkReply* activeReply;
-
- /// Parses json and creates a list of files
- bool parseData(const QJsonDocument& data, QList& files) const;
- /// Finds the update file in the file list. Returns `-1` if no new version
- /// is found.
- bool findUpdate(const QList& files, FileInfo& foundFile) const;
-
-private slots:
- void onReqFinished(QNetworkReply* reply);
-};
-
-#endif // UPDATECHECKER_H
diff --git a/tempo-plotter.pro b/tempo-plotter.pro
new file mode 100644
--- /dev/null
+++ b/tempo-plotter.pro
@@ -0,0 +1,189 @@
+#
+# Copyright © 2019 Hasan Yavuz Özderya
+#
+# This file is part of serialplot.
+#
+# serialplot 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.
+#
+# serialplot 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 serialplot. If not, see .
+#
+
+#-------------------------------------------------
+#
+# Project created by QtCreator 2015-03-04T08:20:06
+#
+#-------------------------------------------------
+
+QT += core gui serialport network svg
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = tempo-plotter
+TEMPLATE = app
+
+CONFIG += qwt
+# LIBS += -lqwt # enable this line if qwt pri files aren't installed
+
+DEFINES += PROGRAM_NAME="\\\"tempo-plotter\\\""
+
+DEFINES += VERSION_MAJOR=10 VERSION_MINOR=0 VERSION_PATCH=0 VERSION_STRING=\\\"10.0.0\\\"
+
+SOURCES += \
+ src/main.cpp \
+ src/mainwindow.cpp \
+ src/portcontrol.cpp \
+ src/plot.cpp \
+ src/zoomer.cpp \
+ src/scrollzoomer.cpp \
+ src/scrollbar.cpp \
+ src/hidabletabwidget.cpp \
+ src/scalepicker.cpp \
+ src/scalezoomer.cpp \
+ src/portlist.cpp \
+ src/snapshot.cpp \
+ src/snapshotview.cpp \
+ src/snapshotmanager.cpp \
+ src/plotsnapshotoverlay.cpp \
+ src/commandpanel.cpp \
+ src/commandwidget.cpp \
+ src/commandedit.cpp \
+ src/dataformatpanel.cpp \
+ src/plotcontrolpanel.cpp \
+ src/recordpanel.cpp \
+ src/datarecorder.cpp \
+ src/tooltipfilter.cpp \
+ src/sneakylineedit.cpp \
+ src/stream.cpp \
+ src/streamchannel.cpp \
+ src/channelinfomodel.cpp \
+ src/ringbuffer.cpp \
+ src/indexbuffer.cpp \
+ src/linindexbuffer.cpp \
+ src/readonlybuffer.cpp \
+ src/framebufferseries.cpp \
+ src/numberformatbox.cpp \
+ src/endiannessbox.cpp \
+ src/abstractreader.cpp \
+ src/binarystreamreader.cpp \
+ src/binarystreamreadersettings.cpp \
+ src/asciireader.cpp \
+ src/asciireadersettings.cpp \
+ src/demoreader.cpp \
+ src/demoreadersettings.cpp \
+ src/framedreader.cpp \
+ src/framedreadersettings.cpp \
+ src/plotmanager.cpp \
+ src/plotmenu.cpp \
+ src/barplot.cpp \
+ src/barchart.cpp \
+ src/barscaledraw.cpp \
+ src/numberformat.cpp \
+ src/versionnumber.cpp \
+ src/samplepack.cpp \
+ src/source.cpp \
+ src/sink.cpp \
+ src/samplecounter.cpp \
+ src/ledwidget.cpp \
+ src/datatextview.cpp \
+ src/bpslabel.cpp
+
+HEADERS += \
+ src/mainwindow.h \
+ src/utils.h \
+ src/portcontrol.h \
+ src/floatswap.h \
+ src/plot.h \
+ src/hidabletabwidget.h \
+ src/framebuffer.h \
+ src/scalepicker.h \
+ src/scalezoomer.h \
+ src/portlist.h \
+ src/snapshotview.h \
+ src/snapshotmanager.h \
+ src/snapshot.h \
+ src/plotsnapshotoverlay.h \
+ src/commandpanel.h \
+ src/commandwidget.h \
+ src/commandedit.h \
+ src/dataformatpanel.h \
+ src/tooltipfilter.h \
+ src/sneakylineedit.h \
+ src/framebufferseries.h \
+ src/plotcontrolpanel.h \
+ src/numberformatbox.h \
+ src/endiannessbox.h \
+ src/framedreadersettings.h \
+ src/abstractreader.h \
+ src/binarystreamreader.h \
+ src/binarystreamreadersettings.h \
+ src/asciireadersettings.h \
+ src/asciireader.h \
+ src/demoreader.h \
+ src/framedreader.h \
+ src/plotmanager.h \
+ src/setting_defines.h \
+ src/numberformat.h \
+ src/recordpanel.h \
+ src/demoreadersettings.h \
+ src/datatextview.h \
+ src/bpslabel.h \
+ src/barchart.h \
+ src/barplot.h \
+ src/barscaledraw.h \
+ src/channelinfomodel.h \
+ src/datarecorder.h \
+ src/defines.h \
+ src/indexbuffer.h \
+ src/ledwidget.h \
+ src/linindexbuffer.h \
+ src/plotmenu.h \
+ src/readonlybuffer.h \
+ src/ringbuffer.h \
+ src/samplecounter.h \
+ src/samplepack.h \
+ src/scrollbar.h \
+ src/scrollzoomer.h \
+ src/sink.h \
+ src/source.h \
+ src/streamchannel.h \
+ src/stream.h \
+ src/version.h \
+ src/versionnumber.h \
+ src/zoomer.h
+
+FORMS += \
+ src/mainwindow.ui \
+ src/about_dialog.ui \
+ src/portcontrol.ui \
+ src/snapshotview.ui \
+ src/commandpanel.ui \
+ src/commandwidget.ui \
+ src/dataformatpanel.ui \
+ src/plotcontrolpanel.ui \
+ src/numberformatbox.ui \
+ src/endiannessbox.ui \
+ src/framedreadersettings.ui \
+ src/binarystreamreadersettings.ui \
+ src/asciireadersettings.ui \
+ src/recordpanel.ui \
+ src/demoreadersettings.ui \
+ src/datatextview.ui
+
+INCLUDEPATH += qmake/ src/
+
+CONFIG += c++11
+
+RESOURCES += misc/icons.qrc
+
+win32 {
+ RESOURCES += misc/winicons.qrc
+}