diff --git a/kstars/ekos/manager.ui b/kstars/ekos/manager.ui
--- a/kstars/ekos/manager.ui
+++ b/kstars/ekos/manager.ui
@@ -6,10 +6,22 @@
0
0
- 612
- 643
+ 796
+ 761
+
+
+ 0
+ 0
+
+
+
+
+ 796
+ 568
+
+
16777215
@@ -43,12 +55,24 @@
-
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
Qt::Vertical
-
+
0
0
@@ -438,7 +462,8 @@
-
+
+ ..
diff --git a/kstars/ekos/opsekos.ui b/kstars/ekos/opsekos.ui
--- a/kstars/ekos/opsekos.ui
+++ b/kstars/ekos/opsekos.ui
@@ -6,15 +6,15 @@
0
0
- 426
- 379
+ 478
+ 450
TabWidget
- 0
+ 1
@@ -56,7 +56,7 @@
-
- Always &load defaults
+ Alwa&ys load defaults
@@ -99,7 +99,7 @@
Ekos module icons are placed to the left of pages
- Left
+ &Left
ekosIconsPositionGroup
@@ -211,6 +211,52 @@
-
+ -
+
+
+ -24.000000000000000
+
+
+ 24.000000000000000
+
+
+ 0.500000000000000
+
+
+
+ -
+
+
+ -24.000000000000000
+
+
+ 24.000000000000000
+
+
+ 0.500000000000000
+
+
+
+ -
+
+
+ <html><body><p>Offset astronomical dusk by this many hours. This positive or negative value adjusts the twilight restriction.</p></body></html>
+
+
+ Dusk Offset
+
+
+
+ -
+
+
+ <html><body><p>Offset astronomical dawn by this many hours. This positive or negative value adjusts the twilight restriction.</p></body></html>
+
+
+ Dawn Offset
+
+
+
-
diff --git a/kstars/ekos/scheduler/scheduler.h b/kstars/ekos/scheduler/scheduler.h
--- a/kstars/ekos/scheduler/scheduler.h
+++ b/kstars/ekos/scheduler/scheduler.h
@@ -30,6 +30,7 @@
class GeoLocation;
class SchedulerJob;
class SkyObject;
+class KConfigDialog;
namespace Ekos
{
@@ -127,6 +128,7 @@
return m_LogText.join("\n");
}
void clearLog();
+ void applyConfig();
void addObject(SkyObject *object);
diff --git a/kstars/ekos/scheduler/scheduler.cpp b/kstars/ekos/scheduler/scheduler.cpp
--- a/kstars/ekos/scheduler/scheduler.cpp
+++ b/kstars/ekos/scheduler/scheduler.cpp
@@ -28,6 +28,7 @@
#include "skyobjects/starobject.h"
#include
+#include
#include
@@ -217,6 +218,9 @@
Options::setErrorHandlingStrategyDelay(value);
});
+ connect(KConfigDialog::exists("settings"), &KConfigDialog::settingsChanged, this, &Scheduler::applyConfig);
+
+ calculateDawnDusk();
loadProfiles();
@@ -381,6 +385,17 @@
emit newLog(QString());
}
+void Scheduler::applyConfig()
+{
+ calculateDawnDusk();
+
+ if (SCHEDULER_RUNNING != state)
+ {
+ jobEvaluationOnly = true;
+ evaluateJobs();
+ }
+}
+
void Scheduler::selectObject()
{
if (FindDialog::Instance()->exec() == QDialog::Accepted)
@@ -2297,19 +2312,16 @@
void Scheduler::calculateDawnDusk()
{
KSAlmanac ksal;
- Dawn = ksal.getDawnAstronomicalTwilight();
- Dusk = ksal.getDuskAstronomicalTwilight();
+ Dawn = ksal.getDawnAstronomicalTwilight() + Options::dawnOffset() / 24.0;
+ Dusk = ksal.getDuskAstronomicalTwilight() + Options::duskOffset() / 24.0;
- //QTime now = KStarsData::Instance()->lt().time();
- //QTime dawn = QTime(0, 0, 0).addSecs(Dawn * 24 * 3600);
- QTime dusk = QTime(0, 0, 0).addSecs(Dusk * 24 * 3600);
+ QTime const dawn = QTime(0, 0, 0).addSecs(Dawn * 24 * 3600);
+ QTime const dusk = QTime(0, 0, 0).addSecs(Dusk * 24 * 3600);
duskDateTime.setDate(KStars::Instance()->data()->lt().date());
duskDateTime.setTime(dusk);
- // FIXME: reduce spam by moving twilight time to a text label
- //appendLogText(i18n("Astronomical twilight: dusk at %1, dawn at %2, and current time is %3",
- // dusk.toString(), dawn.toString(), now.toString()));
+ nightTime->setText(i18n("%1 - %2", dusk.toString("hh:mm"), dawn.toString("hh:mm")));
}
void Scheduler::executeJob(SchedulerJob *job)
@@ -5980,7 +5992,6 @@
void Scheduler::setErrorHandlingStrategy(Scheduler::ErrorHandlingStrategy strategy)
{
- errorHandlingWaitLabel->setEnabled(strategy != ERROR_DONT_RESTART);
errorHandlingDelaySB->setEnabled(strategy != ERROR_DONT_RESTART);
switch (strategy) {
diff --git a/kstars/ekos/scheduler/scheduler.ui b/kstars/ekos/scheduler/scheduler.ui
--- a/kstars/ekos/scheduler/scheduler.ui
+++ b/kstars/ekos/scheduler/scheduler.ui
@@ -6,13 +6,13 @@
0
0
- 721
- 541
+ 957
+ 755
-
+
- 3
+ 1
3
@@ -29,18 +29,21 @@
-
-
+
0
0
Object && Sequence Selection
-
+
3
+
+ QLayout::SetDefaultConstraint
+
3
@@ -54,319 +57,552 @@
3
-
-
-
-
-
-
-
-
- Default
-
-
-
-
- -
-
-
- 5
-
-
-
-
-
- true
-
-
- true
-
-
-
- -
-
-
-
- 22
- 22
-
-
-
- Load the image sequence queue.
-
-
-
-
-
-
-
-
- -
-
-
- Select which steps to execute before starting the capture process.
-
-
- Steps:
-
-
-
- -
-
-
- color:red
-
-
- *
+
+
-
+
+
+ Qt::Vertical
-
-
- -
-
-
- Target coordinates in J2000 Epoch
+
+ QSizePolicy::Expanding
-
- J2000:
+
+
+ 20
+ 40
+
-
+
- -
-
-
- Assigned priority to each job with 1 being the highest priority and 20 being the lowest priority
-
-
-
-
-
+
-
+
+
1
-
- 20
-
-
- 10
+
+ 3
-
-
- -
-
-
- color:red
-
-
- *
-
-
-
- -
-
-
-
-
+
-
+
- Slew to the target and track it before proceeding to the next step.
+ Select optional FITS file to be used for alignment. When using FITS, specify the object or the estimated coordinates which are used to slew the mount.
- Track
-
-
- true
+ FITS File:
-
- stepsButtonGroup
-
- -
-
-
- Perform autofocusing before proceeding to the next step.
+
-
+
+
+ color:red
- Focus
-
-
- true
+ *
-
- stepsButtonGroup
-
- -
-
+
-
+
+
+ 1
+
+
+ QLayout::SetDefaultConstraint
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ false
+
+
+ true
+
+
+
+
+
+ -
+
- Perform alignment using astrometry solver before proceeding to the next step.
+ Ekos Sequence File
- Align
-
-
- true
+ Sequence:
-
- stepsButtonGroup
-
- -
-
+
-
+
+
+
+ 0
+ 0
+
+
- Perform calibration and autoguiding before proceeding to the next step.
+ Load the image sequence queue.
- Guide
-
-
- true
+
-
- stepsButtonGroup
-
-
-
- -
-
-
- 5
-
-
-
-
+
-
+
- RA
+ Priority:
- -
-
+
-
+
+
+ 1
+
+
+ QLayout::SetDefaultConstraint
+
+
+ 0
+
+
-
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+ true
+
+
+
+
+
+ -
+
+
+ 6
+
+
+ 6
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Slew to the target and track it before proceeding to the next step.
+
+
+ Qt::LeftToRight
+
+
+ Track
+
+
+ true
+
+
+ stepsButtonGroup
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Perform alignment using astrometry solver before proceeding to the next step.
+
+
+ Align
+
+
+ true
+
+
+ stepsButtonGroup
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Perform calibration and autoguiding before proceeding to the next step.
+
+
+ Guide
+
+
+ true
+
+
+ stepsButtonGroup
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Perform autofocusing before proceeding to the next step.
+
+
+ Qt::LeftToRight
+
+
+ Focus
+
+
+ true
+
+
+ stepsButtonGroup
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+ Assigned priority to each job with 1 being the highest priority and 20 being the lowest priority
+
+
+
+ 1
+
+
+ 20
+
+
+ 10
+
- -
-
+
-
+
- DEC
+ Target:
- -
-
-
-
+
-
+
+
+
+ 0
+ 0
+
+
-
+
+ Default
+
+
-
-
- -
-
-
- Ekos Device Profile
-
-
- Profile:
-
-
-
- -
-
-
- 5
-
-
-
-
+
-
+
+
+
+ 0
+ 0
+
+
+
+ Select which steps to execute before starting the capture process.
+
+
+ Steps:
+
+
- -
+
-
-
-
- 22
- 22
-
+
+
+ 0
+ 0
+
-
-
- 22
- 22
-
+
+
+
+
+
+ -
+
+
+ 1
+
+
+ QLayout::SetDefaultConstraint
+
+
+ 0
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
-
-
- -
-
-
- Select optional FITS file to be used for alignment. When using FITS, specify the object or the estimated coordinates which are used to slew the mount.
-
-
- FITS File:
-
-
-
- -
-
-
- Ekos Sequence File
-
-
- Sequence:
-
-
-
- -
-
-
- Target:
-
-
-
- -
-
-
- Priority:
-
-
-
- -
-
-
- 5
-
-
-
-
-
- false
+
-
+
+
+ color:red
-
- true
+
+ *
- -
-
-
-
- 22
- 22
-
+
-
+
+
+ Ekos Device Profile
-
+ Profile:
+
+
+
+ -
+
+
+ Target coordinates in J2000 Epoch
+
+
+ J2000:
+
+
+
+ -
+
+
+ 5
+
+
+ 0
+
+
-
+
+
+ RA
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+ -
+
+
+ DEC
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+ Qt::LeftToRight
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+ 255
+ 0
+ 0
+
+
+
+
+
+
+ 255
+ 0
+ 0
+
+
+
+
+
+
+ 255
+ 0
+ 0
+
+
+
+
+
+
+
+
+ 255
+ 0
+ 0
+
+
+
+
+
+
+ 255
+ 0
+ 0
+
+
+
+
+
+
+ 255
+ 0
+ 0
+
+
+
+
+
+
+
+
+ 160
+ 162
+ 162
+
+
+
+
+
+
+ 168
+ 169
+ 169
+
+
+
+
+
+
+ 160
+ 162
+ 162
+
+
+
+
+
+
+
+ *
- -
+
-
Qt::Vertical
+
+ QSizePolicy::Expanding
+
20
@@ -382,6 +618,9 @@
1
+
+ QLayout::SetDefaultConstraint
+
-
@@ -864,18 +1103,36 @@
-
-
-
+
+
+ QLayout::SetDefaultConstraint
+
+
+ 0
+
+
+ 0
+
+
1
-
-
-
+
-
+
+
+
+ 0
+ 0
+
+
- Job Startup Conditions
+ Job Completion Conditions
-
+
- 1
+ 3
+
+
+ QLayout::SetDefaultConstraint
3
@@ -890,51 +1147,235 @@
3
-
-
+
- 1
+ 3
-
-
-
-
- Start the observation job as soon as all the constraints, if any, are met. The best candidate target shall be imaged first.
+
-
+
+
+
+ 0
+ 0
+
- ASAP
+ &Repeat for
-
- true
+
+ completionButtonGroup
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ dd/MM/yy hh:mm
+
+
+ true
+
+
+ Qt::LocalTime
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ The observation job is completed when the sequence is complete.
+
+
+ Se&quence completion
+
+
+ true
- startupButtonGroup
+ completionButtonGroup
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Terminate the job on the given date and time.
+
+
+ Repeat &until
+
+
+ completionButtonGroup
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Restart job until it is executed this many times.
+
+
+ runs
+
+
+ 1
+
+
+ 1000
+
+
+ 1
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Restart the sequence job indefinitely.
+
+
+ Repeat &until terminated
+
+
+ completionButtonGroup
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Job Startup Conditions
+
+
+
+ 3
+
+
+ 3
+
+
+ 3
+
+
+ 3
+
+
+ 3
+
-
-
+
- 1
+ 3
-
-
+
-
+
+
+
+ 0
+ 0
+
+
+
+ dd/MM hh:mm
+
+
+ true
+
+
+
+ -
+
+
+ 0
+ 0
+
+
Start the observation job when the object reaches culmination adjusted for the offset value in minutes. By default, the observation job runs 60 minutes prior to culmination.
- Cu&lmination Offset
+ Cul&mination Offset
startupButtonGroup
- -
+
-
+
+
+
+ 0
+ 0
+
+
+
+ start the job on the specified date and time
+
+
+ O&n
+
+
+ startupButtonGroup
+
+
+
+ -
+
+
+ 0
+ 0
+
+
<html><head/><body><p>Offset in minutes to start imaging before or after culmination time.</p></body></html>
+
+ min
+
-240
@@ -949,75 +1390,54 @@
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
+
-
+
+
+
+ 0
+ 0
+
-
-
-
-
- -
-
-
- 1
-
-
-
-
- start the job on the specified date and time
+ Start the observation job as soon as all the constraints, if any, are met. The best candidate target shall be imaged first.
- O&n
+ ASAP
+
+
+ true
startupButtonGroup
- -
-
-
- dd/MM/yy hh:mm
-
-
- true
+
-
+
+
+
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
+
-
+
+
+ 0
+ 0
+
+
Job Constraints
- 1
+ 3
3
@@ -1032,26 +1452,18 @@
3
-
-
+
- 1
+ 3
-
-
-
-
- °
-
-
-
- -
-
-
- °
-
-
-
-
+
+
+ 0
+ 0
+
+
The moon separation must remain equal to or higher than the given value.
@@ -1063,123 +1475,149 @@
- -
-
-
- 180.000000000000000
+
-
+
+
+
+ 0
+ 0
+
-
- 10.000000000000000
+
+ The object's altitude must remain equal or higher than the given value.
+
+
+ Alt >
+
+ true
+
+
+ constraintButtonGroup
+
-
+
+
+ 0
+ 0
+
+
+
+ °
+
-15.000000000000000
89.900000000000006
- -
-
-
- The object's altitude must remain equal or higher than the given value.
+
-
+
+
+
+ 0
+ 0
+
-
- Alt >
+
+ <html><head/><body><p>Weather conditions must remain safe. When weather conditions become dangerous, shutdown procedure is initiated.</p></body></html>
-
- true
+
+ Weather
constraintButtonGroup
-
-
- -
-
-
- 1
-
-
-
-
-
- Jobs are only executed during astronomical twilight darkness period.
+
-
+
+
+
+ 0
+ 0
+
-
- Twilight
+
+ °
-
- true
+
+ 180.000000000000000
+
+
+ 10.000000000000000
-
- constraintButtonGroup
-
- -
-
+
-
+
+
+
+ 0
+ 0
+
+
- <html><head/><body><p>Weather conditions must remain safe. When weather conditions become dangerous, shutdown procedure is initiated.</p></body></html>
+ <html><body><p>The twilight restriction constrains jobs to execute in astronomical darkness. Use the dusk and dawn offsets in the Ekos Scheduler options to adjust the interval.</p></body></html>
- Weather
+ Twilight
+
+
+ true
constraintButtonGroup
- -
+
-
-
-
- 32
- 32
-
-
-
-
- 32
- 32
-
-
+
+ Qt::AlignCenter
+
- -
-
-
- Qt::Horizontal
+
-
+
+
+
-
-
- 40
- 20
-
+
+ Qt::AlignCenter
-
+
- -
-
+
-
+
+
+
+ 0
+ 0
+
+
+
+ <html><head/><body><p>One-time shutdown procedure to be executed after all scheduler jobs are completed. The script is executed <span style=" font-weight:600; text-decoration: underline;">after</span> the shutdown procedures (e.g. parking), if selected, are completed.</p></body></html>
+
- Job Completion Conditions
+ Observatory Shutdown Procedure
-
+
- 3
+ 1
3
@@ -1194,117 +1632,97 @@
3
-
-
-
- The observation job is completed when the sequence is complete.
-
-
- Se&quence completion
-
-
- true
+
+
+ 1
-
- completionButtonGroup
-
-
-
- -
-
-
-
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+ Turn off CCD cooler.
+
- &Repeat for
+ Warm CCD
- completionButtonGroup
+ shutdownProcedureGroup
-
-
-
- Restart job until it is executed this many times.
-
-
- 1
-
-
- 1000
+
+
+
+ 0
+ 0
+
-
- 1
+
+ Close dust cover
-
-
- -
-
- runs
+ Cap
+
+ shutdownProcedureGroup
+
-
-
-
- Qt::Horizontal
+
+
+ true
-
-
- 40
- 20
-
+
+
+ 0
+ 0
+
-
-
-
-
- -
-
-
- Restart the sequence job indefinitely.
-
-
- Repeat until ter&minated
-
-
- completionButtonGroup
-
-
-
- -
-
-
- 1
-
-
-
-
- Terminate the job on the given date and time.
+ Park telescope to home position.
- Repeat until
+ Park Mount
- completionButtonGroup
+ shutdownProcedureGroup
-
-
-
- dd/MM/yy hh:mm
-
-
+
+
true
-
- Qt::LocalTime
+
+
+ 0
+ 0
+
+
+
+ Park dome to home position
+
+
+ Park Dome
+
+ shutdownProcedureGroup
+
-
-
+
Qt::Horizontal
@@ -1316,127 +1734,76 @@
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
-
-
-
- -
-
-
- <html><head/><body><p>Define what should happen when a job steps into an error or aborts:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Don't re-schedule</span>: Don't restart the job in case of an error or an abort.</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Re-schedule after all terminated</span>: If a job gets aborted, the scheduler will only re-schedule it if when all jobs are finished or aborted. If this is the case, the scheduler re-schedules all aborted jobs and sleeps for the given delay.</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Re-schedule immediately</span>: As soon as a job gets aborted, the scheduler will re-schedule it and waits the given delay.</li></ul><p>If the option for re-scheduling errors is selected, errors are handled like aborts. Otherwise, jobs that step into an error are never re-scheduled.</p></body></html>
-
-
- Handling of aborted jobs
-
-
-
- 18
-
-
- 0
-
-
-
-
-
- Do not re-schedule aborted jobs.
-
-
- Don'&t re-schedule
-
-
- errorHandlingButtonGroup
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
- Re-schedule aborted jobs as soon as all executable jobs are either completed or aborted.
-
-
- Re-s&chedule after all finished
-
-
- errorHandlingButtonGroup
-
-
-
- -
-
-
- Treat errors like aborts.
-
-
- Re-schedule errors
-
-
-
- -
-
-
- Delay how long should be waited until an aborted job will be restarted.
-
-
- wait (secs)
-
-
-
- -
-
-
- Re-schedule an aborted job immediately.
-
-
- Re-s&chedule immediately
-
-
- errorHandlingButtonGroup
-
-
-
- -
-
-
- Delay in seconds.
-
-
- 10000
-
-
- 10
+
-
+
+
+ 1
-
+ -
+
+
+ Script:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ false
+
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+
+
-
-
- -
-
-
-
-
+
-
+
- <html><head/><body><p>One-time startup procedure to be executed before starting Ekos. The script is executed <span style=" font-weight:600; text-decoration: underline;">before</span> the startup procedures (e.g. unpark scope), if selected, are executed.</p></body></html>
+ <html><head/><body><p>Define what should happen when a job steps into an error or aborts:</p><ul style="margin-top: 0px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; -qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Don't re-schedule</span>: Don't restart the job in case of an error or an abort.</li><li style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Re-schedule after all terminated</span>: If a job gets aborted, the scheduler will only re-schedule it if when all jobs are finished or aborted. If this is the case, the scheduler re-schedules all aborted jobs and sleeps for the given delay.</li><li style=" margin-top:0px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Re-schedule immediately</span>: As soon as a job gets aborted, the scheduler will re-schedule it and waits the given delay.</li></ul><p>If the option for re-scheduling errors is selected, errors are handled like aborts. Otherwise, jobs that step into an error are never re-scheduled.</p></body></html>
- Observatory Startup Procedure
+ Aborted Job Management
-
+
1
@@ -1453,144 +1820,126 @@
3
-
-
+
1
-
-
-
- true
+
+
+
+ 0
+ 0
+
- Park dome to home position
+ Do not re-schedule aborted jobs.
- UnPark Dome
+ &None
- startupProcedureButtonGroup
+ errorHandlingButtonGroup
-
-
-
- true
+
+
+
+ 0
+ 0
+
- Park telescope to home position.
+ Re-schedule aborted jobs as soon as all executable jobs are either completed or aborted.
- UnPark Mount
+ &Queue
- startupProcedureButtonGroup
+ errorHandlingButtonGroup
-
-
+
+
+
+ 0
+ 0
+
+
- Open dust cover
+ Re-schedule an aborted job immediately.
- UnCap
+ I&mmediate
- startupProcedureButtonGroup
+ errorHandlingButtonGroup
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
- -
-
-
-
- 32
- 32
-
-
-
-
-
-
-
-
-
+
1
-
-
+
+
+
+ 0
+ 0
+
+
+
+ Treat errors like aborts.
+
- Script:
+ Re-schedule errors
-
-
+
-
+
0
0
-
- false
+
+ Delay in seconds.
-
- true
+
+ s wait
-
-
- -
-
-
-
- 32
- 32
-
+
+ 10000
-
-
+
+ 10
- -
-
-
-
- 0
- 0
-
-
+
-
+
- <html><head/><body><p>One-time shutdown procedure to be executed after all scheduler jobs are completed. The script is executed <span style=" font-weight:600; text-decoration: underline;">after</span> the shutdown procedures (e.g. parking), if selected, are completed.</p></body></html>
+ <html><head/><body><p>One-time startup procedure to be executed before starting Ekos. The script is executed <span style=" font-weight:600; text-decoration: underline;">before</span> the startup procedures (e.g. unpark scope), if selected, are executed.</p></body></html>
- Observatory Shutdown Procedure
+ Observatory Startup Procedure
-
+
1
@@ -1607,73 +1956,75 @@
3
-
-
+
1
-
-
+
true
-
- Turn off CCD cooler.
-
-
- Warm CCD
+
+
+ 0
+ 0
+
-
- shutdownProcedureGroup
-
-
-
- -
-
- Close dust cover
+ Park dome to home position
- Cap
+ UnPark Dome
- shutdownProcedureGroup
+ startupProcedureButtonGroup
-
-
+
true
+
+
+ 0
+ 0
+
+
Park telescope to home position.
- Park Mount
+ UnPark Mount
- shutdownProcedureGroup
+ startupProcedureButtonGroup
-
-
-
- true
+
+
+
+ 0
+ 0
+
- Park dome to home position
+ Open dust cover
- Park Dome
+ UnCap
- shutdownProcedureGroup
+ startupProcedureButtonGroup
-
-
+
Qt::Horizontal
@@ -1686,18 +2037,12 @@
-
-
-
-
- 0
- 0
-
-
-
-
- 32
- 32
-
+
+
+
+ 0
+ 0
+
@@ -1707,21 +2052,21 @@
-
-
+
1
-
-
+
Script:
-
-
+
-
+
0
0
@@ -1735,12 +2080,12 @@
-
-
-
-
- 32
- 32
-
+
+
+
+ 0
+ 0
+
@@ -1754,29 +2099,6 @@
- -
-
-
- 3
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Preferred
-
-
-
- 20
- 1
-
-
-
-
@@ -1789,17 +2111,9 @@
nameEdit
- selectObjectB
raBox
decBox
- fitsEdit
- selectFITSB
- sequenceEdit
- loadSequenceB
trackStepCheck
- focusStepCheck
- alignStepCheck
- guideStepCheck
unparkDomeCheck
unparkMountCheck
uncapCheck
@@ -1822,21 +2136,6 @@
queueTable
startB
pauseB
- asapConditionR
- culminationConditionR
- culminationOffset
- startupTimeConditionR
- startupTimeEdit
- altConstraintCheck
- minAltitude
- moonSeparationCheck
- minMoonSeparation
- twilightCheck
- weatherCheck
- sequenceCompletionR
- loopCompletionR
- timeCompletionR
- completionTimeEdit
@@ -1846,23 +2145,23 @@
false
-
-
-
+
false
-
+
false
-
-
+
+
false
+
+
diff --git a/kstars/kstars.h b/kstars/kstars.h
--- a/kstars/kstars.h
+++ b/kstars/kstars.h
@@ -37,6 +37,7 @@
class QDockWidget;
class QPalette;
class KActionMenu;
+class KConfigDialog;
class KStarsData;
class SkyPoint;
@@ -782,6 +783,9 @@
/** Initialize Menu bar, toolbars and all Actions. */
void initActions();
+ /** Prepare options dialog. */
+ KConfigDialog* prepareOps();
+
/** Initialize Status bar. */
void initStatusBar();
diff --git a/kstars/kstars.kcfg b/kstars/kstars.kcfg
--- a/kstars/kstars.kcfg
+++ b/kstars/kstars.kcfg
@@ -2297,6 +2297,14 @@
3
+
+
+ 0
+
+
+
+ 0
+
0
diff --git a/kstars/kstarsactions.cpp b/kstars/kstarsactions.cpp
--- a/kstars/kstarsactions.cpp
+++ b/kstars/kstarsactions.cpp
@@ -1001,14 +1001,21 @@
void KStars::slotViewOps()
{
- //An instance of your dialog could be already created and could be cached,
- //in which case you want to display the cached dialog instead of creating
- //another one
- if (KConfigDialog::showDialog("settings"))
- return;
+ // An instance of your dialog could be already created and could be cached,
+ // in which case you want to display the cached dialog instead of creating
+ // another one
+ prepareOps()->show();
+}
+
+KConfigDialog* KStars::prepareOps()
+{
+ KConfigDialog *dialog = KConfigDialog::exists("settings");
+ if (nullptr != dialog)
+ return dialog;
+
+ // KConfigDialog didn't find an instance of this dialog, so lets create it :
+ dialog = new KConfigDialog(this, "settings", Options::self());
- //KConfigDialog didn't find an instance of this dialog, so lets create it :
- KConfigDialog *dialog = new KConfigDialog(this, "settings", Options::self());
// For some reason the dialog does not resize to contents
// so we set initial 'resonable' size here. Any better way to do this?
dialog->resize(800, 600);
@@ -1073,7 +1080,7 @@
page = dialog->addPage(opadvanced, i18n("Advanced"), "kstars_advanced");
page->setIcon(QIcon::fromTheme("kstars_advanced"));
- dialog->show();
+ return dialog;
}
void KStars::slotApplyConfigChanges()
diff --git a/kstars/kstarsinit.cpp b/kstars/kstarsinit.cpp
--- a/kstars/kstarsinit.cpp
+++ b/kstars/kstarsinit.cpp
@@ -374,6 +374,9 @@
KStandardAction::configureNotifications(this, SLOT(slotConfigureNotifications()), actionCollection());
#endif
+ // Prepare the options dialog early for modules to connect signals
+ prepareOps();
+
ka = actionCollection()->addAction(KStandardAction::Preferences, "configure", this, SLOT(slotViewOps()));
//I am not sure what icon preferences is supposed to be.
//ka->setIcon( QIcon::fromTheme(""));