diff --git a/frameplaybackwindow.cpp b/frameplaybackwindow.cpp
index 93515c1d..10cce131 100644
--- a/frameplaybackwindow.cpp
+++ b/frameplaybackwindow.cpp
@@ -576,6 +576,7 @@ void FramePlaybackWindow::btnLoadLive()
void FramePlaybackWindow::btnBackOneClick()
{
+ if (!checkNoSeqLoaded()) return;
forward = false;
isPlaying = false;
wantPlaying = false;
@@ -593,6 +594,7 @@ void FramePlaybackWindow::btnPauseClick()
void FramePlaybackWindow::btnReverseClick()
{
+ if (!checkNoSeqLoaded()) return;
forward = false;
wantPlaying = true;
if (!ui->ckWaitForTraffic->isChecked())
@@ -628,6 +630,7 @@ void FramePlaybackWindow::btnStopClick()
void FramePlaybackWindow::btnPlayClick()
{
+ if (!checkNoSeqLoaded()) return;
forward = true;
wantPlaying = true;
if (!ui->ckWaitForTraffic->isChecked())
@@ -640,6 +643,7 @@ void FramePlaybackWindow::btnPlayClick()
void FramePlaybackWindow::btnFwdOneClick()
{
+ if (!checkNoSeqLoaded()) return;
forward = true;
isPlaying = false;
wantPlaying = false;
@@ -647,6 +651,16 @@ void FramePlaybackWindow::btnFwdOneClick()
updateFrameLabel();
}
+bool FramePlaybackWindow::checkNoSeqLoaded()
+{
+ if (seqItems.count() == 0)
+ {
+ QMessageBox::warning(this, "Warning", "Cannot begin playback until at\nleast one playback source is loaded.");
+ return false;
+ }
+ return true;
+}
+
void FramePlaybackWindow::changePlaybackSpeed(int newSpeed)
{
playbackObject.setPlaybackInterval(newSpeed);
diff --git a/frameplaybackwindow.h b/frameplaybackwindow.h
index 860b614d..a56bfc85 100644
--- a/frameplaybackwindow.h
+++ b/frameplaybackwindow.h
@@ -69,6 +69,7 @@ private slots:
void readSettings();
void writeSettings();
void calculateWhichBus();
+ bool checkNoSeqLoaded();
bool eventFilter(QObject *obj, QEvent *event);
};
diff --git a/re/udsscanwindow.cpp b/re/udsscanwindow.cpp
index 52081271..80dc87ef 100644
--- a/re/udsscanwindow.cpp
+++ b/re/udsscanwindow.cpp
@@ -127,6 +127,7 @@ void UDSScanWindow::displayScanEntry(int idx)
{
if (inhibitUpdates) return;
if (idx == -1) return;
+ inhibitUpdates = true; //need to do this so it doesn't mess things up as we fill in the fields
currEditEntry = &scanEntries.data()[idx];
ui->spinStartID->setValue(currEditEntry->startID);
ui->spinEndID->setValue(currEditEntry->endID);
@@ -143,6 +144,7 @@ void UDSScanWindow::displayScanEntry(int idx)
ui->spinLowerSubfunc->setValue(currEditEntry->subfunctLower);
ui->spinUpperSubfunc->setValue(currEditEntry->subfunctUpper);
ui->spinIncrement->setValue(currEditEntry->subfunctIncrement);
+ inhibitUpdates = false;
}
void UDSScanWindow::deleteSelectedScan()
@@ -215,7 +217,7 @@ void UDSScanWindow::loadScans()
QMessageBox::warning(this, "Cannot Load File", "File is not a supported version.\nCannot load it!");
return;
}
- inhibitUpdates = true;;
+ inhibitUpdates = true;
scanEntries.clear();
ui->listScansToRun->clear();
int numEntries;
@@ -223,12 +225,22 @@ void UDSScanWindow::loadScans()
for (int i = 0; i < numEntries; i++)
{
ScanEntry entry;
- load >> entry.startID >> entry.endID;
- load >> entry.idOffset >> entry.bAdaptiveOffset >> entry.bShowNoReplies;
- load >> entry.busToScan >> entry.maxWaitTime >> entry.scanType;
- load >> entry.sessType >> entry.subfunctLen >> entry.subfunctLower;
- load >> entry.subfunctUpper >> entry.subfunctIncrement;
- load >> entry.serviceLower >> entry.serviceUpper;
+ load >> entry.startID;
+ load >> entry.endID;
+ load >> entry.idOffset;
+ load >> entry.bAdaptiveOffset;
+ load >> entry.bShowNoReplies;
+ load >> entry.busToScan;
+ load >> entry.maxWaitTime;
+ load >> entry.scanType;
+ load >> entry.sessType;
+ load >> entry.subfunctLen;
+ load >> entry.subfunctLower;
+ load >> entry.subfunctUpper;
+ load >> entry.subfunctIncrement;
+ load >> entry.serviceLower;
+ load >> entry.serviceUpper;
+
scanEntries.append(entry);
ui->listScansToRun->addItem(generateListDesc(scanEntries.length() - 1));
}
diff --git a/ui/udsscanwindow.ui b/ui/udsscanwindow.ui
index b9ad2623..dd8cf663 100644
--- a/ui/udsscanwindow.ui
+++ b/ui/udsscanwindow.ui
@@ -345,7 +345,7 @@
1024
- 8
+ 1
16