[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kstars] kstars: Just a few minor changes.
From: Jasem Mutlaq <null () kde ! org>
Date: 2017-12-31 20:55:58
Message-ID: E1eVkeE-0000c2-En () code ! kde ! org
[Download RAW message or body]
Git commit 660266ca288df0fcfd6a8b8ec9599915e6812008 by Jasem Mutlaq, on behalf of \
Robert Lancaster. Committed on 31/12/2017 at 20:54.
Pushed by mutlaqja into branch 'master'.
Just a few minor changes.
1. I added more functions to the nonlinear spin box to make it easier for KStars to \
add new recommended value items and to get the list of recommended values. 2. I made \
sure that in those new functions, it would not mess up the overall range of the spin \
box. It will expand the range if the new recommended value is outside the current \
range but will not make the range smaller. 3. I made sure that the recommended values \
are always sorted correctly. 4. I changed the exposure spin box in the capture module \
to use the new functions. This also ensures that 0 does not get added to the list if \
the min and the max do not get set from the current CCD. 5. I made the guide module \
request the valid exposure values and set the spin box to those recommended values on \
equipment connection, and save the message so if the user tries to set it to an \
invalid value, it doesn't have to ask PHD2 what the valid values are every time.
M +36 -3 kstars/auxiliary/nonlineardoublespinbox.cpp
M +4 -0 kstars/auxiliary/nonlineardoublespinbox.h
M +7 -5 kstars/ekos/capture/capture.cpp
M +6 -3 kstars/ekos/guide/externalguide/phd2.cpp
M +2 -0 kstars/ekos/guide/externalguide/phd2.h
M +7 -0 kstars/ekos/guide/guide.cpp
M +3 -0 kstars/ekos/guide/guide.h
https://commits.kde.org/kstars/660266ca288df0fcfd6a8b8ec9599915e6812008
diff --git a/kstars/auxiliary/nonlineardoublespinbox.cpp \
b/kstars/auxiliary/nonlineardoublespinbox.cpp index 5eed665db..8d748e0ea 100644
--- a/kstars/auxiliary/nonlineardoublespinbox.cpp
+++ b/kstars/auxiliary/nonlineardoublespinbox.cpp
@@ -15,7 +15,8 @@ NonLinearDoubleSpinBox::NonLinearDoubleSpinBox(QWidget *parent) : \
QDoubleSpinBox {
_values << 0.01 << 0.02 << 0.05 << 0.1 << 0.2 << 0.25 << 0.5 << 1 << 1.5 << 2 << \
2.5 << 3 << 5 << 6 << 7 << 8 << 9 << 10 << 20 << 30 << 40 << 50 << 60 << 120 << 180 \
<< 300 << 600 << 900; setRange(_values.first() , _values.last());
- //This will give -1 if not in the list, and the index if it is in the list.
+
+ //This will update the _idx variable to the index of the new value. It will \
give -1 if not in the list, and the index if it is in the list.
connect(this, QOverload<double>::of(&QDoubleSpinBox::valueChanged),[=](double \
d){ _idx = _values.indexOf(d);}); }
@@ -46,8 +47,40 @@ void NonLinearDoubleSpinBox::stepBy(int steps)
setValue( _values.at(_idx) );
}
-void NonLinearDoubleSpinBox::setRecommendedValues(QList<double> values){
+void NonLinearDoubleSpinBox::setRecommendedValues(QList<double> values)
+{
_values = values;
- _idx = _values.indexOf(value()); //This way it will search for current value in \
the new list or set it to negative 1 if it isn't in the list. + \
updateRecommendedValues(); +}
+
+void NonLinearDoubleSpinBox::addRecommendedValue(double v)
+{
+ _values.append(v); //This will be sorted into place in the next command.
+ updateRecommendedValues();
+}
+
+void NonLinearDoubleSpinBox::updateRecommendedValues()
+{
+ qSort(_values); //This will make sure they are all in order.
+ _idx = _values.indexOf(value()); //This will update the _idx variable to the \
index of the new value. It will search for current value in the new list or set it \
to negative 1 if it isn't in the list. setRange(_values.first() , _values.last());
+ //This makes sure all the values are in the range. The range is expanded if \
necessary. + if(_values.first() < minimum())
+ setMinimum(_values.first());
+ if(_values.last() > maximum())
+ setMaximum(_values.last());
+}
+
+QList<double> NonLinearDoubleSpinBox::getRecommendedValues()
+{
+ return _values;
+}
+
+QString NonLinearDoubleSpinBox::getRecommendedValuesString()
+{
+ QString returnString;
+ for(int i=0; i < _values.size() - 1; i++)
+ returnString += QString::number(_values.at(i)) + ", ";
+ returnString += QString::number(_values.last());
+ return returnString;
}
diff --git a/kstars/auxiliary/nonlineardoublespinbox.h \
b/kstars/auxiliary/nonlineardoublespinbox.h index 7de0a7c73..85931fa43 100644
--- a/kstars/auxiliary/nonlineardoublespinbox.h
+++ b/kstars/auxiliary/nonlineardoublespinbox.h
@@ -22,10 +22,14 @@ class NonLinearDoubleSpinBox : public QDoubleSpinBox
void stepBy(int steps);
void setRecommendedValues(QList<double> values);
+ void addRecommendedValue(double v);
+ QList<double> getRecommendedValues();
+ QString getRecommendedValuesString();
private:
QList<double> _values;
int _idx = -1;
+ void updateRecommendedValues();
};
#endif // NONLINEARDOUBLESPINBOX_H
diff --git a/kstars/ekos/capture/capture.cpp b/kstars/ekos/capture/capture.cpp
index 77cc4f6c5..603c98c18 100644
--- a/kstars/ekos/capture/capture.cpp
+++ b/kstars/ekos/capture/capture.cpp
@@ -708,21 +708,23 @@ void Capture::updateFrameProperties(int reset)
binXIN->setEnabled(targetChip->canBin());
binYIN->setEnabled(targetChip->canBin());
+ QList<double> exposureValues;
+ exposureValues << 0.01 << 0.02 << 0.05 << 0.1 << 0.2 << 0.25 << 0.5 << 1 << 1.5 \
<< 2 << 2.5 << 3 << 5 << 6 << 7 << 8 << 9 << 10 << 20 << 30 << 40 << 50 << 60 << 120 \
<< 180 << 300 << 600 << 900; + exposureIN->setRecommendedValues(exposureValues);
+
if (currentCCD->getMinMaxStep(exposureProp, exposureElem, &min, &max, &step))
{
exposureIN->setMinimum(min);
exposureIN->setMaximum(max);
- exposureIN->setSingleStep(step);
if (min < 0.001)
exposureIN->setDecimals(6);
else
exposureIN->setDecimals(3);
- }
- QList<double> exposureValues;
- exposureValues << min << 0.01 << 0.02 << 0.05 << 0.1 << 0.2 << 0.25 << 0.5 << 1 \
<< 1.5 << 2 << 2.5 << 3 << 5 << 6 << 7 << 8 << 9 << 10 << 20 << 30 << 40 << 50 << 60 \
<< 120 << 180 << 300 << 600 << 900 << max;
- exposureIN->setRecommendedValues(exposureValues);
+ exposureIN->addRecommendedValue(min);
+ exposureIN->addRecommendedValue(max);
+ }
if (currentCCD->getMinMaxStep(frameProp, "WIDTH", &min, &max, &step))
{
diff --git a/kstars/ekos/guide/externalguide/phd2.cpp \
b/kstars/ekos/guide/externalguide/phd2.cpp index ab09556bc..c914eb063 100644
--- a/kstars/ekos/guide/externalguide/phd2.cpp
+++ b/kstars/ekos/guide/externalguide/phd2.cpp
@@ -562,9 +562,11 @@ void PHD2::processPHD2Result(const QJsonObject &jsonObj, QString \
rawString)
case EXPOSURE_DURATIONS: //get_exposure_durations
{
QVariantList \
exposureListArray=jsonObj["result"].toArray().toVariantList();
- QString logValidExposureTimes = i18n("PHD2: Valid Exposure Times: \
Auto"); + logValidExposureTimes = i18n("PHD2: Valid Exposure Times: Auto, \
"); + QList<double> values;
for(int i=1; i < exposureListArray.size(); i ++) //For some reason PHD2 \
has a negative exposure time of 1 at the start of the array?
- logValidExposureTimes += ", " + \
QString::number(exposureListArray.at(i).toDouble()/1000.0); //PHD2 reports in ms. + \
values << exposureListArray.at(i).toDouble()/1000.0;//PHD2 reports in ms. + \
logValidExposureTimes += \
KStars::Instance()->ekosManager()->guideModule()->setRecommendedExposureValues(values);
emit newLog(logValidExposureTimes);
break;
}
@@ -647,7 +649,7 @@ void PHD2::processPHD2Error(const QJsonObject &jsonError)
//This means the user mistakenly entered an invalid exposure time.
if(resultRequest == SET_EXPOSURE_COMMAND_RECEIVED)
{
- requestExposureDurations(); //This will let the user know the valid \
exposure durations + emit newLog(logValidExposureTimes); //This will let \
the user know the valid exposure durations QTimer::singleShot(300, \
[=]{requestExposureTime();}); //This will reset the Exposure time in Ekos to PHD2's \
current exposure time after a third of a second. }
else if(resultRequest == CONNECTION_RESULT)
@@ -734,6 +736,7 @@ void PHD2::setEquipmentConnected()
connection = EQUIPMENT_CONNECTED;
emit newStatus(Ekos::GUIDE_CONNECTED);
updateGuideParameters();
+ QTimer::singleShot(800, [=]{requestExposureDurations();});
}
}
diff --git a/kstars/ekos/guide/externalguide/phd2.h \
b/kstars/ekos/guide/externalguide/phd2.h index 6a414f904..49071bf32 100644
--- a/kstars/ekos/guide/externalguide/phd2.h
+++ b/kstars/ekos/guide/externalguide/phd2.h
@@ -231,5 +231,7 @@ class PHD2 : public GuideInterface
int starReAcquisitionTime=5000;
double pixelScale=0;
+
+ QString logValidExposureTimes;
};
}
diff --git a/kstars/ekos/guide/guide.cpp b/kstars/ekos/guide/guide.cpp
index 5ba889ce7..15fe37180 100644
--- a/kstars/ekos/guide/guide.cpp
+++ b/kstars/ekos/guide/guide.cpp
@@ -109,6 +109,7 @@ Guide::Guide() : QWidget()
guideDataClearB->setAttribute(Qt::WA_LayoutUsesWidgetRect);
// Exposure
+ //Should we set the range for the spin box here?
QList<double> exposureValues;
exposureValues << 0.02 << 0.05 << 0.1 << 0.2 << 0.5 << 1 << 1.5 << 2 << 2.5 << 3 \
<< 3.5 << 4 << 4.5 << 5 << 6 << 7 << 8 << 9 << 10 << 15 << 30; \
exposureIN->setRecommendedValues(exposureValues); @@ -773,6 +774,12 @@ void \
Guide::exportGuideData() file.close();
}
+QString Guide::setRecommendedExposureValues(QList<double> values)
+{
+ exposureIN->setRecommendedValues(values);
+ return exposureIN->getRecommendedValuesString();
+}
+
void Guide::addCCD(ISD::GDInterface *newCCD)
{
ISD::CCD *ccd = static_cast<ISD::CCD *>(newCCD);
diff --git a/kstars/ekos/guide/guide.h b/kstars/ekos/guide/guide.h
index 107da6143..e54903acb 100644
--- a/kstars/ekos/guide/guide.h
+++ b/kstars/ekos/guide/guide.h
@@ -320,6 +320,9 @@ class Guide : public QWidget, public Ui::Guide
*/
void setTelescopeInfo(double primaryFocalLength, double primaryAperture, double \
guideFocalLength, double guideAperture);
+ //This Funciton will allow PHD2 to update the exposure values to the recommended \
ones. + QString setRecommendedExposureValues(QList<double> values);
+
// Append Log entry
void appendLogText(const QString &);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic