File qloud-Qt5.patch of Package qloud

Index: qloud-1.2/src/CapThread.cpp
===================================================================
--- qloud-1.2.orig/src/CapThread.cpp
+++ qloud-1.2/src/CapThread.cpp
@@ -40,7 +40,7 @@ void CapThread::run() {
     }
     emit workIsDone(); // for ticker and IR-management
 
-    QString msg("Recording is done. Maximub response level is ");
+	QString msg("Recording is done. Maximum response level is ");
     msg += QVariant(QLUtl::toDb(this->capture->getMaxResponse())).toString();
     emit showStatus(msg);
 }
Index: qloud-1.2/src/CapThread.h
===================================================================
--- qloud-1.2.orig/src/CapThread.h
+++ qloud-1.2/src/CapThread.h
@@ -25,11 +25,15 @@
 #include "TickPoster.h"
 
 class CapThread: public QThread {
-
     Q_OBJECT
 
 public:
-    CapThread(QObject* parent, Capture* aCapture, TickPoster* aPoster, int playDb);
+	CapThread(
+		QObject* parent,
+		Capture* aCapture,
+		TickPoster* aPoster,
+		int playDb
+	);
 
 signals:
     void workIsDone();
Index: qloud-1.2/src/Capture.cpp
===================================================================
--- qloud-1.2.orig/src/Capture.cpp
+++ qloud-1.2/src/Capture.cpp
@@ -24,7 +24,7 @@
 #include "WavIn.h"
 #include "WavOut.h"
 
-Capture::Capture(QString aDirPath) throw (QLE) {
+Capture::Capture(QString aDirPath) {
     this->dirPath = aDirPath;
     this->jack = 0;
     this->playBuf = 0;
@@ -42,7 +42,7 @@ Capture::~Capture() {
 }
 
 
-void Capture::openJack() throw (QLE) {
+void Capture::openJack() {
     if(this->jack)
         throw QLE("JACK client is already opened!");
     this->freeBuffers();
@@ -51,12 +51,12 @@ void Capture::openJack() throw (QLE) {
 }
 
 
-void Capture::initBuffers() throw (QLE) {
+void Capture::initBuffers() {
     this->freeBuffers();
     WavIn* excitWav = new WavIn(this->dirPath + "/" + Excitation::excitationFileName());
     this->wavInfo = excitWav->getWavInfo();
     if(this->wavInfo->rate != this->jack->getRate())
-        throw QLE("excitation and JACK sample rates are not equal!");
+		throw QLE("Excitation and JACK sample rates are not equal!");
 
     try {
         this->playBuf = excitWav->readFloat();
@@ -71,11 +71,11 @@ void Capture::initBuffers() throw (QLE)
 }
 
 
-void Capture::doJob(int playDbLevel) throw (QLE) {
+void Capture::doJob(int playDbLevel) {
     if( ! this->jackIsConnected())
         throw QLE("JACK ports are not connected!");
     if( ! this->jack->isIdle())
-        throw QLE("JACK client isn\'t IDLE now!");
+		throw QLE("JACK client isn’t IDLE now!");
     
     this->maxResponse = 0.0;
     
Index: qloud-1.2/src/Capture.h
===================================================================
--- qloud-1.2.orig/src/Capture.h
+++ qloud-1.2/src/Capture.h
@@ -27,17 +27,17 @@
 
 class Capture {
 public:
-    Capture(QString aDirPath) throw (QLE);
+	Capture(QString aDirPath);
     ~Capture();
     static QString responseFileName() {
         return QString("response.wav");
     }
-    void openJack() throw (QLE);
+	void openJack();
     int getJackRate();
     void closeJack();
     bool jackIsConnected();
-    void initBuffers() throw (QLE);
-    void doJob(int playDbLevel) throw (QLE);
+	void initBuffers();
+	void doJob(int playDbLevel);
     float getMaxResponse();
     QString getWorkDir() {
         return this->dirPath;
Index: qloud-1.2/src/Excitation.cpp
===================================================================
--- qloud-1.2.orig/src/Excitation.cpp
+++ qloud-1.2/src/Excitation.cpp
@@ -28,9 +28,8 @@
 static const double START_SMOOTH = 0.05;
 static const double FINISH_SMOOTH = 0.005;
 
-void Excitation::generate(const QString& dirPath, const ExcitCfg& cfg) throw (QLE) {
-
-    // prepare buffer with Farina's excitation -------------------------------------
+void Excitation::generate(const QString& dirPath, const ExcitCfg& cfg) {
+	// prepare buffer with Farina’s excitation
     double L = double(cfg.length) / log(double(cfg.fMax)/cfg.fMin);
     double K = 2.0 * M_PI * cfg.fMin * L;
     int length = cfg.length * cfg.rate;
Index: qloud-1.2/src/Excitation.h
===================================================================
--- qloud-1.2.orig/src/Excitation.h
+++ qloud-1.2/src/Excitation.h
@@ -26,7 +26,7 @@
 
 class Excitation {
 public:
-    static void generate(const QString& dirPath, const ExcitCfg& cfg) throw (QLE);
+	static void generate(const QString& dirPath, const ExcitCfg& cfg);
     static QString excitationFileName() {
         return QString("excitation.wav");
     }
Index: qloud-1.2/src/ExcitCfg.cpp
===================================================================
--- qloud-1.2.orig/src/ExcitCfg.cpp
+++ qloud-1.2/src/ExcitCfg.cpp
@@ -29,23 +29,22 @@ ExcitCfg::ExcitCfg() {
     this->fMax = 10000;
 }
 
-
 QString ExcitCfg::toString() {
     QString s;
     s += QVariant(this->length).toString();
-    s += " sec, ";
+	s += " s, ";
     s += QVariant(this->rate).toString();
     s += "Hz/";
     s += QVariant(this->depth).toString();
     s += "bit, ";
     s += QVariant(this->fMin).toString();
-    s += "-";
+	s += "–";
     s += QVariant(this->fMax).toString();
     s += " Hz";
     return s;
 }
 
-void ExcitCfg::check() const throw (QLE) {
+void ExcitCfg::check() const {
     if(this->length < 1)
         throw QLE("Excitation length is too short!");
     if(this->length > 50)
@@ -58,9 +57,9 @@ void ExcitCfg::check() const throw (QLE)
             (this->rate != 176400) && (this->rate != 192000)) 
         throw QLE("Excitation rate is invalid!");
     if(this->fMin <  1)
-        throw QLE("Excitation min frequency is too small!");
+		throw QLE("Excitation min. frequency is too small!");
     if(this->fMax >  (this->rate / 2))
-        throw QLE("Excitation max frequency is too high!");
+		throw QLE("Excitation max. frequency is too high!");
     if(this->fMin * 2 > this->fMax)
-        throw QLE("Excitation min frequency must be at least twice less than max one!");
+		throw QLE("Excitation min. frequency must be at least twice less than max one!");
 }
Index: qloud-1.2/src/ExcitCfg.h
===================================================================
--- qloud-1.2.orig/src/ExcitCfg.h
+++ qloud-1.2/src/ExcitCfg.h
@@ -31,7 +31,7 @@ public:
     int fMin;
     int fMax;
     
-    void check() const throw (QLE);
+	void check() const;
     QString toString();
 };
 
Index: qloud-1.2/src/ExcitForm.cpp
===================================================================
--- qloud-1.2.orig/src/ExcitForm.cpp
+++ qloud-1.2/src/ExcitForm.cpp
@@ -16,17 +16,20 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #include "Excitation.h"
 #include "ExcitForm.h"
 #include "ExcitThread.h"
 #include "QLUtl.h"
 #include "QLWin.h"
 
-ExcitForm::ExcitForm(QWidget* aFeedback, QString aWorkDir, QWidget* parent) throw (QLE) : QWidget(parent) {
+ExcitForm::ExcitForm(
+	QWidget* aFeedback,
+	QString aWorkDir,
+	QWidget* parent
+) : QWidget(parent) {
     this->feedback = aFeedback;
 
-    ///////////////////// LAYOUNT //////////////////////////////////////////////
+	// Layout
     QVBoxLayout* mainLayout = new QVBoxLayout();
 
     QGroupBox* exGroup = new QGroupBox("Parameters for excitation signal");
@@ -35,7 +38,7 @@ ExcitForm::ExcitForm(QWidget* aFeedback,
     // Excitation top
     QHBoxLayout* exTop = new QHBoxLayout();
 
-    exTop->addWidget(new QLabel("Length, seconds:"));
+	exTop->addWidget(new QLabel("Length [s]"));
     this->lengthCombo = new QComboBox();
     this->lengthCombo->setEditable(false);
     this->lengthCombo->addItem("3");
@@ -47,12 +50,16 @@ ExcitForm::ExcitForm(QWidget* aFeedback,
     this->lengthCombo->addItem("40");
     this->lengthCombo->setCurrentIndex(2);
     exTop->addWidget(this->lengthCombo);
-    connect(this->lengthCombo, SIGNAL(currentIndexChanged(const QString&)),
-            this, SLOT(lengthChanged(const QString&)));
+	connect(
+		this->lengthCombo,
+		SIGNAL(currentIndexChanged(const QString&)),
+		this,
+		SLOT(lengthChanged(const QString&))
+	);
 
     exTop->addStretch(1);
     exTop->addSpacing(QLWin::SMALL_SPACE);
-    exTop->addWidget(new QLabel("Sample rate:"));
+	exTop->addWidget(new QLabel("Sample rate [Hz]"));
     this->rateCombo = new QComboBox();
     this->rateCombo->setEditable(false);
     this->rateCombo->addItem("32000");
@@ -66,12 +73,16 @@ ExcitForm::ExcitForm(QWidget* aFeedback,
     this->rateCombo->addItem("192000");
     this->rateCombo->setCurrentIndex(2);
     exTop->addWidget(this->rateCombo);
-    connect(this->rateCombo, SIGNAL(currentIndexChanged(const QString&)),
-            this, SLOT(rateChanged(const QString&)));
+	connect(
+		this->rateCombo,
+		SIGNAL(currentIndexChanged(const QString&)),
+		this,
+		SLOT(rateChanged(const QString&))
+	);
 
     exTop->addStretch(1);
     exTop->addSpacing(QLWin::SMALL_SPACE);
-    exTop->addWidget(new QLabel("Bit depth:"));
+	exTop->addWidget(new QLabel("Bit depth"));
     this->depthCombo = new QComboBox();
     this->depthCombo->setEditable(false);
     this->depthCombo->addItem("16");
@@ -79,8 +90,12 @@ ExcitForm::ExcitForm(QWidget* aFeedback,
     this->depthCombo->addItem("32");
     this->depthCombo->setCurrentIndex(2);
     exTop->addWidget(this->depthCombo);
-    connect(this->depthCombo, SIGNAL(currentIndexChanged(const QString&)),
-            this, SLOT(depthChanged(const QString&)));
+	connect(
+		this->depthCombo,
+		SIGNAL(currentIndexChanged(const QString&)),
+		this,
+		SLOT(depthChanged(const QString&))
+	);
 
     exTop->addSpacing(QLWin::BIG_SPACE);
     QWidget* excitLabel = new QLabel("<b>Excitation</b>");
@@ -92,7 +107,7 @@ ExcitForm::ExcitForm(QWidget* aFeedback,
     // Excitation bottom
     QHBoxLayout* exBottom = new QHBoxLayout();
 
-    exBottom->addWidget(new QLabel("Min Freq, Hz"));
+	exBottom->addWidget(new QLabel("Min. freq. [Hz]"));
     this->fMinCnt = new QwtCounter();
     this->fMinCnt->setRange(1, 100000);
     this->fMinCnt->setSingleStep(1);
@@ -113,7 +128,7 @@ ExcitForm::ExcitForm(QWidget* aFeedback,
     exBottom->addStretch(1);
     exBottom->addSpacing(QLWin::SMALL_SPACE);
 
-    exBottom->addWidget(new QLabel("Max Freq, Hz"));
+	exBottom->addWidget(new QLabel("Max. freq. [Hz]"));
     this->fMaxCnt = new QwtCounter();
     this->fMaxCnt->setRange(1, 100000);
     this->fMaxCnt->setSingleStep(1);
@@ -122,10 +137,17 @@ ExcitForm::ExcitForm(QWidget* aFeedback,
     this->fMaxCnt->setIncSteps(QwtCounter::Button2, 1000);
     this->fMaxCnt->setValue(10000);
     tmp = new QLabel("W1000000W");
-    this->fMaxCnt->setFixedWidth(this->fMaxCnt->sizeHint().width() + tmp->sizeHint().width());
+	this->fMaxCnt->setFixedWidth(
+		this->fMaxCnt->sizeHint().width() + tmp->sizeHint().width()
+	);
     delete tmp;
     exBottom->addWidget(this->fMaxCnt, 5);
-    connect(this->fMaxCnt, SIGNAL(valueChanged(double)), this, SLOT(fMaxChanged(double)));
+	connect(
+		this->fMaxCnt,
+		SIGNAL(valueChanged(double)),
+		this,
+		SLOT(fMaxChanged(double))
+	);
 
     exBottom->addSpacing(QLWin::BIG_SPACE);
     QPushButton* genBtn = new QPushButton("Generate");
@@ -135,13 +157,12 @@ ExcitForm::ExcitForm(QWidget* aFeedback,
 
     exLayout->addLayout(exBottom);
 
-    //
     exGroup->setLayout(exLayout);
     mainLayout->addWidget(exGroup);
     this->setLayout(mainLayout);
     this->layout()->setMargin(0);
 
-    ////////////////////////// SIGNALS ////////////////////////////////////////
+	// Signals
     connect(this, SIGNAL(setStatus(const QString&)),
             this->feedback, SLOT(showStatus(const QString&)));
     connect(this, SIGNAL(setStatus(const QString&, int)),
@@ -152,12 +173,9 @@ ExcitForm::ExcitForm(QWidget* aFeedback,
     connect(this, SIGNAL(excitInfoChanged(const QString&)),
             this->feedback, SLOT(changeExcitInfo(const QString&)));
 
-    ///////////////
     this->setWorkDir(aWorkDir);
-
 }
 
-
 ExcitForm::~ExcitForm() {
     delete this->qlCfg;
 }
@@ -207,13 +225,11 @@ void ExcitForm::forceRate(int newRate) {
         this->showCritical("Failed accepting JACK rate!");
 }
 
-
 void ExcitForm::generated() {
     emit excitInfoChanged(this->getInfoString());
 }
 
-//////////////////////////////////// privates //////////////////////////////////
-
+// private
 void ExcitForm::lengthChanged(const QString& in) {
     this->newCfg.length = QVariant(in).toInt();
 }
@@ -238,13 +254,17 @@ void ExcitForm::fMaxChanged(double in) {
     this->newCfg.fMax = int(in + 0.5);
 }
 
-
 void ExcitForm::generate() {
     try {
         this->newCfg.check();
         this->lastCfg = this->newCfg;
         this->qlCfg->setExcit(this->lastCfg);
-        ExcitThread* eThread = new ExcitThread(this, this->workDir, this->lastCfg, this);
+		ExcitThread* eThread = new ExcitThread(
+			this,
+			this->workDir,
+			this->lastCfg,
+			this
+		);
         eThread->start(QThread::LowestPriority);
         emit excitInfoChanged(this->getInfoString());
     } catch(QLE e) {
@@ -252,7 +272,7 @@ void ExcitForm::generate() {
     }
 }
 
-QString ExcitForm::getInfoString() throw (QLE) {
+QString ExcitForm::getInfoString() {
     QFile e(this->workDir + "/" + Excitation::excitationFileName());
     bool exists = e.exists();
     QLUtl::checkFileError(e);
Index: qloud-1.2/src/ExcitForm.h
===================================================================
--- qloud-1.2.orig/src/ExcitForm.h
+++ qloud-1.2/src/ExcitForm.h
@@ -16,23 +16,20 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #ifndef EXCITFORM_H
 #define EXCITFORM_H
 
-#include <QtGui>
+#include <QtWidgets>
 #include <qwt_counter.h>
 #include "ExcitCfg.h"
 #include "QLE.h"
 #include "QLCfg.h"
 
-
 class ExcitForm : public QWidget {
-
     Q_OBJECT
 
 public:
-    ExcitForm(QWidget* feedback, QString workDir, QWidget* parent = 0) throw (QLE);
+	ExcitForm(QWidget* feedback, QString workDir, QWidget* parent = 0);
     ~ExcitForm();
 
 signals:
@@ -73,7 +70,7 @@ private:
     QwtCounter* fMinCnt;
     QwtCounter* fMaxCnt;
 
-    QString getInfoString() throw (QLE);
+	QString getInfoString();
     void mapCfgToControls();
 };
 
Index: qloud-1.2/src/ExcitThread.cpp
===================================================================
--- qloud-1.2.orig/src/ExcitThread.cpp
+++ qloud-1.2/src/ExcitThread.cpp
@@ -21,18 +21,38 @@
 #include "Excitation.h"
 
 
-ExcitThread::ExcitThread(QObject* parent, const QString& aWrkDir, const ExcitCfg& aCfg, QWidget* aFeedback) : QThread(parent) {
+ExcitThread::ExcitThread(
+	QObject* parent,
+	const QString& aWrkDir,
+	const ExcitCfg& aCfg,
+	QWidget* aFeedback
+) : QThread(parent) {
     this->wrkDir = aWrkDir;
     this->cfg = aCfg;
     this->feedback = aFeedback;
-    connect(this, SIGNAL(showStatus(const QString&)), this->feedback, SLOT(showStatus(const QString&)));
-    connect(this, SIGNAL(showStatus(const QString&, int)), this->feedback, SLOT(showStatus(const QString&, int)));
-    connect(this, SIGNAL(showCritical(const QString&)), this->feedback, SLOT(showCritical(const QString&)));
+	connect(
+		this,
+		SIGNAL(showStatus(const QString&)),
+		this->feedback,
+		SLOT(showStatus(const QString&))
+	);
+	connect(
+		this,
+		SIGNAL(showStatus(const QString&, int)),
+		this->feedback,
+		SLOT(showStatus(const QString&, int))
+	);
+	connect(
+		this,
+		SIGNAL(showCritical(const QString&)),
+		this->feedback,
+		SLOT(showCritical(const QString&))
+	);
     connect(this, SIGNAL(generated()), this->feedback, SLOT(generated()));
 }
 
 void ExcitThread::run() {
-    emit showStatus("Generating excitation...");
+	emit showStatus("Generating excitation …");
     try {
         Excitation::generate( this->wrkDir, this->cfg);
         emit generated();
Index: qloud-1.2/src/ExcitThread.h
===================================================================
--- qloud-1.2.orig/src/ExcitThread.h
+++ qloud-1.2/src/ExcitThread.h
@@ -16,32 +16,33 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #ifndef EXCITTHREAD_H
 #define EXCITTHREAD_H
 
-#include <QtGui>
+#include <QtWidgets>
 #include "ExcitCfg.h"
 
 class ExcitThread : public QThread {
-
     Q_OBJECT
 
 public:
-    ExcitThread(QObject* parent, const QString& wrkDir, const ExcitCfg& aCfg, QWidget* aFeedback);
+	ExcitThread(
+		QObject* parent,
+		const QString& wrkDir,
+		const ExcitCfg& aCfg,
+		QWidget* aFeedback
+	);
 
 signals:
-    
     void showStatus(const QString&);
     void showStatus(const QString&, int);
     void showCritical(const QString&);
     void generated();
 
 protected:
-    
     void run();
-private:
     
+private:
     ExcitCfg cfg;
     QString wrkDir;
     QWidget* feedback;
Index: qloud-1.2/src/FileFft.cpp
===================================================================
--- qloud-1.2.orig/src/FileFft.cpp
+++ qloud-1.2/src/FileFft.cpp
@@ -16,25 +16,25 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #include <cmath>
 #include "QLUtl.h"
 #include "WavIn.h"
 #include "FileFft.h"
 
-
-FileFft::FileFft(const QString& path, const IRInfo& anIi) throw (QLE) {
+FileFft::FileFft(const QString& path, const IRInfo& anIi) {
     this->ii = anIi;
 
     this->fftResult = 0;
     this->freqs = 0;
 
-    //this->readFile(path);
     this->doFFT(path);
-    this->freqs = QLUtl::logFreqs(FileFft::POINTS_AMOUNT, this->ii.fMin, this->ii.fMax);
+	this->freqs = QLUtl::logFreqs(
+		FileFft::POINTS_AMOUNT,
+		this->ii.fMin,
+		this->ii.fMax
+	);
 }
 
-
 FileFft::~FileFft() {
     if(this->fftResult)
         fftw_free(this->fftResult);
@@ -42,34 +42,6 @@ FileFft::~FileFft() {
         delete this->freqs;
 }
 
-/*
-double* FileFft::getAmps(double smoothFactor) {
-    double* linAmps = new double[this->fftResultLength];
-    for(int i=0; i < this->fftResultLength; i++) {
-        double tmp = this->fftResult[i][0] * this->fftResult[i][0];
-        tmp += this->fftResult[i][1] * this->fftResult[i][1];
-        linAmps[i] = sqrt(tmp);
-    }
-
-    //double* smoothed = QLUtl::smooth(linAmps, smoothFactor, this->fftResultLength);
-    double* smoothed = QLUtl::fastSmooth(linAmps, smoothFactor, this->fftResultLength);
-    delete linAmps;
-
-    QLUtl::toDbInPlace(smoothed, this->fftResultLength, true);
-
-    double* logAmps = QLUtl::spaceAmpsToFreqs(FileFft::POINTS_AMOUNT, this->freqs,
-                                              this->fftResultLength, smoothed);
-    delete smoothed;
-
-    // amplitudes must be scaled to max recorded level. Do it on place.
-    for(int i=0; i < FileFft::POINTS_AMOUNT; i++)
-        logAmps[i] += this->ii.maxLevel;
-
-    return logAmps;
-}
-*/
-
-
 double* FileFft::getAmps(double smoothFactor) {
     double* linAmps = new double[this->fftResultLength];
     for(int i=0; i < this->fftResultLength; i++) {
@@ -114,41 +86,6 @@ double* FileFft::getPhase(double smoothF
     return logPhase;
 }
 
-/*
-double* FileFft::getPhase(double smoothFactor) {
-
-    double* re =  new double[this->fftResultLength];
-    double* im =  new double[this->fftResultLength];
-    for(int i=0; i < this->fftResultLength; i++) {
-        re[i] = fftResult[i][0];
-        im[i] = fftResult[i][1];
-    }
-
-    double *smoothRe = QLUtl::fastSmooth(re, smoothFactor, this->fftResultLength);
-    delete re;
-    double *smoothIm = QLUtl::fastSmooth(im, smoothFactor, this->fftResultLength);
-    delete im;
-
-    double* linPhase = new double[this->fftResultLength];
-    double factor = 180.0 / M_PI;
-    for(int i=0; i < this->fftResultLength; i++) {
-        double tmp = atan2(smoothRe[i], smoothIm[i]);
-        linPhase[i] = tmp * factor;
-    }
-    delete smoothRe;
-    delete smoothIm;
-
-    double* smoothed = QLUtl::fastSmooth(linPhase, smoothFactor, this->fftResultLength);
-    delete linPhase;
-
-    double* logPhase = QLUtl::spaceAmpsToFreqs(FileFft::POINTS_AMOUNT, this->freqs, this->fftResultLength, smoothed);
-    delete smoothed;
-
-    return logPhase;
-}
-*/
-
-
 double* FileFft::getFreqs() {
     double* tmp = new double[FileFft::POINTS_AMOUNT];
     for(int i=0; i < FileFft::POINTS_AMOUNT; i++)
@@ -156,9 +93,8 @@ double* FileFft::getFreqs() {
     return tmp;
 }
 
-///////////////////////// privates /////////////////////////////////////////////
-
-void FileFft::doFFT(QString path) throw (QLE) {
+// private
+void FileFft::doFFT(QString path) {
     WavIn* wav = new WavIn(path);
     WavInfo* wavInfo = wav->getWavInfo();
     this->fftResultLength = wavInfo->rate / 2;
Index: qloud-1.2/src/FileFft.h
===================================================================
--- qloud-1.2.orig/src/FileFft.h
+++ qloud-1.2/src/FileFft.h
@@ -27,11 +27,10 @@
 #include "IRInfo.h"
 
 class FileFft {
-
 public:
     static const int POINTS_AMOUNT = 1024 * 4;
 
-    FileFft(const QString& path, const IRInfo& ii) throw (QLE);
+	FileFft(const QString& path, const IRInfo& ii);
     ~FileFft();
 
     double* getAmps(double smooth);
@@ -44,7 +43,7 @@ private:
     fftw_complex* fftResult;
     double* freqs;
 
-    void doFFT(QString path) throw (QLE);
+	void doFFT(QString path);
 };
 
 #endif
Index: qloud-1.2/src/GenThread.cpp
===================================================================
--- qloud-1.2.orig/src/GenThread.cpp
+++ qloud-1.2/src/GenThread.cpp
@@ -16,27 +16,50 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #include "GenThread.h"
 #include "QLCfg.h"
 #include "IR.h"
 #include "IRInfo.h"
 
-
-GenThread::GenThread(QObject* parent, const QString& aWrkDir, const QString& aDescription, double aMaxLevel, QWidget* aFeedback) : QThread(parent) {
+GenThread::GenThread(
+	QObject* parent,
+	const QString& aWrkDir,
+	const QString& aDescription,
+	double aMaxLevel,
+	QWidget* aFeedback
+) : QThread(parent) {
     this->workDir = aWrkDir;
     this->description = aDescription;
     this->maxLevel = aMaxLevel;
     this->feedback = aFeedback;
-    connect(this, SIGNAL(showStatus(const QString&)), this->feedback, SLOT(showStatus(const QString&)));
-    connect(this, SIGNAL(showStatus(const QString&, int)), this->feedback, SLOT(showStatus(const QString&, int)));
-    connect(this, SIGNAL(showCritical(const QString&)), this->feedback, SLOT(showCritical(const QString&)));
-    connect(this, SIGNAL(generated()), this->feedback, SLOT(irCalculated()));
+	connect(
+		this,
+		SIGNAL(showStatus(const QString&)),
+		this->feedback,
+		SLOT(showStatus(const QString&))
+	);
+	connect(
+		this,
+		SIGNAL(showStatus(const QString&, int)),
+		this->feedback,
+		SLOT(showStatus(const QString&, int))
+	);
+	connect(
+		this,
+		SIGNAL(showCritical(const QString&)),
+		this->feedback,
+		SLOT(showCritical(const QString&))
+	);
+	connect(
+		this,
+		SIGNAL(generated()),
+		this->feedback,
+		SLOT(irCalculated())
+	);
 }
 
-
 void GenThread::run() {
-    emit showStatus("Calculating IR file...");
+	emit showStatus("Calculating IR file …");
     try {
         QLCfg* qlCfg = new QLCfg(this->workDir);
         QString prefix  = qlCfg->nextIrKey();
@@ -54,7 +77,7 @@ void GenThread::run() {
         
         delete qlCfg;
     } catch(QLE e) {
-        QString msg = "IR-file calculation failed. The error is:\n\n";
+		QString msg = "IR-file calculation failed:\n\n";
         msg += e.msg;
         emit showCritical(msg);
         return;
Index: qloud-1.2/src/GenThread.h
===================================================================
--- qloud-1.2.orig/src/GenThread.h
+++ qloud-1.2/src/GenThread.h
@@ -16,11 +16,10 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #ifndef GENTHREAD_H
 #define GENTHREAD_H
 
-#include <QtGui>
+#include <QtWidgets>
 #include "IRInfo.h"
 
 class GenThread : public QThread {
@@ -28,7 +27,13 @@ class GenThread : public QThread {
     Q_OBJECT
 
 public:
-    GenThread(QObject* parent, const QString& wrkDir, const QString& aDescription, double maxLevel, QWidget* aFeedback);
+	GenThread(
+		QObject* parent,
+		const QString& wrkDir,
+		const QString& aDescription,
+		double maxLevel,
+		QWidget* aFeedback
+	);
 
 signals:
     void showStatus(const QString&);
@@ -42,7 +47,7 @@ protected:
 private:
     QString workDir;
     QString description;
-    double maxLevel; // in db
+	double maxLevel; // in dB
     QWidget* feedback;
 };
 
Index: qloud-1.2/src/HarmData.cpp
===================================================================
--- qloud-1.2.orig/src/HarmData.cpp
+++ qloud-1.2/src/HarmData.cpp
@@ -33,8 +33,7 @@ HarmData::~HarmData() {
         delete this->values;
 }
 
-
-double HarmData::getValue(double freq)  throw (QLE) {
+double HarmData::getValue(double freq) {
     if( (freq < this->freqs[0]) || (freq > this->freqs[this->length -1]))
         throw QLE("frequency is out of range");
 
Index: qloud-1.2/src/HarmData.h
===================================================================
--- qloud-1.2.orig/src/HarmData.h
+++ qloud-1.2/src/HarmData.h
@@ -31,7 +31,7 @@ public:
     double* freqs;
     double* values;
     
-    double getValue(double freq) throw (QLE);
+	double getValue(double freq);
 };
 
 #endif
Index: qloud-1.2/src/Harmonics.cpp
===================================================================
--- qloud-1.2.orig/src/Harmonics.cpp
+++ qloud-1.2/src/Harmonics.cpp
@@ -26,8 +26,7 @@
 #include "IR.h"
 #include "QLUtl.h"
 
-
-Harmonics::Harmonics(QString aDirPath, IRInfo anInfo) throw (QLE) {
+Harmonics::Harmonics(QString aDirPath, IRInfo anInfo) {
     this->dirPath = aDirPath;
     this->info = anInfo;
     this->irSamples =0;
@@ -46,9 +45,11 @@ Harmonics::~Harmonics() {
         delete this->wavInfo;
 }
 
-void Harmonics::init() throw (QLE) {
-    // read ir.wav file --------------------------------------------------------
-    WavIn* irWav = new WavIn(this->dirPath + "/" + this->info.key + IR::irFileName());
+void Harmonics::init() {
+	// read ir.wav file
+	WavIn* irWav = new WavIn(
+		this->dirPath + "/" + this->info.key + IR::irFileName()
+	);
     try {
         this->irSamples = irWav->readDouble();
     } catch(QLE e) {
@@ -60,7 +61,7 @@ void Harmonics::init() throw (QLE) {
     this->wavInfo = irWav->getWavInfo();
     delete irWav;
 
-    // find peak ---------------------------------------------------------------
+	// find peak
     double max = 0.0;
     double tmp = 0.0;
     for(unsigned i=0; i < this->wavInfo->length; i++) {
@@ -70,19 +71,25 @@ void Harmonics::init() throw (QLE) {
             this->maxIdx = i;
         }
     }
-    if((this->maxIdx < (this->wavInfo->length * 0.3)) || (this->maxIdx > (this->wavInfo->length * 0.7))) {
+	if(
+		(this->maxIdx < (this->wavInfo->length * 0.3)) ||
+		(this->maxIdx > (this->wavInfo->length * 0.7))
+	) {
         delete this->irSamples;
         throw QLE("peak position is very strange!");
     }
 }
 
 
-HarmData* Harmonics::getHarm(int num) throw (QLE) {
-
-    int leftShift = int( (this->getHarmIdx(num) - this->getHarmIdx(num+1)) * 0.2 + 0.5);
+HarmData* Harmonics::getHarm(int num) {
+	int leftShift = int(
+		(this->getHarmIdx(num) - this->getHarmIdx(num+1)) * 0.2 + 0.5
+	);
     if(leftShift > this->info.rate)
         leftShift = this->info.rate; // 1 second
-    int rightShift = int( (this->getHarmIdx(num-1) - this->getHarmIdx(num)) * 0.8 + 0.5);
+    int rightShift = int(
+	(this->getHarmIdx(num-1) - this->getHarmIdx(num)) * 0.8 + 0.5
+    );
 
     if( ! this->tone)
         this->tone = this->doHarmonicFFT(1, leftShift, rightShift);
@@ -110,77 +117,9 @@ int Harmonics::getHarmIdx(int num) {
     return this->maxIdx - int(dt*this->info.rate + 0.5);
 }
 
-
-/*
-HarmData* Harmonics::doHarmonicFFT(int num, int leftShift, int rightShift) throw (QLE) {
-    
-    double maxFreq = this->info.fMax; // inverse filter is rounded with this freq
-    double minFreq = this->info.fMin * num;
-    if(maxFreq < minFreq)
-        return 0; // skip this harmonic
-    
-    // get samples
-    int peak = this->getHarmIdx(num);
-    int left = peak - leftShift;
-    if(left < 0)
-        return 0; // skip this harmonic at all
-    
-    int right = peak + rightShift;
-    if(right > (int)this->wavInfo->length - 1)
-        right = int(this->wavInfo->length - 1);
-    
-    int length = right - left + 1;
-    double* samples = new double[length];
-    for(int i=0; i < length; i++)
-        samples[i] = this->irSamples[left + i];
-
-    // apply windows at edges
-    Weights* w = new Weights("hanning", leftShift * 2 + 1);
-    for(int i=0; i <= leftShift; i++)
-        samples[i] *= w->getPoint(i);
-    delete w;
-
-    w = new Weights("hanning", rightShift * 2 + 1);
-    for(int i=0; i <= rightShift; i++)
-        samples[i + leftShift] *= w->getPoint(rightShift + i);
-    delete w;
-
-    // main harmonics-related work is here
-
-    fftw_complex* fft = QLUtl::doFFT(samples, length, this->wavInfo->rate);
-    delete samples;
-
-    int fftResultLength = this->wavInfo->rate / 2;
-    double* linAmps = new double[fftResultLength];
-    for(int i=0; i < fftResultLength; i++)
-        linAmps[i] = sqrt( fft[i][0] * fft[i][0] + fft[i][1] * fft[i][1] );
-    fftw_free(fft);
-
-    double* smoothed = QLUtl::fastSmooth(linAmps, 1.0/12.0, fftResultLength);
-    delete linAmps;
-
-    QLUtl::toDbInPlace(smoothed, fftResultLength, false);
-
-    double* freqs = QLUtl::logFreqs(Harmonics::POINTS_AMOUNT, minFreq, maxFreq);
-    double* logAmps = QLUtl::spaceAmpsToFreqs(Harmonics::POINTS_AMOUNT, freqs, fftResultLength, smoothed);
-    delete smoothed;
-
-    if(num != 1)
-        for(int i=0; i < Harmonics::POINTS_AMOUNT; i++)
-            freqs[i] /=num;
-
-    HarmData* data = new HarmData();
-    data->length = Harmonics::POINTS_AMOUNT;
-    data->freqs = freqs;
-    data->values = logAmps;
-    return data;
-}
-*/
-
-
-HarmData* Harmonics::doHarmonicFFT(int num, int leftShift, int rightShift) throw (QLE) {
-    
-    double maxFreq = this->info.fMax; // inverse filter is rounded with this freq
+HarmData* Harmonics::doHarmonicFFT(int num, int leftShift, int rightShift) {
+	// inverse filter is rounded with this freq
+	double maxFreq = this->info.fMax;
     double minFreq = this->info.fMin * num;
     if(maxFreq < minFreq)
         return 0; // skip this harmonic
@@ -233,7 +172,12 @@ HarmData* Harmonics::doHarmonicFFT(int n
         for(int i=0; i < Harmonics::POINTS_AMOUNT; i++)
             freqs[i] /=num;
 
-    double* smoothed = QLUtl::smoothForLog(logAmps, freqs, 1.0/12.0, Harmonics::POINTS_AMOUNT);
+    double* smoothed = QLUtl::smoothForLog(
+	logAmps,
+	freqs,
+	1.0/12.0,
+	Harmonics::POINTS_AMOUNT
+    );
     delete logAmps;
     
     HarmData* data = new HarmData();
Index: qloud-1.2/src/Harmonics.h
===================================================================
--- qloud-1.2.orig/src/Harmonics.h
+++ qloud-1.2/src/Harmonics.h
@@ -25,15 +25,14 @@
 #include "IRInfo.h"
 #include "WavInfo.h"
 
-
 class Harmonics {
 public:
     static const int POINTS_AMOUNT = 4096;
 
-    Harmonics(QString aDirPath, IRInfo anInfo) throw (QLE);
+	Harmonics(QString aDirPath, IRInfo anInfo);
     ~Harmonics();
 
-    HarmData* getHarm(int num) throw (QLE);
+	HarmData* getHarm(int num);
 
 private:
     QString dirPath;
@@ -43,10 +42,10 @@ private:
     WavInfo* wavInfo;
     HarmData* tone;
 
-    void init() throw (QLE);
-    double getMaxFreq(int num) throw (QLE);
+	void init();
+	double getMaxFreq(int num);
     int getHarmIdx(int num);
-    HarmData* doHarmonicFFT(int num, int leftShift, int rightShift) throw (QLE);
+	HarmData* doHarmonicFFT(int num, int leftShift, int rightShift);
 };
 
 #endif
Index: qloud-1.2/src/HarmPlot.cpp
===================================================================
--- qloud-1.2.orig/src/HarmPlot.cpp
+++ qloud-1.2/src/HarmPlot.cpp
@@ -31,12 +31,19 @@ static const QColor MAJ_PEN_COLOR(175, 1
 static const QColor MIN_PEN_COLOR(175, 175, 152);
 static const QColor CURVE_COLOR(0,0,172);
 static const QColor HARM_COLORS[] = {
-                                        QColor(0,172, 0), QColor(192,0,0), QColor(172,255,172), QColor(255,152,152)
+	QColor(0, 172, 0),
+	QColor(192, 0, 0),
+	QColor(172, 255, 172),
+	QColor(255, 152, 152)
                                     };
 
 static const int MAX_HARM = 5;
 
-HarmPlot::HarmPlot(const QString& aDir, IRInfo anIi, QWidget *parent) throw (QLE) : QwtPlot(parent) {
+HarmPlot::HarmPlot(
+	const QString& aDir,
+	IRInfo anIi,
+	QWidget *parent
+) : QwtPlot(parent) {
     this->setAttribute(Qt::WA_DeleteOnClose);
 
     this->dir = aDir;
@@ -83,7 +90,7 @@ HarmPlot::~HarmPlot() {
 }
 
 
-void HarmPlot::addCurves() throw (QLE) {
+void HarmPlot::addCurves() {
     Harmonics* harmonics = new Harmonics(this->dir, this->ii);
     for(int i=0; i <= MAX_HARM - 2; i++) {
         this->data[i] = harmonics->getHarm(i+2); // begin from second harmonic
@@ -96,7 +103,11 @@ void HarmPlot::addCurves() throw (QLE) {
         curve->setPen(QPen(HARM_COLORS[i]));
         curve->setYAxis(QwtPlot::yLeft);
         curve->attach(this);
-        curve->setSamples(this->data[i]->freqs, this->data[i]->values, this->data[i]->length);
+		curve->setSamples(
+			this->data[i]->freqs,
+			this->data[i]->values,
+			this->data[i]->length
+		);
     }
     delete harmonics;
 }
Index: qloud-1.2/src/HarmPlot.h
===================================================================
--- qloud-1.2.orig/src/HarmPlot.h
+++ qloud-1.2/src/HarmPlot.h
@@ -16,23 +16,20 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #ifndef HARMPLOT_H
 #define HARMPLOT_H
 
-#include <QtGui>
+#include <QtWidgets>
 #include <qwt_plot.h>
 #include "QLE.h"
 #include "IRInfo.h"
 #include "HarmData.h"
 
-
 class HarmPlot: public QwtPlot {
-
     Q_OBJECT
 
 public:
-    HarmPlot(const QString& dir, IRInfo ii, QWidget *parent = 0) throw (QLE);
+	HarmPlot(const QString& dir, IRInfo ii, QWidget *parent = 0);
     ~HarmPlot();
 
 private:
@@ -40,7 +37,7 @@ private:
     IRInfo ii;
 
     HarmData** data;
-    void addCurves() throw (QLE);
+	void addCurves();
 };
 
 #endif
Index: qloud-1.2/src/IR.cpp
===================================================================
--- qloud-1.2.orig/src/IR.cpp
+++ qloud-1.2/src/IR.cpp
@@ -38,12 +38,14 @@ IR::IR(QString aDirPath, QString aPrefix
 }
 
 
-double IR::getMaxTrimLength() throw (QLE) {
+double IR::getMaxTrimLength() {
     if(this->maxTrimLength > 0.0)
         return this->maxTrimLength;
 
-    // read ir.wav file --------------------------------------------------------
-    WavIn* irWav = new WavIn(this->dirPath + "/" + this->prefix + IR::irFileName());
+    // read ir.wav file
+    WavIn* irWav = new WavIn(
+	this->dirPath + "/" + this->prefix + IR::irFileName()
+    );
     double* irSamples =0;
     try {
         irSamples = irWav->readDouble();
@@ -56,7 +58,7 @@ double IR::getMaxTrimLength() throw (QLE
     WavInfo* wavInfo = irWav->getWavInfo();
     delete irWav;
 
-    // find peak ---------------------------------------------------------------
+	// find peak
     double max = 0.0;
     double tmp = 0.0;
     for(unsigned i=0; i < wavInfo->length; i++) {
@@ -66,23 +68,29 @@ double IR::getMaxTrimLength() throw (QLE
             this->maxIdx = i;
         }
     }
-    if((this->maxIdx < (wavInfo->length * 0.3)) || (this->maxIdx > (wavInfo->length * 0.7))) {
+	if(
+		(this->maxIdx < (wavInfo->length * 0.3)) ||
+		(this->maxIdx > (wavInfo->length * 0.7))
+	) {
         delete irSamples;
-        throw QLE("peak position is very strange!");
+		throw QLE("Peak position is very strange!");
     }
     delete irSamples;
 
-    // get max window width ----------------------------------------------------
+	// get max window width
     this->maxTrimLength = double(wavInfo->length - maxIdx - 2)/wavInfo->rate;
     delete wavInfo;
     return this->maxTrimLength;
 }
 
-
-void IR::generate() throw (QLE) {
-    // read input files --------------------------------------------------------
-    WavIn* filterWav = new WavIn(this->dirPath + "/" + Excitation::filterFileName());
-    WavIn* respWav = new WavIn(this->dirPath + "/" + Capture::responseFileName());
+void IR::generate() {
+	// read input files
+	WavIn* filterWav = new WavIn(
+		this->dirPath + "/" + Excitation::filterFileName()
+	);
+	WavIn* respWav = new WavIn(
+		this->dirPath + "/" + Capture::responseFileName()
+	);
 
     double* realFilter = 0;
     double* realResp = 0;
@@ -105,18 +113,26 @@ void IR::generate() throw (QLE) {
         delete respWav;
         delete realFilter;
         delete realResp;
-        throw QLE(Excitation::filterFileName() + " and " + Capture::responseFileName() + " have different lengths!");
+		throw QLE(
+			Excitation::filterFileName() +
+			" and " +
+			Capture::responseFileName() +
+			" have different lengths!"
+		);
     }
 
-    WavInfo* wavInfo = filterWav->getWavInfo(); // saved to use while IR writing
+	// saved to use while IR writing
+	WavInfo* wavInfo = filterWav->getWavInfo();
     delete filterWav;
     delete respWav;
 
-    // convert input samples to complex ----------------------------------------
+	// convert input samples to complex
     unsigned fftLength = wavInfo->length * 2;
 
-    fftw_complex* filterBuf = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * fftLength);
-    fftw_complex* respBuf = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * fftLength);
+	fftw_complex* filterBuf =
+		(fftw_complex*) fftw_malloc(sizeof(fftw_complex) * fftLength);
+	fftw_complex* respBuf =
+		(fftw_complex*) fftw_malloc(sizeof(fftw_complex) * fftLength);
     for(unsigned i = 0; i < wavInfo->length; i++) {
         filterBuf[i][0] = realFilter[i];
         filterBuf[i][1] = 0.0;
@@ -133,7 +149,7 @@ void IR::generate() throw (QLE) {
     delete realFilter;
     delete realResp;
 
-    // do forward FFT transform ------------------------------------------------
+	// do forward FFT transform
     fftw_complex* filterFft = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * fftLength);
     fftw_plan plan = fftw_plan_dft_1d(fftLength, filterBuf, filterFft, FFTW_FORWARD, FFTW_ESTIMATE);
     fftw_execute(plan);
@@ -195,7 +211,7 @@ void IR::generate() throw (QLE) {
 }
 
 
-void IR::trim(double secs) throw (QLE) {
+void IR::trim(double secs) {
     if(secs < 0.0001)
         throw QLE("window width too small");
 
@@ -251,7 +267,7 @@ void IR::trim(double secs) throw (QLE) {
     int rightShift = int(secs * ii.rate + 0.5);
     int right = maxIdx + rightShift;
     if(right > int(wavInfo->length))
-        throw QLE("window too wide");
+		throw QLE("Window too wide");
     w = new Weights("hanning", rightShift * 2 + 1);
     for(int i=0; i <= rightShift; i++)
         irSamples[maxIdx + i] *= w->getPoint(i + rightShift);
Index: qloud-1.2/src/IR.h
===================================================================
--- qloud-1.2.orig/src/IR.h
+++ qloud-1.2/src/IR.h
@@ -40,9 +40,9 @@ public:
         return QString("irPower.wav");
     }
 
-    void generate() throw (QLE);
-    void trim(double secs) throw (QLE);
-    double getMaxTrimLength() throw (QLE);
+	void generate();
+	void trim(double secs);
+	double getMaxTrimLength();
 
 private:
     QString dirPath;
Index: qloud-1.2/src/IRInfo.cpp
===================================================================
--- qloud-1.2.orig/src/IRInfo.cpp
+++ qloud-1.2/src/IRInfo.cpp
@@ -40,13 +40,13 @@ QString IRInfo::maxLevelAsString() const
 QString IRInfo::format() const {
     QString s;
     s += QVariant(this->length).toString();
-    s += " sec, ";
+	s += " s, ";
     s += QVariant(this->rate).toString();;
     s += "Hz/";
     s += QVariant(this->depth).toString();
     s += "bit, ";
     s += QVariant(this->fMin).toString();
-    s += "-";
+	s += "–";
     s += QVariant(this->fMax).toString();
     s += " Hz";
     return s;
Index: qloud-1.2/src/IRInfo.h
===================================================================
--- qloud-1.2.orig/src/IRInfo.h
+++ qloud-1.2/src/IRInfo.h
@@ -33,7 +33,7 @@ public:
     int depth;
     int fMin;
     int fMax;
-    double maxLevel; // in db, <= 0.0
+	double maxLevel; // in dB, <= 0.0
 
     QString format() const;
     QString maxLevelAsString() const;
Index: qloud-1.2/src/IRPlot.cpp
===================================================================
--- qloud-1.2.orig/src/IRPlot.cpp
+++ qloud-1.2/src/IRPlot.cpp
@@ -28,15 +28,17 @@
 #include "WavInfo.h"
 #include "IRPlot.h"
 
-
 static const QColor BG_COLOR(245, 245, 232);
 static const QColor MAJ_PEN_COLOR(175, 175, 152);
 static const QColor MIN_PEN_COLOR(175, 175, 152);
 static const QColor AMP_CURVE_COLOR(0,0,172);
 static const QColor AMP_MARKER_COLOR(Qt::black);
 
-
-IRPlot::IRPlot(const QString& aDir, IRInfo anIi, QWidget *parent) throw (QLE) : QwtPlot(parent) {
+IRPlot::IRPlot(
+	const QString& aDir,
+	IRInfo anIi,
+	QWidget *parent
+) : QwtPlot(parent) {
     this->dir = aDir;
     this->ii = anIi;
 
@@ -79,8 +81,7 @@ IRPlot::~IRPlot() {
         delete this->amps;
 }
 
-
-unsigned IRPlot::calculate() throw (QLE) {
+unsigned IRPlot::calculate() {
     this->setAutoReplot(false);
 
     WavIn* irWav = new WavIn(this->dir + "/" + this->ii.key + IR::irFileName());
Index: qloud-1.2/src/IRPlot.h
===================================================================
--- qloud-1.2.orig/src/IRPlot.h
+++ qloud-1.2/src/IRPlot.h
@@ -28,13 +28,11 @@
 class QwtPlotCurve;
 class QwtPlotMarker;
 
-
 class IRPlot: public QwtPlot {
-
     Q_OBJECT
 
 public:
-    IRPlot(const QString& dir, IRInfo ii, QWidget *parent = 0) throw (QLE);
+	IRPlot(const QString& dir, IRInfo ii, QWidget *parent = 0);
     ~IRPlot();
 
 private:
@@ -44,7 +42,7 @@ private:
     double* time;
     double* amps;
 
-    unsigned calculate() throw (QLE);
+	unsigned calculate();
 };
 
 #endif
Index: qloud-1.2/src/IRPPlot.cpp
===================================================================
--- qloud-1.2.orig/src/IRPPlot.cpp
+++ qloud-1.2/src/IRPPlot.cpp
@@ -36,7 +36,11 @@ static const QColor AMP_CURVE_COLOR(0,0,
 static const QColor AMP_MARKER_COLOR(Qt::black);
 
 
-IRPPlot::IRPPlot(const QString& aDir, IRInfo anIi, QWidget *parent) throw (QLE) : QwtPlot(parent) {
+IRPPlot::IRPPlot(
+	const QString& aDir,
+	IRInfo anIi,
+	QWidget *parent
+) : QwtPlot(parent) {
     this->dir = aDir;
     this->ii = anIi;
 
@@ -79,8 +83,7 @@ IRPPlot::~IRPPlot() {
         delete this->amps;
 }
 
-
-unsigned IRPPlot::calculate() throw (QLE) {
+unsigned IRPPlot::calculate() {
     this->setAutoReplot(false);
 
     WavIn* irWav = new WavIn(this->dir + "/" + this->ii.key + IR::irFileName());
Index: qloud-1.2/src/IRPPlot.h
===================================================================
--- qloud-1.2.orig/src/IRPPlot.h
+++ qloud-1.2/src/IRPPlot.h
@@ -28,13 +28,11 @@
 class QwtPlotCurve;
 class QwtPlotMarker;
 
-
 class IRPPlot: public QwtPlot {
-
     Q_OBJECT
 
 public:
-    IRPPlot(const QString& dir, IRInfo ii, QWidget *parent = 0) throw (QLE);
+	IRPPlot(const QString& dir, IRInfo ii, QWidget *parent = 0);
     ~IRPPlot();
 
 private:
@@ -44,7 +42,7 @@ private:
     double* time;
     double* amps;
 
-    unsigned calculate() throw (QLE);
+	unsigned calculate();
 };
 
 #endif
Index: qloud-1.2/src/IrsForm.cpp
===================================================================
--- qloud-1.2.orig/src/IrsForm.cpp
+++ qloud-1.2/src/IrsForm.cpp
@@ -25,8 +25,11 @@
 #include "IrsView.h"
 
 
-IrsForm::IrsForm(QWidget* aFeedback, QString aWorkDir, QWidget* parent) throw (QLE) : QWidget(parent) {
-
+IrsForm::IrsForm(
+	QWidget* aFeedback,
+	QString aWorkDir,
+	QWidget* parent
+) : QWidget(parent) {
     this->feedback = aFeedback;
     this->workDir = aWorkDir;
 
@@ -34,16 +37,34 @@ IrsForm::IrsForm(QWidget* aFeedback, QSt
     QGroupBox* group = new QGroupBox("Measurements set");
     QHBoxLayout* hLay = new QHBoxLayout();
 
-    //////////////
     this->model = new IrsModel(this->workDir, &this->plots);
-    connect(this, SIGNAL(workDirChanged(const QString&)), this->model, SLOT(updateWorkDir(const QString&)));
-    connect(this->model, SIGNAL(showCritical(const QString&)), this->feedback, SLOT(showCritical(const QString&)));
-    connect(this->model, SIGNAL(showStatus(const QString&, int)), this->feedback, SLOT(showStatus(const QString&, int)));
+	connect(
+		this,
+		SIGNAL(workDirChanged(const QString&)),
+		this->model,
+		SLOT(updateWorkDir(const QString&))
+	);
+	connect(
+		this->model,
+		SIGNAL(showCritical(const QString&)),
+		this->feedback,
+		SLOT(showCritical(const QString&))
+	);
+	connect(
+		this->model,
+		SIGNAL(showStatus(const QString&, int)),
+		this->feedback,
+		SLOT(showStatus(const QString&, int))
+	);
 
     this->view = new IrsView(this->model);
-    connect(this->view, SIGNAL(showCritical(const QString&)), this->feedback, SLOT(showCritical(const QString&)));
+	connect(
+		this->view,
+		SIGNAL(showCritical(const QString&)),
+		this->feedback,
+		SLOT(showCritical(const QString&))
+	);
 
-    //////////
     hLay->addWidget(this->view, 1);
     hLay->addSpacing(QLWin::BIG_SPACE);
 
@@ -65,26 +86,26 @@ IrsForm::IrsForm(QWidget* aFeedback, QSt
     this->setLayout(mainLayout);
     this->layout()->setMargin(0);
 
-    ////////////////////////////////////////////////
-
     connect(this->btnPlot, SIGNAL(clicked()), this, SLOT(newPlot()));
 }
 
-
 IrsForm::~IrsForm() {}
 
-
 void IrsForm::newPlot() {
     QModelIndex index = this->view->currentIndex();
     if( ( ! index.isValid()) || (this->model->rowCount() < 1) ) {
-        emit setStatus("Valid selection is not found", 2000);
+		emit setStatus("Valid selection not found", 2000);
         return;
     }
     QString irKey = this->model->data(index, Qt::UserRole).toString();
 
     try {
         QLCfg cfg(this->workDir);
-        PlotWindow* w = new PlotWindow(this->workDir, cfg.getIr(irKey), &this->plots);
+		PlotWindow* w = new PlotWindow(
+			this->workDir,
+			cfg.getIr(irKey),
+			&this->plots
+		);
         w->show();
     } catch(QLE e) {
         emit showCritical(e.msg);
Index: qloud-1.2/src/IrsForm.h
===================================================================
--- qloud-1.2.orig/src/IrsForm.h
+++ qloud-1.2/src/IrsForm.h
@@ -20,17 +20,16 @@
 #ifndef IRSFORM_H
 #define IRSFORM_H
 
-#include <QtGui>
+#include <QtWidgets>
 #include "QLE.h"
 #include "IrsModel.h"
 #include "PlotWindow.h"
 
 class IrsForm : public QWidget {
-
     Q_OBJECT
 
 public:
-    IrsForm(QWidget* feedback, QString workDir, QWidget* parent = 0) throw (QLE);
+	IrsForm(QWidget* feedback, QString workDir, QWidget* parent = 0);
     ~IrsForm();
 
 signals:
Index: qloud-1.2/src/IrsModel.cpp
===================================================================
--- qloud-1.2.orig/src/IrsModel.cpp
+++ qloud-1.2/src/IrsModel.cpp
@@ -16,15 +16,17 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #include "QLCfg.h"
 #include "QLE.h"
 #include "QLUtl.h"
 #include "IrsModel.h"
 #include "IR.h"
 
-
-IrsModel::IrsModel(const QString& aWorkDir, QMap<PlotWindow*,QString>* aPlots, QObject* parent) throw (QLE) : QAbstractTableModel(parent) {
+IrsModel::IrsModel(
+	const QString& aWorkDir,
+	QMap<PlotWindow*, QString>* aPlots,
+	QObject* parent
+) : QAbstractTableModel(parent) {
     this->workDir = aWorkDir;
     this->plots = aPlots;
 
@@ -78,8 +80,11 @@ QVariant IrsModel::data(const QModelInde
     return QVariant();
 }
 
-
-QVariant IrsModel::headerData(int section, Qt::Orientation orientation, int role) const {
+QVariant IrsModel::headerData(
+	int section,
+	Qt::Orientation orientation,
+	int role
+) const {
     if(role != Qt::DisplayRole)
         return QAbstractTableModel::headerData(section, orientation, role);
     if(orientation != Qt::Horizontal)
@@ -89,15 +94,18 @@ QVariant IrsModel::headerData(int sectio
         case 0:
             return "Description";
         case 1:
-            return "Used Excitation";
+			return "Used excitation";
         case 2:
-            return "Max Level, db";
+			return "Max. level [dB]";
     }
     return QVariant();
 }
 
-
-bool IrsModel::setData(const QModelIndex& index, const QVariant& value, int role) {
+bool IrsModel::setData(
+	const QModelIndex& index,
+	const QVariant& value,
+	int role
+) {
     Q_UNUSED(role);
 
     if( ! index.isValid())
@@ -131,8 +139,9 @@ Qt::ItemFlags IrsModel::flags(const QMod
 bool IrsModel::removeRows(int row, int count, const QModelIndex& parent) {
     Q_UNUSED(parent)
 
+	// only single row selection is allowed
     if(count != 1)
-        return false; // only single row selection is allowed
+		return false;
 
     // be sure there aren't opened plots with this measure
     IRInfo ii = this->list.at(row);
@@ -177,18 +186,8 @@ bool IrsModel::removeRows(int row, int c
         return false;
     }
     
-    // emit layoutChanged();
-    reset();
-    
-    /*
-    if(this->list.size() > 0) {
-        int newSelected = row;
-        if(newSelectedRow > this->list.size())
-            newSelected--;
-        if(newSelected < 0)
-            newSelected = 0;
-    }
-    */
+	beginResetModel();
+	endResetModel();
 
     QString status = "\"";
     status += ii.info;
@@ -207,8 +206,8 @@ void IrsModel::irListChanged() {
         return;
     } 
 
-    //emit layoutChanged();
-    reset();
+	beginResetModel();
+	endResetModel();
 }
 
 
Index: qloud-1.2/src/IrsModel.h
===================================================================
--- qloud-1.2.orig/src/IrsModel.h
+++ qloud-1.2/src/IrsModel.h
@@ -16,30 +16,49 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #ifndef IRSMODEL_H
 #define IRSMODEL_H
 
-#include <QtGui>
+#include <QtWidgets>
 #include "QLE.h"
 #include "IRInfo.h"
 #include "PlotWindow.h"
 
 class IrsModel : public QAbstractTableModel {
-
     Q_OBJECT
 
 public:
-    IrsModel(const QString& aWorkDir, QMap<PlotWindow*,QString>* plots, QObject* parent = 0) throw (QLE);
+	IrsModel(
+		const QString& aWorkDir,
+		QMap<PlotWindow*,QString>* plots,
+		QObject* parent = 0
+	);
     ~IrsModel();
 
     int rowCount(const QModelIndex& parent = QModelIndex()) const;
     int columnCount(const QModelIndex& parent = QModelIndex()) const;
+
     QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
-    bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
-    QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
+
+	bool setData(
+		const QModelIndex& index,
+		const QVariant& value,
+		int role = Qt::EditRole
+	);
+
+	QVariant headerData(
+		int section,
+		Qt::Orientation orientation,
+		int role = Qt::DisplayRole
+	) const;
+
     Qt::ItemFlags flags(const QModelIndex& index) const;
-    bool removeRows(int row, int count, const QModelIndex& parent=QModelIndex());
+
+	bool removeRows(
+		int row,
+		int count,
+		const QModelIndex& parent=QModelIndex()
+	);
 
 public slots:
     void irListChanged();
Index: qloud-1.2/src/IrsView.cpp
===================================================================
--- qloud-1.2.orig/src/IrsView.cpp
+++ qloud-1.2/src/IrsView.cpp
@@ -16,15 +16,16 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #include "IrsView.h"
 #include "LineEditDelegate.h"
 #include "QLUtl.h"
 #include "QLE.h"
 #include "QLCfg.h"
 
-
-IrsView::IrsView(QAbstractTableModel* model, QWidget* parent) : QTableView(parent) {
+IrsView::IrsView(
+	QAbstractTableModel* model,
+	QWidget* parent
+) : QTableView(parent) {
     this->setModel(model);
     this->setAlternatingRowColors(true);
     this->setSelectionMode(QAbstractItemView::SingleSelection);
@@ -35,12 +36,12 @@ IrsView::IrsView(QAbstractTableModel* mo
 
     this->setContextMenuPolicy(Qt::DefaultContextMenu);
 
-    QLabel* tmp = new QLabel("W88 sec, 192000Hz/32bit, 99999-99999 Hz");
+	QLabel* tmp = new QLabel("W88 s, 192000 Hz/32 bit, 99999–99999 Hz");
     int columnWidth = tmp->sizeHint().width();
     delete tmp;
     this->setColumnWidth(0, columnWidth);
     this->setColumnWidth(1, columnWidth);
-    tmp = new QLabel("WW Max Level, db");
+	tmp = new QLabel("WW Max. level [dB]");
     columnWidth = tmp->sizeHint().width();
     delete tmp;
     this->setColumnWidth(2, columnWidth);
@@ -48,11 +49,8 @@ IrsView::IrsView(QAbstractTableModel* mo
     this->menu = new QMenu();
     QAction* delAction = this->menu->addAction("Delete measurement");
     connect(delAction, SIGNAL(triggered()), this, SLOT(deleteMeasure()));
-    
-    // QHeaderView::sectionSizeFromContents()
 }
 
-
 void IrsView::contextMenuEvent(QContextMenuEvent* event) {
     QTableView::contextMenuEvent(event);
     this->menu->popup(event->globalPos());
@@ -67,15 +65,18 @@ void IrsView::deleteMeasure() {
     QModelIndex infoIndex = this->model()->index(index.row(), 0);
     QString info = this->model()->data(infoIndex, Qt::DisplayRole).toString();
     
-    QString msg = "The mesurement description is:\n\n";
+	QString msg = "Measurement description:\n\n";
     msg += info;
     msg += "\n\nAre you sure you want to delete this measurement?";
-    int doDelete = QMessageBox::question(this, "Measurement permanent deleting", msg,
-                                         QMessageBox::Yes, QMessageBox::Cancel);
+	int doDelete = QMessageBox::question(
+		this,
+		"Delete measurement permanently",
+		msg,
+		QMessageBox::Yes,
+		QMessageBox::Cancel
+	);
     if(doDelete != QMessageBox::Yes)
         return;
-    this->model()->removeRow(index.row()); // ignore return value
+    // ignore return value
+    this->model()->removeRow(index.row());
 }
-
-
-
Index: qloud-1.2/src/IrsView.h
===================================================================
--- qloud-1.2.orig/src/IrsView.h
+++ qloud-1.2/src/IrsView.h
@@ -16,14 +16,12 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #ifndef IRSVIEW_H
 #define IRSVIEW_H
 
-#include <QtGui>
+#include <QtWidgets>
 
 class IrsView : public QTableView {
-
     Q_OBJECT
 
 public:
Index: qloud-1.2/src/JackWrap.cpp
===================================================================
--- qloud-1.2.orig/src/JackWrap.cpp
+++ qloud-1.2/src/JackWrap.cpp
@@ -20,16 +20,13 @@
 #include <cmath>
 #include "JackWrap.h"
 
-
 // class-friend
 int processJackWrap(jack_nframes_t nframes, void *arg) {
     JackWrap* wrap = (JackWrap*)arg;
     return wrap->processJack(nframes);
 }
 
-
-JackWrap::JackWrap() throw (QLE) {
-
+JackWrap::JackWrap() {
     this->client = 0;
     this->fsmState = IDLE;
     this->currentPosition = 0;
@@ -37,23 +34,31 @@ JackWrap::JackWrap() throw (QLE) {
 
     this->client = jack_client_open("qloud", JackNoStartServer, &this->status, 0);
     if ( ! this->client )
-        throw QLE("failed to open JACK client");
+		throw QLE("Failed to open JACK client");
 
     jack_set_process_callback(this->client, processJackWrap, this);
 
-    this->inPort = jack_port_register(client, "in", JACK_DEFAULT_AUDIO_TYPE,  JackPortIsInput, 0);
-    this->outPort = jack_port_register(client, "out", JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
+	this->inPort = jack_port_register(
+		client, "in",
+		JACK_DEFAULT_AUDIO_TYPE,
+		JackPortIsInput,
+		0
+	);
+	this->outPort = jack_port_register(
+		client,
+		"out",
+		JACK_DEFAULT_AUDIO_TYPE,
+		JackPortIsOutput,
+		0
+	);
 
     if(( ! this->inPort) || ( ! this->outPort))
-        throw QLE("failed registering JACK ports!");
+		throw QLE("Failed registering JACK ports!");
 
     if(jack_activate(this->client))
-        throw QLE("cannot activate JACK client!");
-
-    //jack_connect(this->client, jack_port_name(this->outPort), jack_port_name(this->inPort)); // TODO : for debug only
+		throw QLE("Cannot activate JACK client!");
 }
 
-
 JackWrap::~JackWrap() {
     this->closeClient();
 }
@@ -63,15 +68,15 @@ bool JackWrap::isIdle() {
     return (this->fsmState == IDLE);
 }
 
-
 bool JackWrap::isConnected() {
-    return (jack_port_connected(this->inPort) && jack_port_connected(this->outPort));
+	return (
+		jack_port_connected(this->inPort) && jack_port_connected(this->outPort)
+	);
 }
 
-
-void JackWrap::start(JackInfo info) throw (QLE) {
+void JackWrap::start(JackInfo info) {
     if( ! this->isConnected() )
-        throw QLE("connect JACK ports before capturing!");
+		throw QLE("Connect JACK ports before capturing!");
     this->playBuf = info.playBuf;
     this->capBuf = info.capBuf;
     this->playDb = pow(10.0, info.playDb/20.0);
@@ -94,17 +99,14 @@ void JackWrap::closeClient() {
     }
 }
 
-
 int JackWrap::getRate() {
     if(this->client)
         return int(jack_get_sample_rate(this->client));
     return -1;
 }
 
-//////////////////////////////// privates ////////////////////////////////////////
-
+// private
 int JackWrap::processJack(jack_nframes_t nframes) {
-
     jack_default_audio_sample_t *in, *out;
     if(this->fsmState == IDLE) {
         out = (jack_default_audio_sample_t*)jack_port_get_buffer(this->outPort, nframes);
Index: qloud-1.2/src/JackWrap.h
===================================================================
--- qloud-1.2.orig/src/JackWrap.h
+++ qloud-1.2/src/JackWrap.h
@@ -31,11 +31,11 @@ enum FSMState {
 
 class JackWrap {
 public:
-	JackWrap() throw (QLE);
+	JackWrap();
     ~JackWrap();
 	bool isIdle();
 	bool isConnected();
-	void start(JackInfo info) throw (QLE);
+	void start(JackInfo info);
 	float getMaxResponse();
     void closeClient();
     int getRate();
Index: qloud-1.2/src/LineEditDelegate.cpp
===================================================================
--- qloud-1.2.orig/src/LineEditDelegate.cpp
+++ qloud-1.2/src/LineEditDelegate.cpp
@@ -16,13 +16,15 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #include "LineEditDelegate.h"
 
 LineEditDelegate::LineEditDelegate(QObject* parent) : QItemDelegate(parent) {}
 
-
-QWidget* LineEditDelegate::createEditor(QWidget *aParent, const QStyleOptionViewItem& option, const QModelIndex& index) const {
+QWidget* LineEditDelegate::createEditor(
+	QWidget *aParent,
+	const QStyleOptionViewItem& option,
+	const QModelIndex& index
+) const {
     Q_UNUSED(option)
     Q_UNUSED(index)
 
@@ -32,21 +34,29 @@ QWidget* LineEditDelegate::createEditor(
     return edit;
 }
 
-
-void LineEditDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const {
+void LineEditDelegate::setEditorData(
+	QWidget* editor,
+	const QModelIndex& index
+) const {
     QString value = index.model()->data(index, Qt::DisplayRole).toString();
     QLineEdit *edit = static_cast<QLineEdit*>(editor);
     edit->setText(value);
 }
 
-
-void LineEditDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const {
+void LineEditDelegate::setModelData(
+	QWidget* editor,
+	QAbstractItemModel* model,
+	const QModelIndex& index
+) const {
     QLineEdit *edit = static_cast<QLineEdit*>(editor);
     model->setData(index, edit->text());
 }
 
-
-void LineEditDelegate::updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option, const QModelIndex& index) const {
+void LineEditDelegate::updateEditorGeometry(
+	QWidget* editor,
+	const QStyleOptionViewItem& option,
+	const QModelIndex& index
+) const {
     Q_UNUSED(index)
     editor->setGeometry(option.rect);
 }
Index: qloud-1.2/src/LineEditDelegate.h
===================================================================
--- qloud-1.2.orig/src/LineEditDelegate.h
+++ qloud-1.2/src/LineEditDelegate.h
@@ -16,27 +16,39 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #ifndef LINEEDITDELEGATE_H
 #define LINEEDITDELEGATE_H
 
-#include <QtGui>
+#include <QtWidgets>
 
 class LineEditDelegate : public QItemDelegate {
-
     Q_OBJECT
 
 public:
     LineEditDelegate(QObject* parent=0);
 
-    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option,
-                          const QModelIndex &index) const;
-    void setEditorData(QWidget *editor, const QModelIndex &index) const;
-    void setModelData(QWidget *editor, QAbstractItemModel *model,
-                      const QModelIndex &index) const;
-    void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option,
-                              const QModelIndex &index) const;
-
+	QWidget *createEditor(
+		QWidget *parent,
+		const QStyleOptionViewItem &option,
+		const QModelIndex &index
+	) const;
+
+	void setEditorData(
+		QWidget *editor,
+		const QModelIndex &index
+	) const;
+
+	void setModelData(
+		QWidget *editor,
+		QAbstractItemModel *model,
+		const QModelIndex &index
+	) const;
+
+	void updateEditorGeometry(
+		QWidget *editor,
+		const QStyleOptionViewItem &option,
+		const QModelIndex &index
+	) const;
 };
 
 #endif
Index: qloud-1.2/src/Plotter.cpp
===================================================================
--- qloud-1.2.orig/src/Plotter.cpp
+++ qloud-1.2/src/Plotter.cpp
@@ -30,15 +30,17 @@
 #include "QLUtl.h"
 #include "QLCfg.h"
 
-
 static const QColor BG_COLOR(245, 245, 232);
 static const QColor MAJ_PEN_COLOR(175, 175, 152);
 static const QColor MIN_PEN_COLOR(175, 175, 152);
 static const QColor AMP_CURVE_COLOR(0,0,172);
 static const QColor PHASE_CURVE_COLOR(0, 150, 0);
 
-
-Plotter::Plotter(const QString& aDir, IRInfo anIi, QWidget *parent) throw (QLE) : QwtPlot(parent)  {
+Plotter::Plotter(
+	const QString& aDir,
+	IRInfo anIi,
+	QWidget *parent
+) : QwtPlot(parent) {
     this->setAttribute(Qt::WA_DeleteOnClose);
 
     this->dir = aDir;
@@ -91,7 +93,7 @@ Plotter::Plotter(const QString& aDir, IR
     panner->setEnabled(true);
 
     this->smoothFactor = Plotter::DEFAULT_SMOOTH; // 1/6 octave
-    this->winLength = 0.5; // 500mS for right window
+	this->winLength = 0.5; // 500 ms for right window
     this->recalculate();
     this->setAutoReplot(true);
 }
@@ -109,16 +111,16 @@ Plotter::~Plotter() {
         delete this->phaseCurve; // may be detached
 }
 
-double Plotter::getMaxTrimLength() throw (QLE) {
+double Plotter::getMaxTrimLength() {
     return this->ir->getMaxTrimLength();
 }
 
-void Plotter::setSmooth(double aSmoothFactor) throw (QLE) {
+void Plotter::setSmooth(double aSmoothFactor) {
     this->smoothFactor = aSmoothFactor;
     this->recalculate();
 }
 
-void Plotter::setWinLength(double msecs) throw (QLE) {
+void Plotter::setWinLength(double msecs) {
     this->winLength = msecs / 1000.0;
     this->recalculate();
 }
@@ -134,14 +136,15 @@ void Plotter::enablePhase(int state) {
     this->replot();
 }
 
-///////////////////////////////// privates /////////////////////////////////
-
-void Plotter::recalculate() throw (QLE) {
+// private
+void Plotter::recalculate() {
     this->setAutoReplot(false);
 
     this->ir->trim(this->winLength);
 
-    FileFft* ff = new FileFft(this->dir + "/" + this->ii.key + IR::trimmedIrFileName(), this->ii);
+	FileFft* ff = new FileFft(
+		this->dir + "/" + this->ii.key + IR::trimmedIrFileName(), this->ii
+	);
 
     if(this->freqs)
         delete this->freqs;
@@ -159,9 +162,17 @@ void Plotter::recalculate() throw (QLE)
 
     delete ff;
 
-    this->ampCurve->setSamples(this->freqs, this->amps, FileFft::POINTS_AMOUNT);
+	this->ampCurve->setSamples(
+		this->freqs,
+		this->amps,
+		FileFft::POINTS_AMOUNT
+	);
     if(QLCfg::USE_PAHSE)
-        this->phaseCurve->setSamples(this->freqs, this->phase, FileFft::POINTS_AMOUNT);
+		this->phaseCurve->setSamples(
+			this->freqs,
+			this->phase,
+			FileFft::POINTS_AMOUNT
+		);
 
     this->setAutoReplot(true);
     this->replot();
Index: qloud-1.2/src/Plotter.h
===================================================================
--- qloud-1.2.orig/src/Plotter.h
+++ qloud-1.2/src/Plotter.h
@@ -20,7 +20,7 @@
 #ifndef PLOTTER_H
 #define PLOTTER_H
 
-#include <QtGui>
+#include <QtWidgets>
 #include <qwt_plot.h>
 #include "QLE.h"
 #include "IR.h"
@@ -35,16 +35,15 @@ class Plotter: public QwtPlot {
     Q_OBJECT
 
 public:
-    
     static constexpr double DEFAULT_SMOOTH = 6.0; // 1/6 octave
     
-    Plotter(const QString& dir, IRInfo ii, QWidget *parent = 0) throw (QLE);
+	Plotter(const QString& dir, IRInfo ii, QWidget *parent = 0);
     ~Plotter();
-    double getMaxTrimLength() throw (QLE); // secs
+	double getMaxTrimLength(); // secs
 
 public slots:
-    void setSmooth(double smoothFactor) throw (QLE);
-    void setWinLength(double secs) throw (QLE);
+	void setSmooth(double smoothFactor);
+	void setWinLength(double secs);
     void enablePhase(int);
 
 private:
@@ -62,7 +61,7 @@ private:
     QwtPlotCurve *ampCurve;
     QwtPlotCurve *phaseCurve;
 
-    void recalculate() throw (QLE);
+	void recalculate();
 };
 
 #endif
Index: qloud-1.2/src/PlotWindow.cpp
===================================================================
--- qloud-1.2.orig/src/PlotWindow.cpp
+++ qloud-1.2/src/PlotWindow.cpp
@@ -16,8 +16,7 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
-#include <QtGui>
+#include <QtWidgets>
 
 #include <qwt_counter.h>
 #include <qwt_plot_zoomer.h>
@@ -33,9 +32,12 @@
 #include "HarmPlot.h"
 #include "RoundedZoomer.h"
 
-
-PlotWindow::PlotWindow(const QString& dir, const IRInfo& ii, QMap<PlotWindow*,QString>* aPlots, QWidget *parent) throw (QLE): QWidget(parent) {
-
+PlotWindow::PlotWindow(
+	const QString& dir,
+	const IRInfo& ii,
+	QMap<PlotWindow*, QString>* aPlots,
+	QWidget *parent
+) : QWidget(parent) {
     this->plots = aPlots;
     this->plots->insert(this, dir + "@" + ii.key);
 
@@ -43,7 +45,7 @@ PlotWindow::PlotWindow(const QString& di
     QString tit(ii.info + " (" + ii.format());
     tit += ", ";
     tit += ii.maxLevelAsString();
-    tit += " db)";
+	tit += " dB)";
     this->setWindowTitle(tit);
     this->setContextMenuPolicy(Qt::NoContextMenu);
 
@@ -52,34 +54,44 @@ PlotWindow::PlotWindow(const QString& di
     mainLayout->setMargin(2);
     QTabWidget* tab = new QTabWidget();
     tab->setTabPosition(QTabWidget::North);
-    tab->addTab(this->getSplTab(dir, ii), "SPL (db/Hz)");
-    tab->addTab(this->getIRTab(dir, ii), "IR (amp/msec)");
-    tab->addTab(this->getIRPTab(dir, ii), "IR power (db/msec)");
-    tab->addTab(this->getStepTab(dir, ii), "Step Response (amp/msec)");
-    tab->addTab(this->getHarmTab(dir, ii), "Harmonics (db/Hz)");
+	tab->addTab(this->getSplTab(dir, ii), "SPL [dB/Hz]");
+	tab->addTab(this->getIRTab(dir, ii), "IR [amp/ms]");
+	tab->addTab(this->getIRPTab(dir, ii), "IR power [dB/ms]");
+	tab->addTab(this->getStepTab(dir, ii), "Step response [amp/ms]");
+	tab->addTab(this->getHarmTab(dir, ii), "Harmonics [dB/Hz]");
     mainLayout->addWidget(tab);
     this->setLayout(mainLayout);
 }
 
-
 PlotWindow::~PlotWindow() {
     this->plots->remove(this);
 }
 
-
-QWidget* PlotWindow::getSplTab(const QString& dir, const IRInfo& ii) throw (QLE) {
+QWidget* PlotWindow::getSplTab(
+	const QString& dir,
+	const IRInfo& ii
+) {
     Plotter* plotter = new Plotter(dir, ii);
-    // plotter->setMargin(1);
     this->zoomizePlotter(plotter, 1, 3);
     if(QLCfg::USE_PAHSE) {
         // as we have additional curve/scale (phase), add a zoomer
-        RoundedZoomer* zoomer2 = new RoundedZoomer(QwtPlot::xTop, QwtPlot::yRight, plotter->canvas());
+		RoundedZoomer* zoomer2 = new RoundedZoomer(
+			QwtPlot::xTop,
+			QwtPlot::yRight,
+			plotter->canvas()
+		);
         zoomer2->setRound(1, 3);
-        //zoomer2->setSelectionFlags(QwtPicker::DragSelection | QwtPicker::CornerToCorner);
         zoomer2->setTrackerMode(QwtPicker::AlwaysOff);
         zoomer2->setRubberBand(QwtPicker::NoRubberBand);
-        zoomer2->setMousePattern(QwtEventPattern::MouseSelect2, Qt::RightButton, Qt::ControlModifier);
-        zoomer2->setMousePattern(QwtEventPattern::MouseSelect3, Qt::RightButton);
+		zoomer2->setMousePattern(
+			QwtEventPattern::MouseSelect2,
+			Qt::RightButton,
+			Qt::ControlModifier
+		);
+		zoomer2->setMousePattern(
+			QwtEventPattern::MouseSelect3,
+			Qt::RightButton
+		);
         zoomer2->setEnabled(true);
         zoomer2->zoom(0);
     }
@@ -87,25 +99,24 @@ QWidget* PlotWindow::getSplTab(const QSt
     QWidget* splWidget = new QWidget();
     QVBoxLayout* splLayout = new QVBoxLayout();
 
-
     // buttons and counters
     QHBoxLayout* topLayout = new QHBoxLayout();
     topLayout->addSpacing(15);
 
     QLabel* hlp = new QLabel("<b>?</b>");
     QString tip = "Mouse using:\n";
-    tip += "Left button grag - zoom in\n";
-    tip += "Right button click - go back in zoom history\n";
-    tip += "Shift + Middle button click - go forward in zoom history\n";
-    tip += "Ctrl + right button click - go to zoom history start\n";
-    tip += "Middle button drag - move window";
+	tip += "Left button drag – zoom in\n";
+	tip += "Right button click – go back in zoom history\n";
+	tip += "Shift + middle button click – go forward in zoom history\n";
+	tip += "Ctrl + right button click – go to zoom history start\n";
+	tip += "Middle button drag – move window";
     hlp->setToolTip(tip);
     topLayout->addWidget(hlp);
 
     topLayout->addStretch(1);
 
     topLayout->addSpacing(15);
-    topLayout->addWidget(new QLabel("Octave Smoothing, 1/X"));
+	topLayout->addWidget(new QLabel("Octave smoothing, 1/x"));
     QwtCounter* cntSmooth = new QwtCounter();
     cntSmooth->setRange(0.25, 256.0);
     cntSmooth->setSingleStep(0.25);
@@ -114,15 +125,23 @@ QWidget* PlotWindow::getSplTab(const QSt
     cntSmooth->setIncSteps(QwtCounter::Button2, 12);
     cntSmooth->setValue(Plotter::DEFAULT_SMOOTH); // 1/6 octave
     QWidget* tmp = new QLabel("W9999.99W");
-    cntSmooth->setFixedWidth(cntSmooth->sizeHint().width() + tmp->sizeHint().width());
+	cntSmooth->setFixedWidth(
+		cntSmooth->sizeHint().width() + tmp->sizeHint().width()
+	);
     delete tmp;
     topLayout->addWidget(cntSmooth, 0);
-    connect(cntSmooth, SIGNAL(valueChanged(double)), plotter, SLOT(setSmooth(double)));
+	connect(
+		cntSmooth,
+		SIGNAL(valueChanged(double)),
+		plotter,
+		SLOT(setSmooth(double))
+	);
 
     topLayout->addSpacing(15);
-    topLayout->addWidget(new QLabel("Window, msec"));
+	topLayout->addWidget(new QLabel("Window [ms]"));
     QwtCounter* cntWindow = new QwtCounter();
-    double maxMilliSecs = plotter->getMaxTrimLength() * 1000.0; // sec to msec, right window width
+	// s to ms, right window width
+	double maxMilliSecs = plotter->getMaxTrimLength() * 1000.0;
     cntWindow->setRange(1.0, maxMilliSecs);
     cntWindow->setSingleStep(1);
     cntWindow->setNumButtons(2);
@@ -130,17 +149,29 @@ QWidget* PlotWindow::getSplTab(const QSt
     cntWindow->setIncSteps(QwtCounter::Button2, 100);
     cntWindow->setValue(500);
     tmp = new QLabel("W25999.0W");
-    cntWindow->setFixedWidth(cntWindow->sizeHint().width() + tmp->sizeHint().width());
+	cntWindow->setFixedWidth(
+		cntWindow->sizeHint().width() + tmp->sizeHint().width()
+	);
     delete tmp;
     topLayout->addWidget(cntWindow);
-    connect(cntWindow, SIGNAL(valueChanged(double)), plotter, SLOT(setWinLength(double)));
+	connect(
+		cntWindow,
+		SIGNAL(valueChanged(double)),
+		plotter,
+		SLOT(setWinLength(double))
+	);
 
     if(QLCfg::USE_PAHSE) {
         topLayout->addSpacing(15);
         QCheckBox* phaseCheck = new QCheckBox("Phase");
         phaseCheck->setChecked(false);
         topLayout->addWidget(phaseCheck, 0);
-        connect(phaseCheck, SIGNAL(stateChanged(int)), plotter, SLOT(enablePhase(int)));
+		connect(
+			phaseCheck,
+			SIGNAL(stateChanged(int)),
+			plotter,
+			SLOT(enablePhase(int))
+		);
     }
 
     topLayout->addSpacing(15);
@@ -155,48 +186,62 @@ QWidget* PlotWindow::getSplTab(const QSt
     return splWidget;
 }
 
-
-QWidget* PlotWindow::getIRTab(const QString& dir, const IRInfo& ii) throw (QLE) {
+QWidget* PlotWindow::getIRTab(
+	const QString& dir,
+	const IRInfo& ii
+) {
     QwtPlot* irPlot = new IRPlot(dir, ii);
-    // irPlot->setMargin(1);
     this->zoomizePlotter(irPlot, 2, 3);
     return irPlot;
 }
 
-
-QWidget* PlotWindow::getIRPTab(const QString& dir, const IRInfo& ii) throw (QLE) {
+QWidget* PlotWindow::getIRPTab(
+	const QString& dir,
+	const IRInfo& ii
+) {
     QwtPlot* irpPlot = new IRPPlot(dir, ii);
-    // irpPlot->setMargin(1);
     this->zoomizePlotter(irpPlot, 2, 3);
     return irpPlot;
 }
 
-
-QWidget* PlotWindow::getStepTab(const QString& dir, const IRInfo& ii) throw (QLE) {
+QWidget* PlotWindow::getStepTab(
+	const QString& dir,
+	const IRInfo& ii
+) {
     QwtPlot* stepPlot = new StepPlot(dir, ii);
-    // stepPlot->setMargin(1);
     this->zoomizePlotter(stepPlot, 2, 3);
     return stepPlot;
 }
 
-
-QWidget* PlotWindow::getHarmTab(const QString& dir, const IRInfo& ii) throw (QLE) {
+QWidget* PlotWindow::getHarmTab(
+	const QString& dir,
+	const IRInfo& ii
+) {
     QwtPlot* harmPlot = new HarmPlot(dir, ii);
-    // harmPlot->setMargin(1);
     this->zoomizePlotter(harmPlot, 1, 3);
     return harmPlot;
 }
 
-
-void PlotWindow::zoomizePlotter(QwtPlot* plotter, int roundX, int roundY) throw (QLE) {
-    RoundedZoomer* zoomer1 = new RoundedZoomer( QwtPlot::xBottom, QwtPlot::yLeft, plotter->canvas());
+void PlotWindow::zoomizePlotter(
+	QwtPlot* plotter,
+	int roundX,
+	int roundY
+) {
+	RoundedZoomer* zoomer1 = new RoundedZoomer(
+		QwtPlot::xBottom,
+		QwtPlot::yLeft,
+		plotter->canvas()
+	);
     zoomer1->setRound(roundX, roundY);
-    //zoomer1->setSelectionFlags(QwtPicker::DragSelection | QwtPicker::CornerToCorner);
     zoomer1->setRubberBand(QwtPicker::RectRubberBand);
     zoomer1->setRubberBandPen(QColor(192,0,0));
     zoomer1->setTrackerMode(QwtPicker::AlwaysOn);
     zoomer1->setTrackerPen(QColor(0, 0, 0));
-    zoomer1->setMousePattern(QwtEventPattern::MouseSelect2, Qt::RightButton, Qt::ControlModifier);
+	zoomer1->setMousePattern(
+		QwtEventPattern::MouseSelect2,
+		Qt::RightButton,
+		Qt::ControlModifier
+	);
     zoomer1->setMousePattern(QwtEventPattern::MouseSelect3, Qt::RightButton);
     zoomer1->setEnabled(true);
     zoomer1->zoom(0);
Index: qloud-1.2/src/PlotWindow.h
===================================================================
--- qloud-1.2.orig/src/PlotWindow.h
+++ qloud-1.2/src/PlotWindow.h
@@ -20,32 +20,44 @@
 #ifndef PLOTWINDOW_H
 #define PLOTWINDOW_H
 
-#include <QtGui>
+#include <QtWidgets>
 #include <qwt_plot.h>
 #include <qwt_counter.h>
 #include "QLE.h"
 #include "IRInfo.h"
 #include "Plotter.h"
 
-
-
 class PlotWindow : public QWidget {
-
     Q_OBJECT
 
 public:
-    PlotWindow(const QString& dir, const IRInfo& ii, QMap<PlotWindow*,QString>* plots, QWidget *parent = 0) throw (QLE) ;
+	PlotWindow(
+		const QString& dir,
+		const IRInfo& ii,
+		QMap<PlotWindow*, QString>* plots,
+		QWidget *parent = 0
+	);
     ~PlotWindow();
     
 private:
     QMap<PlotWindow*,QString>* plots;
     
-    QWidget* getSplTab(const QString& dir, const IRInfo& ii) throw (QLE); // SPL plotting
-    QWidget* getIRTab(const QString& dir, const IRInfo& ii) throw (QLE); // IR itself plotting
-    QWidget* getIRPTab(const QString& dir, const IRInfo& ii) throw (QLE); // IR power plotting
-    QWidget* getStepTab(const QString& dir, const IRInfo& ii) throw (QLE); // Step Response plotting
-    QWidget* getHarmTab(const QString& dir, const IRInfo& ii) throw (QLE); // Harmonics plotting
-    void zoomizePlotter(QwtPlot* plotter, int roundX, int roundY) throw (QLE);
+	// SPL plotting
+	QWidget* getSplTab(const QString& dir, const IRInfo& ii);
+	// IR itself plotting
+	QWidget* getIRTab(const QString& dir, const IRInfo& ii);
+	// IR power plotting
+	QWidget* getIRPTab(const QString& dir, const IRInfo& ii);
+	// Step Response plotting
+	QWidget* getStepTab(const QString& dir, const IRInfo& ii);
+	// Harmonics plotting
+	QWidget* getHarmTab(const QString& dir, const IRInfo& ii);
+
+	void zoomizePlotter(
+		QwtPlot* plotter,
+		int roundX,
+		int roundY
+	);
 };
 
 #endif
Index: qloud-1.2/src/QLCfg.cpp
===================================================================
--- qloud-1.2.orig/src/QLCfg.cpp
+++ qloud-1.2/src/QLCfg.cpp
@@ -26,11 +26,9 @@ QLCfg::QLCfg(QString aPath) {
     this->path = aPath;
 }
 
-
 QLCfg::~QLCfg() {}
 
-
-void QLCfg::appendIr(IRInfo info) throw (QLE) {
+void QLCfg::appendIr(IRInfo info) {
     this->initFile();
     QDomDocument doc = this->read();
 
@@ -61,8 +59,7 @@ void QLCfg::appendIr(IRInfo info) throw
     this->write(doc);
 }
 
-
-void QLCfg::removeIr(QString key) throw (QLE) {
+void QLCfg::removeIr(QString key) {
     QDomDocument doc = this->read();
 
     QDomNodeList list = doc.elementsByTagName("names");
@@ -86,10 +83,9 @@ void QLCfg::removeIr(QString key) throw
     this->write(doc);
 }
 
-
 // it is unsufficient to remove/append: we want to preserve items oder
 // Moreover, only 'info' attribute may be replaced!
-void QLCfg::replaceIr(IRInfo info) throw (QLE) {
+void QLCfg::replaceIr(IRInfo info) {
     QDomDocument doc = this->read();
 
     QDomNodeList list = doc.elementsByTagName("names");
@@ -113,8 +109,7 @@ void QLCfg::replaceIr(IRInfo info) throw
     this->write(doc);
 }
 
-
-QString QLCfg::nextIrKey() throw (QLE) {
+QString QLCfg::nextIrKey() {
     this->initFile();
     QDomDocument doc = this->read();
     QDomNodeList list = doc.elementsByTagName("nextKey");
@@ -131,8 +126,7 @@ QString QLCfg::nextIrKey() throw (QLE) {
     return this->irKeyToString(key);
 }
 
-
-QList<IRInfo> QLCfg::getIrs() throw (QLE) {
+QList<IRInfo> QLCfg::getIrs() {
     if( ! this->fileExists()) {
         QList<IRInfo> emptyList;
         return emptyList;
@@ -164,8 +158,7 @@ QList<IRInfo> QLCfg::getIrs() throw (QLE
     return infos;
 }
 
-
-void QLCfg::setExcit(const ExcitCfg& cfg) throw (QLE) {
+void QLCfg::setExcit(const ExcitCfg& cfg) {
     cfg.check();
     this->initFile();
     QDomDocument doc = this->read();
@@ -183,8 +176,7 @@ void QLCfg::setExcit(const ExcitCfg& cfg
     this->write(doc);
 }
 
-
-ExcitCfg QLCfg::getExcit() throw (QLE) {
+ExcitCfg QLCfg::getExcit() {
     if( ! this->fileExists()) {
         ExcitCfg eCfg;
         return eCfg;
@@ -207,40 +199,37 @@ ExcitCfg QLCfg::getExcit() throw (QLE) {
     return cfg;
 }
 
-
-IRInfo QLCfg::getIr(const QString& key) throw (QLE) {
+IRInfo QLCfg::getIr(const QString& key) {
     QList<IRInfo> list = this->getIrs();
     foreach(IRInfo ii, list)
     if(ii.key == key)
         return ii;
-    throw QLE("IRInfo not found for key " + key);
+    throw QLE("IR info not found for key " + key);
 }
 
-
-/////////////////////// privates ///////////////////////////////////////////
-
+// private
 QString QLCfg::fileName() {
     return this->path + "/qloud.xml";
 }
 
-
-bool QLCfg::fileExists() throw (QLE) {
+bool QLCfg::fileExists() {
     QFile file(this->fileName());
     bool exists = file.exists();
     QLUtl::checkFileError(file);
     return exists;
 }
 
-
-void QLCfg::initFile() throw (QLE) {
+void QLCfg::initFile() {
     if(this->fileExists())
         return;
 
     QDomDocument doc;
 
     // header and root
-    QDomNode header = doc.createProcessingInstruction("xml",
-                      "version=\"1.0\" encoding=\"ISO-8859-1\"");
+	QDomNode header = doc.createProcessingInstruction(
+		"xml",
+		"version=\"1.0\" encoding=\"UTF-8\""
+	);
     doc.appendChild(header);
 
     QDomElement root = doc.createElement("qloud");
@@ -280,7 +269,7 @@ void QLCfg::initFile() throw (QLE) {
 }
 
 
-QDomDocument QLCfg::read() throw (QLE) {
+QDomDocument QLCfg::read() {
     this->initFile();
     QFile file(this->fileName());
     file.open(QIODevice::ReadOnly);
@@ -301,8 +290,7 @@ QDomDocument QLCfg::read() throw (QLE) {
     return doc;
 }
 
-
-void QLCfg::write(const QDomDocument& doc) throw (QLE) {
+void QLCfg::write(const QDomDocument& doc) {
     QFile file(this->fileName());
     file.open(QIODevice::WriteOnly);
     QLUtl::checkFileError(file);
@@ -312,8 +300,7 @@ void QLCfg::write(const QDomDocument& do
     QLUtl::checkFileError(file);
 }
 
-
-QString QLCfg::irKeyToString(int key) throw (QLE) {
+QString QLCfg::irKeyToString(int key) {
     QVariant v(key);
     QString s(v.toString());
     if(key < 10)
@@ -324,5 +311,5 @@ QString QLCfg::irKeyToString(int key) th
         return "0" + s;
     if(key < 10000)
         return s;
-    throw QLE("Too many measuremnts. Are you crazy?");
+    throw QLE("Too many measurements. Are you crazy?");
 }
Index: qloud-1.2/src/QLCfg.h
===================================================================
--- qloud-1.2.orig/src/QLCfg.h
+++ qloud-1.2/src/QLCfg.h
@@ -30,33 +30,31 @@
 class QLCfg {
 
 public:
-    
     static const bool USE_PAHSE = true;
     static const int INDENT = 4;
 
     QLCfg(QString aPath);
     ~QLCfg();
 
-    void appendIr(IRInfo info) throw (QLE);
-    void removeIr(QString key) throw (QLE);
-    void replaceIr(IRInfo info) throw (QLE);
-    QString nextIrKey() throw (QLE);
-    IRInfo getIr(const QString& key) throw (QLE);
-    QList<IRInfo> getIrs() throw (QLE);
+	void appendIr(IRInfo info);
+	void removeIr(QString key);
+	void replaceIr(IRInfo info);
+	QString nextIrKey();
+	IRInfo getIr(const QString& key);
+	QList<IRInfo> getIrs();
     
-    void setExcit(const ExcitCfg&) throw (QLE);
-    ExcitCfg getExcit() throw (QLE);
+	void setExcit(const ExcitCfg&);
+	ExcitCfg getExcit();
 
 private:
-
     QString path;
 
     QString fileName();
-    void initFile() throw (QLE);
-    QDomDocument read() throw (QLE);
-    void write(const QDomDocument&) throw (QLE);
-    QString irKeyToString(int key) throw (QLE);
-    bool fileExists() throw (QLE);
+	void initFile();
+	QDomDocument read();
+	void write(const QDomDocument&);
+	QString irKeyToString(int key);
+	bool fileExists();
 };
 
 #endif
Index: qloud-1.2/src/QLUtl.cpp
===================================================================
--- qloud-1.2.orig/src/QLUtl.cpp
+++ qloud-1.2/src/QLUtl.cpp
@@ -24,10 +24,10 @@
 double QLUtl::toDb(double d) {
     if(fabs(d) < 1.0e-10)
         return -200.0;
-    return 20.0 * log10(fabs(d));
+    double r = 20.0 * log10(fabs(d));
+    return round(r * 10) / 10;
 }
 
-
 void QLUtl::d(std::string in) {
     if(QL_DEBUG)
         std::cout << in << std::endl;
@@ -57,14 +57,12 @@ void QLUtl::d(char* in) {
         std::cout << in << std::endl;
 }
 
-
 void QLUtl::d() {
     if(QL_DEBUG)
         std::cout << "*************************************" << std::endl;
 }
 
-
-void QLUtl::checkFileError(const QFile& file) throw (QLE) {
+void QLUtl::checkFileError(const QFile& file) {
     QFile::FileError e = file.error();
     if(e == QFile::NoError)
         return;
@@ -97,14 +95,14 @@ void QLUtl::checkFileError(const QFile&
         case QFile::PermissionsError:
             throw QLE(f + "The file could not be accessed!");
         case QFile::CopyError:
-            throw QLE(f + "The file could not be copied1");
+			throw QLE(f + "The file could not be copied!");
         default:
             return;
     }
 }
 
 void QLUtl::showCritical(QWidget* parent, const QString& msg) {
-    QMessageBox::critical(parent, "CRITICAL!", msg);
+	QMessageBox::critical(parent, "Error", msg);
 }
 
 
@@ -206,7 +204,12 @@ double* QLUtl::smooth(double* in, double
 }
 
 
-double* QLUtl::smoothForLog(double* in, double* freqs, double smoothFactor, int length) {
+double* QLUtl::smoothForLog(
+	double* in,
+	double* freqs,
+	double smoothFactor,
+	int length
+) {
     double* smoothed = new double[length];
     double freqFactor = pow(2.0, smoothFactor / 2.0);
     double stepRatio = freqs[1] / freqs[0];
@@ -247,7 +250,7 @@ double* QLUtl::smoothForLog(double* in,
 }
 
 
-double* QLUtl::logFreqs(int pointsAmount, double fMin, double fMax) throw (QLE) {
+double* QLUtl::logFreqs(int pointsAmount, double fMin, double fMax) {
     double* freqs = new double[pointsAmount];
     double ratio = log(double(fMax) / fMin);
     ratio /= pointsAmount;
@@ -257,7 +260,12 @@ double* QLUtl::logFreqs(int pointsAmount
 }
 
 
-double* QLUtl::spaceAmpsToFreqs(int pointsAmount, double* freqs, int ampsAmount, double* amps) throw (QLE) {
+double* QLUtl::spaceAmpsToFreqs(
+	int pointsAmount,
+	double* freqs,
+	int ampsAmount,
+	double* amps
+) {
     double* out = new double[pointsAmount];
     for(int i=0; i < pointsAmount; i++) {
         double freq = freqs[i];
@@ -272,7 +280,11 @@ double* QLUtl::spaceAmpsToFreqs(int poin
 }
 
 
-fftw_complex* QLUtl::doFFT(double* inBuf, int inLength, int rate) throw (QLE) {
+fftw_complex* QLUtl::doFFT(
+	double* inBuf,
+	int inLength,
+	int rate
+) {
     // zero padding to get whole number of seconds
     int fftLength = inLength;
     if(fftLength % rate)
@@ -289,14 +301,17 @@ fftw_complex* QLUtl::doFFT(double* inBuf
     int fftResultLength = rate / 2;
 
     // here we shell accumulate one-second-length transformations
-    fftw_complex* fftResult = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * fftResultLength);
+	fftw_complex* fftResult
+		= (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * fftResultLength);
     for(int i=0; i < fftResultLength; i++) {
         fftResult[i][0] = 0.0;
         fftResult[i][1] = 0.0;
     }
 
-    fftw_complex* in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * rate);
-    fftw_complex* out = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * rate);
+	fftw_complex* in
+		= (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * rate);
+	fftw_complex* out
+		= (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * rate);
 
     for(int i=0; i < secs; i++) {
         // take this second from inBuf...
@@ -305,7 +320,13 @@ fftw_complex* QLUtl::doFFT(double* inBuf
             in[j][1] = 0.0;
         }
         // ...transform it...
-        fftw_plan plan = fftw_plan_dft_1d(rate, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
+		fftw_plan plan = fftw_plan_dft_1d(
+			rate,
+			in,
+			out,
+			FFTW_FORWARD,
+			FFTW_ESTIMATE
+		);
         fftw_execute(plan);
         fftw_destroy_plan(plan);
         // ... and sum with other seconds
Index: qloud-1.2/src/QLUtl.h
===================================================================
--- qloud-1.2.orig/src/QLUtl.h
+++ qloud-1.2/src/QLUtl.h
@@ -16,11 +16,10 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #ifndef QLUTL_H
 #define QLUTL_H
 
-#include <QtGui>
+#include <QtWidgets>
 #include <fftw3.h>
 #include "QLUtl.h"
 #include "QLE.h"
@@ -41,7 +40,7 @@ public:
     static void d(char*);
     static void d();
 
-    static void checkFileError(const QFile&) throw (QLE);
+	static void checkFileError(const QFile&);
 
     static void showCritical(QWidget* parent, const QString&);
     static void showInfo(QWidget* parent, const QString&);
@@ -49,12 +48,22 @@ public:
     
     static double* smooth(double* in, double smoothFactor, int length);
     static double* fastSmooth(double* in, double smoothFactor, int length);
-    static double* smoothForLog(double* in, double* freqs, double smoothFactor, int length);
+	static double* smoothForLog(
+		double* in,
+		double* freqs,
+		double smoothFactor,
+		int length
+	);
 
     static void toDbInPlace(double* in, int length, bool normToZero);
-    static double* logFreqs(int pointsAmount, double fMin, double fMax) throw (QLE);
-    static double* spaceAmpsToFreqs(int pointsAmount, double* freqs, int ampsAmount, double* amps) throw (QLE);
-    static fftw_complex* doFFT(double* inBuf, int inLength, int rate) throw (QLE);
+	static double* logFreqs(int pointsAmount, double fMin, double fMax);
+	static double* spaceAmpsToFreqs(
+		int pointsAmount,
+		double* freqs,
+		int ampsAmount,
+		double* amps
+	);
+	static fftw_complex* doFFT(double* inBuf, int inLength, int rate);
 };
 
 #endif
Index: qloud-1.2/src/QLWin.cpp
===================================================================
--- qloud-1.2.orig/src/QLWin.cpp
+++ qloud-1.2/src/QLWin.cpp
@@ -16,8 +16,7 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
-#include <QtGui>
+#include <QtWidgets>
 #include "QLWin.h"
 #include "QLE.h"
 #include "QLUtl.h"
@@ -42,22 +41,26 @@ QLWin::QLWin(QWidget* parent) : QMainWin
     this->capture = 0;
     this->jackConnected = false;
 
-    // create WorkDir group ----------------------------------------------------
-
+	// create WorkDir group
     QGroupBox* wrkGroup = new QGroupBox("All project files are here");
     QHBoxLayout* wrkLayout = new QHBoxLayout();
 
-    wrkLayout->addWidget(new QLabel("Select working directory:"));
+	wrkLayout->addWidget(new QLabel("Select working directory"));
 
     QLineEdit* dirEdit = new QLineEdit();
     dirEdit->setText(QDir::homePath());
     dirEdit->setReadOnly(true);
     wrkLayout->addWidget(dirEdit, 1);
-    connect(this, SIGNAL(workDirChanged(const QString&)), dirEdit, SLOT(setText(const QString&)));
+	connect(
+		this,
+		SIGNAL(workDirChanged(const QString&)),
+		dirEdit,
+		SLOT(setText(const QString&))
+	);
 
-    QPushButton* dirBtn = new QPushButton("...");
+	QPushButton* dirBtn = new QPushButton("…");
     dirBtn->setMaximumHeight(dirEdit->sizeHint().height() + 1);
-    dirBtn->setFixedWidth(QLabel("W...W").sizeHint().width());
+	dirBtn->setFixedWidth(QLabel("W…W").sizeHint().width());
     wrkLayout->addWidget(dirBtn);
     connect(dirBtn, SIGNAL(clicked()), this, SLOT(dirDialog()));
 
@@ -73,7 +76,7 @@ QLWin::QLWin(QWidget* parent) : QMainWin
 
     int excitLayoutIndex = mainLayout->indexOf(wrkGroup) + 1;
 
-    // create Capture group ----------------------------------------------------
+	// create Capture group
     QGroupBox* capGroup = new QGroupBox("Capturing audiosystem response");
     QVBoxLayout* capLayout = new QVBoxLayout();
 
@@ -89,7 +92,6 @@ QLWin::QLWin(QWidget* parent) : QMainWin
     capTop->addSpacing(QLWin::SMALL_SPACE);
     QPushButton* jackBtn = new QPushButton("Connect");
     jackBtn->setFixedWidth(QPushButton("Disconnect").sizeHint().width());
-    // capTop->addWidget(jackBtn, 2);
 
     capTop->addSpacing(QLWin::BIG_SPACE);
     tmp = new QLabel("<b>Capture</b>");
@@ -103,7 +105,7 @@ QLWin::QLWin(QWidget* parent) : QMainWin
 
     capBottom->addStretch(6);
 
-    capBottom->addWidget(new QLabel("Playback level, db:"));
+	capBottom->addWidget(new QLabel("Playback level [dB]"));
     this->playDb = new QwtCounter();
     this->playDb->setRange(-100, 0);
     this->playDb->setSingleStep(1);
@@ -112,11 +114,13 @@ QLWin::QLWin(QWidget* parent) : QMainWin
     this->playDb->setIncSteps(QwtCounter::Button2, 10);
     this->playDb->setValue(-6);
     tmp = new QLabel("W-100W");
-    this->playDb->setFixedWidth(this->playDb->sizeHint().width() + tmp->sizeHint().width());
+	this->playDb->setFixedWidth(
+		this->playDb->sizeHint().width() + tmp->sizeHint().width()
+	);
     capBottom->addWidget(this->playDb);
     capBottom->addStretch(6);
 
-    capBottom->addWidget(new QLabel("Delay before capture, seconds:"));
+	capBottom->addWidget(new QLabel("Delay before capture [s]"));
 
     this->delayCombo = new QComboBox();
     this->delayCombo->setEditable(false);
@@ -137,31 +141,50 @@ QLWin::QLWin(QWidget* parent) : QMainWin
 
     capLayout->addLayout(capBottom);
 
-    //
     capGroup->setLayout(capLayout);
     mainLayout->addWidget(capGroup, 0);
 
-    // create IR group ---------------------------------------------------------
+	// Create IR group
     this->createIrList();
     mainLayout->addWidget(this->irs, 1);
 
-    //--------------------- LAYOUT FINISHING -----------------------------------
+	// Layout finishing
     QWidget* centralWidget = new QWidget();
     centralWidget->setLayout(mainLayout);
     this->setCentralWidget(centralWidget);
 
-    //////////////////////////// CONNECT ///////////////////////////////////////
-
-    connect(this, SIGNAL(setStatus(const QString&)), this->statusBar(), SLOT(showMessage(const QString&)));
-    connect(this, SIGNAL(setStatus(const QString&, int)), this->statusBar(), SLOT(showMessage(const QString&, int)));
-    connect(this, SIGNAL(clearStatus()), this->statusBar(), SLOT(clearMessage()));
+	// Connect
 
-    connect(this, SIGNAL(workDirChanged(const QString&)), this, SLOT(updateWorkDir(const QString&)));
+	connect(
+		this,
+		SIGNAL(setStatus(const QString&)),
+		this->statusBar(),
+		SLOT(showMessage(const QString&))
+	);
+	connect(
+		this,
+		SIGNAL(setStatus(const QString&, int)),
+		this->statusBar(),
+		SLOT(showMessage(const QString&, int))
+	);
+	connect(
+		this,
+		SIGNAL(clearStatus()),
+		this->statusBar(),
+		SLOT(clearMessage())
+	);
+
+	connect(
+		this,
+		SIGNAL(workDirChanged(const QString&)),
+		this,
+		SLOT(updateWorkDir(const QString&))
+	);
 
-    //////////////////////////// RESTORE ///////////////////////////////////////
+	// Restore
     this->restoreMyState();
 
-    // wrkDir is restored, it is safe to add widgets which depends on it
+	// workDir is restored, it is safe to add widgets which depends on it
     this->excit = new ExcitForm(this, this->workDir);
     mainLayout->insertWidget( excitLayoutIndex, this->excit, 0);
 
@@ -174,9 +197,8 @@ QLWin::~QLWin() {
     //this->saveMyState(); - this is done in closeEvent()
 }
 
-
 QSize QLWin::rightSize() {
-    QWidget* tmp = new QPushButton("Impulse Resssponse");
+	QWidget* tmp = new QPushButton("Impulse response");
     QSize size = tmp->sizeHint();
     delete tmp;
     return size;
@@ -225,17 +247,14 @@ void QLWin::changeExcitInfo(const QStrin
     }
 }
 
-
-///////////////////////////////// protected ////////////////////////////////////
-
+// protected
 void QLWin::closeEvent(QCloseEvent * event) {
     this->saveMyState();
     QMainWindow::closeEvent(event);
     QApplication::exit();
 }
 
-////////////////////////////////// privates ////////////////////////////////////
-
+// private
 void QLWin::dirDialog() {
     QDir upDir(this->workDir);
     upDir.cdUp();
@@ -243,7 +262,8 @@ void QLWin::dirDialog() {
                     this,
                     "Choose project directory",
                     upDir.path(),
-                    QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
+		QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks
+	);
     if(s.length())
         emit workDirChanged(s);
 }
@@ -270,24 +290,38 @@ void QLWin::restoreMyState() {
 
     QDir dir(this->workDir);
     if( ! dir.exists() ) {
-        this->showCritical("Directory " + this->workDir + " doesn\'t exist!");
+		this->showCritical("Directory " + this->workDir + " doesn’t exist!");
         this->workDir = QDir::homePath();
     }
 
     emit workDirChanged(this->workDir);
 }
 
-
 void QLWin::createIrList() {
     this->irs = new IrsForm(this, this->workDir);
-    connect(this, SIGNAL(workDirChanged(const QString&)), this->irs, SLOT(updateWorkDir(const QString&)));
+	connect(
+		this,
+		SIGNAL(workDirChanged(const QString&)),
+		this->irs,
+		SLOT(updateWorkDir(const QString&))
+	);
     connect(this, SIGNAL(irAdded()), this->irs, SLOT(updateIrList()));
-    connect(this->irs, SIGNAL(showCritical(const QString&)), SLOT(showCritical(const QString&)));
-    connect(this->irs, SIGNAL(setStatus(const QString&)), SLOT(showStatus(const QString&)));
-    connect(this->irs, SIGNAL(setStatus(const QString&, int)), SLOT(showStatus(const QString&, int)));
+	connect(
+		this->irs,
+		SIGNAL(showCritical(const QString&)),
+		SLOT(showCritical(const QString&))
+	);
+	connect(this->irs,
+		SIGNAL(setStatus(const QString&)),
+		SLOT(showStatus(const QString&))
+	);
+	connect(
+		this->irs,
+		SIGNAL(setStatus(const QString&, int)),
+		SLOT(showStatus(const QString&, int))
+	);
 }
 
-
 void QLWin::updateWorkDir(const QString& newDir) {
     this->workDir = newDir;
     emit setStatus("Working dir is: " + this->workDir, 2000);
@@ -330,16 +364,15 @@ void QLWin::startCapture() {
     }
 
     if( ! this->capture->jackIsConnected()) {
-        emit showCritical("Connect JACK ports in a way you want before capturing!");
+		emit showCritical("Connect JACK ports before capturing!");
         return;
     }
 
-    //this->capture->i
-
     int delay = QVariant(this->delayCombo->currentText()).toInt();
     if(this->ticker)
         delete this->ticker;
-    this->ticker = new TickPoster(-delay, 300); // TODO: replace '300' with something
+    // TODO: replace '300' with something
+    this->ticker = new TickPoster(-delay, 300);
     this->ticker->move(this->pos() + QPoint(10, 10));
     this->ticker->show();
 
@@ -348,7 +381,12 @@ void QLWin::startCapture() {
 }
 
 void QLWin::startJacking() {
-    CapThread* cap = new CapThread(this, this->capture, this->ticker, this->playDb->value());
+	CapThread* cap = new CapThread(
+		this,
+		this->capture,
+		this->ticker,
+		this->playDb->value()
+	);
     connect(cap, SIGNAL(workIsDone()), this->ticker, SLOT(stopTick()));
     connect(cap, SIGNAL(workIsDone()), this, SLOT(captureFinished()));
     cap->start();
@@ -363,23 +401,34 @@ void QLWin::captureFinished() {
     double maxLevel = QLUtl::toDb(this->capture->getMaxResponse());
     bool ok;
     QString msg = "Maximum capture level: ";
-    msg += QVariant(maxLevel).toString();
-    msg += "\nGive meaningful description for the measurement";
-    msg += "\n(hitting \"Cancel\" will ignore this measurement)";
+	msg += QVariant(maxLevel).toString() + " dB";
+	msg += "\nGive a meaningful description for the measurement";
+	msg += "\n(“Cancel” will ignore this measurement)";
     QString tmp = "Measurement description";
-    QString description = QInputDialog::getText(this, tmp,msg, QLineEdit::Normal,
-                          stdDescription, &ok);
+	QString description = QInputDialog::getText(
+		this,
+		tmp,
+		msg,
+		QLineEdit::Normal,
+		stdDescription,
+		&ok
+	);
     if( ! ok)
         return;
     // save this measurement
     if( ! description.length())
         description = stdDescription;
-    GenThread* gen = new GenThread(this, this->workDir, description, maxLevel, this);
+    GenThread* gen = new GenThread(
+	this,
+	this->workDir,
+	description,
+	maxLevel,
+	this
+    );
     gen->start();
 }
 
-
 void QLWin::irCalculated() {
-    emit irAdded(); // TODO - if nothing more, connect directly
+	// TODO - if nothing more, connect directly
+	emit irAdded();
 }
-
Index: qloud-1.2/src/QLWin.h
===================================================================
--- qloud-1.2.orig/src/QLWin.h
+++ qloud-1.2/src/QLWin.h
@@ -16,11 +16,10 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #ifndef QLWIN_H
 #define QLWIN_H
 
-#include <QtGui>
+#include <QtWidgets>
 #include <qwt_counter.h>
 #include "ExcitForm.h"
 #include "Capture.h"
Index: qloud-1.2/src/RoundedZoomer.h
===================================================================
--- qloud-1.2.orig/src/RoundedZoomer.h
+++ qloud-1.2/src/RoundedZoomer.h
@@ -19,7 +19,7 @@
 #ifndef ROUNDEDZOOMER_H
 #define ROUNDEDZOOMER_H
 
-#include <QtGui>
+#include <QtWidgets>
 #include <qwt_plot_zoomer.h>
 #include <qwt_plot_canvas.h>
 
Index: qloud-1.2/src/src.pro
===================================================================
--- qloud-1.2.orig/src/src.pro
+++ qloud-1.2/src/src.pro
@@ -73,22 +73,18 @@ HEADERS += CapThread.h \
  Weights.h 
 
 QT += xml \
- gui 
+ widgets
 
 TEMPLATE = app 
-TARGET = ../bin/qloud 
+TARGET = ../bin/qloud
+target.path = /usr/bin
+INSTALLS += target
 OBJECTS_DIR = ../obj 
 MOC_DIR = ../moc 
-DESTDIR = .
 
-CONFIG -= debug
+CONFIG += debug
 
-INCLUDEPATH += /usr/include/qwt \
-/usr/include \
-/usr/include/qt4
-LIBS += -lsndfile \
--lfftw3 \
--ljack \
--lqwt
+CONFIG += link_pkgconfig
+PKGCONFIG += sndfile fftw3 jack Qt5Qwt6
 
 QMAKE_CXXFLAGS += -std=c++11
Index: qloud-1.2/src/StepPlot.cpp
===================================================================
--- qloud-1.2.orig/src/StepPlot.cpp
+++ qloud-1.2/src/StepPlot.cpp
@@ -36,7 +36,11 @@ static const QColor AMP_CURVE_COLOR(0,0,
 static const QColor AMP_MARKER_COLOR(Qt::black);
 
 
-StepPlot::StepPlot(const QString& aDir, IRInfo anIi, QWidget *parent) throw (QLE) : QwtPlot(parent) {
+StepPlot::StepPlot(
+	const QString& aDir,
+	IRInfo anIi,
+	QWidget *parent
+) : QwtPlot(parent) {
     this->dir = aDir;
     this->ii = anIi;
 
@@ -80,7 +84,7 @@ StepPlot::~StepPlot() {
 }
 
 
-unsigned StepPlot::calculate() throw (QLE) {
+unsigned StepPlot::calculate() {
     this->setAutoReplot(false);
 
     WavIn* irWav = new WavIn(this->dir + "/" + this->ii.key + IR::irFileName());
Index: qloud-1.2/src/StepPlot.h
===================================================================
--- qloud-1.2.orig/src/StepPlot.h
+++ qloud-1.2/src/StepPlot.h
@@ -28,13 +28,11 @@
 class QwtPlotCurve;
 class QwtPlotMarker;
 
-
 class StepPlot: public QwtPlot {
-
     Q_OBJECT
 
 public:
-    StepPlot(const QString& dir, IRInfo ii, QWidget *parent = 0) throw (QLE);
+	StepPlot(const QString& dir, IRInfo ii, QWidget *parent = 0);
     ~StepPlot();
 
 private:
@@ -44,7 +42,7 @@ private:
     double* time;
     double* amps;
 
-    unsigned calculate() throw (QLE);
+	unsigned calculate();
 };
 
 #endif
Index: qloud-1.2/src/TickPoster.cpp
===================================================================
--- qloud-1.2.orig/src/TickPoster.cpp
+++ qloud-1.2/src/TickPoster.cpp
@@ -46,7 +46,6 @@ TickPoster::TickPoster(int aMin, int aMa
 
     QPushButton* closeBtn = new QPushButton("Stop");
     closeBtn->setFont(defaultFont);
-    //vbl->addWidget(closeBtn); // TODO add 'stop' for capture?
     connect(closeBtn, SIGNAL(clicked()), this, SLOT(stopTick()));
 
     this->setLayout(vbl);
Index: qloud-1.2/src/TickPoster.h
===================================================================
--- qloud-1.2.orig/src/TickPoster.h
+++ qloud-1.2/src/TickPoster.h
@@ -20,7 +20,7 @@
 #ifndef TICKPOSTER_H
 #define TICKPOSTER_H
 
-#include <QtGui>
+#include <QtWidgets>
 
 class TickPoster : public QWidget {
 
Index: qloud-1.2/src/WavIn.cpp
===================================================================
--- qloud-1.2.orig/src/WavIn.cpp
+++ qloud-1.2/src/WavIn.cpp
@@ -16,12 +16,10 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #include <sndfile.h>
 #include "WavIn.h"
 
-
-WavIn::WavIn(QString aPath) throw (QLE) {
+WavIn::WavIn(QString aPath) {
     this->path = aPath;
     this->buf = 0;
 	this->sfFile = 0;
@@ -29,7 +27,7 @@ WavIn::WavIn(QString aPath) throw (QLE)
 	SF_INFO sfInfo;
 	this->sfFile = sf_open(this->path.toStdString().c_str(), SFM_READ, &sfInfo);
 	if( ! this->sfFile )
-		throw QLE("failed to open " + this->path + "!");
+		throw QLE("Failed to open " + this->path + "!");
 
 	this->length = sfInfo.frames;
 	this->format = sfInfo.format;
@@ -55,22 +53,22 @@ int WavIn::getChannels() {
     return this->channels;
 }
 
-int WavIn::getBitDepth() throw (QLE) {
+int WavIn::getBitDepth() {
     if(this->format & SF_FORMAT_PCM_16)
         return 16;
     else if(this->format & SF_FORMAT_PCM_24)
         return 24;
     else if(this->format & SF_FORMAT_PCM_32)
         return 32;
-    throw QLE("undetermined bit depth");
+    throw QLE("Undetermined bit depth");
 }
 
-float* WavIn::readFloat() throw (QLE) {
+float* WavIn::readFloat() {
     this->read( sizeof(float));
     return (float*)this->buf;
 }
 
-double* WavIn::readDouble() throw (QLE) {
+double* WavIn::readDouble() {
     this->read( sizeof(double));
     return (double*)this->buf;
 }
@@ -84,9 +82,8 @@ WavInfo*  WavIn::getWavInfo() {
     return info;
 }
 
-//////////////////////////////////// privates //////////////////////////////////
-
-void WavIn::read(int size) throw (QLE) {
+// private
+void WavIn::read(int size) {
     sf_count_t wasRead = 0;
     if(size == sizeof(float)) {
         this->buf = new char[this->length * sizeof(float)];
@@ -99,6 +96,6 @@ void WavIn::read(int size) throw (QLE) {
 	if(wasRead != this->length) {
 		sf_close(this->sfFile); // for case destructor isn't called in catch{}
 		this->sfFile = 0;
-		throw QLE("failed reading " + this->path + "!");
+		throw QLE("Failed reading " + this->path + "!");
 	}
 }
Index: qloud-1.2/src/WavInfo.cpp
===================================================================
--- qloud-1.2.orig/src/WavInfo.cpp
+++ qloud-1.2/src/WavInfo.cpp
@@ -27,17 +27,17 @@ WavInfo::WavInfo() {}
 WavInfo::~WavInfo() {}
 
 void WavInfo::show() {
-    QLUtl::d(QString("length: ") + this->length);
-    QLUtl::d(QString("rate: ") + this->rate);
-    QLUtl::d(QString("bitDepth: ") + this->bitDepth);
+    QLUtl::d(QString("Length: ") + this->length);
+    QLUtl::d(QString("Rate: ") + this->rate);
+    QLUtl::d(QString("Bit depth: ") + this->bitDepth);
 }
 
-int WavInfo::getFormat() throw (QLE) {
+int WavInfo::getFormat() {
     if(this->bitDepth == 16)
 		return SF_FORMAT_WAV | SF_FORMAT_PCM_16;
     else if(this->bitDepth == 24)
 		return SF_FORMAT_WAV | SF_FORMAT_PCM_24;
     else if(this->bitDepth == 32)
 		return SF_FORMAT_WAV | SF_FORMAT_PCM_32;
-    throw QLE("unsupported format");
+    throw QLE("Unsupported format");
 }
Index: qloud-1.2/src/WavInfo.h
===================================================================
--- qloud-1.2.orig/src/WavInfo.h
+++ qloud-1.2/src/WavInfo.h
@@ -32,7 +32,7 @@ public:
     int bitDepth;
     int channels;
 
-    int getFormat() throw (QLE);
+	int getFormat();
     void show();
 };
 
Index: qloud-1.2/src/WavIn.h
===================================================================
--- qloud-1.2.orig/src/WavIn.h
+++ qloud-1.2/src/WavIn.h
@@ -27,16 +27,16 @@
 
 class WavIn {
 public:
-	WavIn(QString aPath) throw (QLE);
+	WavIn(QString aPath);
 	~WavIn();
 
-    float* readFloat() throw (QLE);
-    double* readDouble() throw (QLE);
+	float* readFloat();
+	double* readDouble();
 
     int getLength();
     int getRate();
     int getChannels();
-    int getBitDepth() throw (QLE);
+	int getBitDepth();
     WavInfo* getWavInfo();
 
 private:
@@ -50,7 +50,7 @@ private:
 	
 	SNDFILE* sfFile;
 
-    void read(int size) throw (QLE);
+	void read(int size);
 };
 
 #endif
Index: qloud-1.2/src/WavOut.cpp
===================================================================
--- qloud-1.2.orig/src/WavOut.cpp
+++ qloud-1.2/src/WavOut.cpp
@@ -26,23 +26,26 @@ WavOut::WavOut(QString aPath) {
 
 WavOut::~WavOut() {}
 
-void WavOut::writeFloat(WavInfo info, float* buf) throw (QLE) {
+void WavOut::writeFloat(WavInfo info, float* buf) {
     this->write(info, sizeof(float), (char*)buf);
 }
 
-void WavOut::writeDouble(WavInfo info, double* buf) throw (QLE) {
+void WavOut::writeDouble(WavInfo info, double* buf) {
     this->write(info, sizeof(double), (char*)buf);
 }
 
-//////////////////// privates //////////////////////////////////////////////////
-
-void WavOut::write(WavInfo wavInfo, int size, char* buf) throw (QLE) {
+// private
+void WavOut::write(WavInfo wavInfo, int size, char* buf) {
     SF_INFO sfInfo;
     sfInfo.channels = wavInfo.channels;
     sfInfo.format = wavInfo.getFormat();
     sfInfo.samplerate = wavInfo.rate;
 
-    SNDFILE *sfFile = sf_open(this->path.toStdString().c_str(), SFM_WRITE, &sfInfo);
+	SNDFILE *sfFile = sf_open(
+		this->path.toStdString().c_str(),
+		SFM_WRITE,
+		&sfInfo
+	);
     if( ! sfFile )
         throw QLE("failed to open " + this->path + " for writing!");
 
Index: qloud-1.2/src/WavOut.h
===================================================================
--- qloud-1.2.orig/src/WavOut.h
+++ qloud-1.2/src/WavOut.h
@@ -25,17 +25,14 @@
 #include <QLE.h>
 
 class WavOut {
-
 public:
-
     WavOut(QString aPath);
     ~WavOut();
-    void writeFloat(WavInfo info, float* buf) throw (QLE);
-    void writeDouble(WavInfo info, double* buf) throw (QLE);
+	void writeFloat(WavInfo info, float* buf);
+	void writeDouble(WavInfo info, double* buf);
 
 private:
-
-    void write(WavInfo info, int size, char* buf) throw (QLE);
+	void write(WavInfo info, int size, char* buf);
     QString path;
 };
 
Index: qloud-1.2/src/Weights.cpp
===================================================================
--- qloud-1.2.orig/src/Weights.cpp
+++ qloud-1.2/src/Weights.cpp
@@ -16,12 +16,11 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */
 
-
 #include <cstring>
 #include <cmath>
 #include "Weights.h"
 
-Weights::Weights(char const* name, int pointsAmount) throw (QLE) {
+Weights::Weights(char const* name, int pointsAmount) {
     this->points = 0;
 
     if( pointsAmount < 2 )
@@ -52,7 +51,7 @@ Weights::~Weights() {
         delete this->points;
 }
 
-double Weights::getPoint(int pointNum) const throw (QLE) {
+double Weights::getPoint(int pointNum) const {
     if(pointNum < 0 || pointNum > this->length - 1)
         throw QLE("out of index");
     return this->points[pointNum];
Index: qloud-1.2/src/Weights.h
===================================================================
--- qloud-1.2.orig/src/Weights.h
+++ qloud-1.2/src/Weights.h
@@ -24,9 +24,10 @@
 
 class Weights {
 public:
-	Weights(char const* name, int pointsAmount) throw (QLE);
+	Weights(char const* name, int pointsAmount);
 	~Weights();
-	double getPoint(int pointNum) const throw (QLE);
+	double getPoint(int pointNum) const;
+
 private:
 	int length;
 	double* points;
openSUSE Build Service is sponsored by