added possibility to load data from csv file

This commit is contained in:
leo 2021-06-06 16:58:08 +02:00
parent e435684f9c
commit b5445c8a11
Signed by: leo
GPG Key ID: 0DD993BFB2B307DB
4 changed files with 37 additions and 11 deletions

View File

@ -58,6 +58,9 @@ void InputParser::process()
case '.': case '.':
decimal=true; decimal=true;
break; break;
case '-':
sign=-1;
break;
default: default:
switch(index){ switch(index){
case 0: case 0:
@ -134,7 +137,7 @@ void InputParser::sendPixel()
maxPow=newMax; maxPow=newMax;
} }
int col=qRound(currentPowerValue-minPow)*255/(maxPow-minPow); int col=qRound(currentPowerValue-minPow*255/(maxPow-minPow));
display->setPixel(currentX,currentY,qRgba(col,col,col,255)); display->setPixel(currentX,currentY,qRgba(col,col,col,255));
currentX++; currentX++;
currentPowerValue=0; currentPowerValue=0;

View File

@ -1,11 +1,21 @@
#include "mainwindow.h" #include "mainwindow.h"
#include <QApplication> #include <QApplication>
#include <QCommandLineParser>
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication a(argc, argv); QApplication a(argc, argv);
QCommandLineParser argsParser;
argsParser.setApplicationDescription("A live heatmap creator for soapy_power");
argsParser.addHelpOption();
argsParser.addPositionalArgument("source","csv file to read data from, default stdin");
argsParser.process(a);
MainWindow w; MainWindow w;
w.sendArgs(&argsParser);
w.show(); w.show();
return a.exec(); return a.exec();
} }

View File

@ -16,8 +16,29 @@ MainWindow::MainWindow(QWidget *parent)
{ {
setCentralWidget(displayArea); setCentralWidget(displayArea);
createActions();
createMenus();
setWindowTitle(tr("LivePow"));
}
MainWindow::~MainWindow()
{
}
void MainWindow::sendArgs(QCommandLineParser *argsParser)
{
const QStringList posArgs = argsParser->positionalArguments();
FILE* input=stdin; FILE* input=stdin;
if(posArgs.length()==1){
QFile file(posArgs.at(0));
QFileInfo fileInfo(file);
input=fopen(fileInfo.absoluteFilePath().toLatin1(),"r");
}
else if(posArgs.length()>1) fprintf(stderr,"too much positionnal args, using stdin");
parser=new InputParser(input,displayArea); parser=new InputParser(input,displayArea);
QThread* workerThread=new QThread(); QThread* workerThread=new QThread();
@ -26,15 +47,6 @@ MainWindow::MainWindow(QWidget *parent)
connect(workerThread, &QThread::started, parser, &InputParser::process); connect(workerThread, &QThread::started, parser, &InputParser::process);
connect(workerThread, &QThread::finished, workerThread, &QThread::deleteLater); connect(workerThread, &QThread::finished, workerThread, &QThread::deleteLater);
workerThread->start(); workerThread->start();
createActions();
createMenus();
setWindowTitle(tr("LivePow"));
}
MainWindow::~MainWindow()
{
} }
void MainWindow::save(){ void MainWindow::save(){

View File

@ -2,6 +2,7 @@
#define MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow> #include <QMainWindow>
#include <QCommandLineParser>
class DisplayArea; class DisplayArea;
class InputParser; class InputParser;
@ -14,7 +15,7 @@ public:
MainWindow(QWidget *parent = nullptr); MainWindow(QWidget *parent = nullptr);
~MainWindow(); ~MainWindow();
static void tick(); void sendArgs(QCommandLineParser* argsParser);
InputParser *parser; InputParser *parser;