diff --git a/src/SeerArrayVisualizerWidget.cpp b/src/SeerArrayVisualizerWidget.cpp index 3d4e7c0..78c28b3 100644 --- a/src/SeerArrayVisualizerWidget.cpp +++ b/src/SeerArrayVisualizerWidget.cpp @@ -131,8 +131,11 @@ void SeerArrayVisualizerWidget::setVariableAddress (const QString& address) { variableAddressLineEdit->setText("not an address"); } - }else{ + }else if (address != "") { variableAddressLineEdit->setText("not an address"); + + }else{ + variableAddressLineEdit->setText(""); } arrayTableWidget->setAddressOffset(0); diff --git a/src/SeerArrayVisualizerWidget.ui b/src/SeerArrayVisualizerWidget.ui index 98a7355..a068066 100644 --- a/src/SeerArrayVisualizerWidget.ui +++ b/src/SeerArrayVisualizerWidget.ui @@ -19,10 +19,10 @@ - Variable name or expression. + Variable expression. - variable name + Variable expression true @@ -32,13 +32,13 @@ - Variable address. + Memory address. true - variable address + Memory address false diff --git a/src/SeerMemoryVisualizerWidget.cpp b/src/SeerMemoryVisualizerWidget.cpp index 7031a41..4f2a027 100644 --- a/src/SeerMemoryVisualizerWidget.cpp +++ b/src/SeerMemoryVisualizerWidget.cpp @@ -23,7 +23,8 @@ SeerMemoryVisualizerWidget::SeerMemoryVisualizerWidget (QWidget* parent) : QWidg setWindowIcon(QIcon(":/seer/resources/seer_64x64.png")); setWindowTitle("Seer Memory Visualizer"); - memoryLengthLineEdit->setValidator(new QIntValidator(1, 9999999, this)); + //memoryLengthLineEdit->setValidator(new QIntValidator(1, 9999999, this)); + memoryLengthLineEdit->setValidator(new QRegExpValidator(QRegExp("\\s*([1-9]\\d*\\s*)+"), this)); columnCountSpinBox->setValue(memoryHexEditor->bytesPerLine()); if (memoryHexEditor->memoryMode() == SeerHexWidget::HexMemoryMode) { @@ -90,27 +91,37 @@ QString SeerMemoryVisualizerWidget::variableName () const { void SeerMemoryVisualizerWidget::setVariableAddress (const QString& address) { unsigned long offset = 0; - bool ok = false; + bool refresh = false; if (address.startsWith("0x")) { + bool ok = false; + offset = address.toULong(&ok, 16); if (ok == true) { variableAddressLineEdit->setText(address); + refresh = true; }else{ variableAddressLineEdit->setText("not an address"); offset = 0; } - }else{ + }else if (address != "") { variableAddressLineEdit->setText("not an address"); offset = 0; + + }else{ + variableAddressLineEdit->setText(""); + offset = 0; } - //qDebug() << address << offset << ok; - memoryHexEditor->setAddressOffset(offset); + + // Show results immediately. + if (refresh) { + handleRefreshButton(); + } } QString SeerMemoryVisualizerWidget::variableAddress () const { @@ -214,7 +225,13 @@ void SeerMemoryVisualizerWidget::handleRefreshButton () { return; } - emit evaluateMemoryExpression(_memoryId, variableAddressLineEdit->text(), memoryLengthLineEdit->text().toInt()); + int nbytes = 256; + + if (memoryLengthLineEdit->text() != "") { + nbytes = memoryLengthLineEdit->text().toInt(); + } + + emit evaluateMemoryExpression(_memoryId, variableAddressLineEdit->text(), nbytes); } void SeerMemoryVisualizerWidget::handleVariableNameLineEdit () { diff --git a/src/SeerMemoryVisualizerWidget.ui b/src/SeerMemoryVisualizerWidget.ui index 297cedc..3a6c41b 100644 --- a/src/SeerMemoryVisualizerWidget.ui +++ b/src/SeerMemoryVisualizerWidget.ui @@ -22,23 +22,23 @@ Variable name or expression. - variable name + Variable expression - false + true - Variable address. + Memory address. true - variable address + Memory address @@ -51,10 +51,10 @@ - # Bytes + # Bytes (default 256) - false + true @@ -125,7 +125,7 @@ - :/seer/resources/RelaxLightIcons/document-print.svg:/seer/resources/HighContrast/document-print.svg + :/seer/resources/RelaxLightIcons/document-print.svg:/seer/resources/RelaxLightIcons/document-print.svg @@ -139,7 +139,7 @@ - :/seer/resources/RelaxLightIcons/document-save-as.svg:/seer/resources/HighContrast/document-save-as.svg + :/seer/resources/RelaxLightIcons/document-save-as.svg:/seer/resources/RelaxLightIcons/document-save-as.svg @@ -153,7 +153,7 @@ - :/seer/resources/RelaxLightIcons/view-refresh.svg:/seer/resources/HighContrast/view-refresh.svg + :/seer/resources/RelaxLightIcons/view-refresh.svg:/seer/resources/RelaxLightIcons/view-refresh.svg diff --git a/tests/helloarray/helloarray.cpp b/tests/helloarray/helloarray.cpp index 54b06cd..933dd41 100644 --- a/tests/helloarray/helloarray.cpp +++ b/tests/helloarray/helloarray.cpp @@ -4,6 +4,17 @@ #include #include +float* function1() { + + float* float_array = (float*)malloc(256); + + for (int i=0; i<64; i++) { + float_array[i] = (float)i * 1.13; + } + + return float_array; +} + int main (void) { // @@ -50,6 +61,10 @@ int main (void) { currentPhase += phaseIncrement; } + // + // + // + float* x = function1(); // // @@ -60,6 +75,7 @@ int main (void) { free(int_array); free(float_array); free(sine_array); + free(x); return 0; }