From b5445c8a119d15939882417ad1d801d7258f7e23 Mon Sep 17 00:00:00 2001 From: leo Date: Sun, 6 Jun 2021 16:58:08 +0200 Subject: [PATCH] added possibility to load data from csv file --- inputparser.cpp | 5 ++++- main.cpp | 10 ++++++++++ mainwindow.cpp | 30 +++++++++++++++++++++--------- mainwindow.h | 3 ++- 4 files changed, 37 insertions(+), 11 deletions(-) diff --git a/inputparser.cpp b/inputparser.cpp index 9b79c31..d048ee2 100644 --- a/inputparser.cpp +++ b/inputparser.cpp @@ -58,6 +58,9 @@ void InputParser::process() case '.': decimal=true; break; + case '-': + sign=-1; + break; default: switch(index){ case 0: @@ -134,7 +137,7 @@ void InputParser::sendPixel() 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)); currentX++; currentPowerValue=0; diff --git a/main.cpp b/main.cpp index fd3e533..9421242 100644 --- a/main.cpp +++ b/main.cpp @@ -1,11 +1,21 @@ #include "mainwindow.h" #include +#include int main(int argc, char *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; + w.sendArgs(&argsParser); w.show(); return a.exec(); } diff --git a/mainwindow.cpp b/mainwindow.cpp index ab7ec70..bf3a0b4 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -16,8 +16,29 @@ MainWindow::MainWindow(QWidget *parent) { setCentralWidget(displayArea); + createActions(); + createMenus(); + + setWindowTitle(tr("LivePow")); +} + +MainWindow::~MainWindow() +{ +} + +void MainWindow::sendArgs(QCommandLineParser *argsParser) +{ + const QStringList posArgs = argsParser->positionalArguments(); + 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); QThread* workerThread=new QThread(); @@ -26,15 +47,6 @@ MainWindow::MainWindow(QWidget *parent) connect(workerThread, &QThread::started, parser, &InputParser::process); connect(workerThread, &QThread::finished, workerThread, &QThread::deleteLater); workerThread->start(); - - createActions(); - createMenus(); - - setWindowTitle(tr("LivePow")); -} - -MainWindow::~MainWindow() -{ } void MainWindow::save(){ diff --git a/mainwindow.h b/mainwindow.h index 0d88a3a..5514e10 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -2,6 +2,7 @@ #define MAINWINDOW_H #include +#include class DisplayArea; class InputParser; @@ -14,7 +15,7 @@ public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); - static void tick(); + void sendArgs(QCommandLineParser* argsParser); InputParser *parser;