From nobody Thu Mar 17 05:23:32 2022 X-Original-To: dev-commits-ports-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id D32121A23385; Thu, 17 Mar 2022 05:23:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4KJwXh5RS9z4lRJ; Thu, 17 Mar 2022 05:23:32 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1647494612; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=k5e9Iw4yVm9+sxwDrCOwBtMtPONn/K6+I22ipdCNj2M=; b=CVW/2XxsF3edQ/fuDad/cO1jFukAPWh3YHrvB/+x3gH0gYFqt4ATdOxj4Q04SaRAS3S7zN ev+4gtmtEfRnYbxve2y/GGCdbAM4/0U2mTO8uTiRblzCqxDn1e+tUL8oX07Y4ZgaHaZdSv usvmqy/E4dpkwMsFzQWWZpG1r7NpwoLYcXBkbLHTg0QOKkvEkt+f3si/z4NEbh+ZdmnSzI Y9dqRFen7Rr5uyx2yjW2dnCwRBWWS07m1q7ytQE7lwpsNy+vZhW5JXD5eX+CxuIVWUbibK LxQJ6Rh7iB2EsSeVhvlGC3sRzUCjyBdzA+yeE9Mmnm4Q//DeBLSdZB5JHDhMxw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9AE0F24A04; Thu, 17 Mar 2022 05:23:32 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 22H5NWfh018378; Thu, 17 Mar 2022 05:23:32 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 22H5NWpQ018377; Thu, 17 Mar 2022 05:23:32 GMT (envelope-from git) Date: Thu, 17 Mar 2022 05:23:32 GMT Message-Id: <202203170523.22H5NWpQ018377@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: "Tobias C. Berner" Subject: git: 4dfab55231f8 - main - astro/kstars: update to 3.5.8 List-Id: Commits to the main branch of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-main@freebsd.org X-BeenThere: dev-commits-ports-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: tcberner X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 4dfab55231f8dbc0ed6832b9c9d66912b4e3162f Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1647494612; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=k5e9Iw4yVm9+sxwDrCOwBtMtPONn/K6+I22ipdCNj2M=; b=YIs9Ra+eeDHZNzPLnBi+gXEg/GHc7cAkIDB+9DNfDfvQkkk2bs3UkZOGhNW7ObN2NwlV4d MKug5ewFWh4xjKxhwQakquU9qRbcvYDnppFpY8cfBaHwGW2NTLOnEmhN0ID/CTMvU96r9A vnKhynlmMEswEVu4lxTaCCXXDL0Ok+hwIFphzP86ZQGjBqn958N1MN8Mx6LxU45HOUrWZj 7fCuLuPsXYTKfoLOgo+wqix+VsQNUNMfNWkGF5fIjcDrigPR6Hlsl31/+Ci6QHW56R6dFf Qe9oS0M1vx+dwKWzDgtMctqNMuyZdiW1Od+g36KdreChRKrhWkcB2XfUpQgZlQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1647494612; a=rsa-sha256; cv=none; b=qkEoko5+wf9ogIZxoYTQnWfSYJo3TbHeKB8Duub8rN3ft3pKksmph91qq2ftYDdSSMvQlK pyqeY26joGXZ61E98km1Dj7uCk0v9J6NSpeI0sLqNNwVeaC/9N2TQT5uiiPMWCKOJ2X217 XSBEVwHmJ3ENOqwjyMFWQU+bnb/xU8QPCvJzJdWiCneEDbVVi+e4+/WGgQ+fTwOEMTq/ct 2DeAon53UKxy8a5H4/R3TeSM5EXEAzHWhiXXZqWQ7YYu9GPB1q5CC2XVIbNHfvVOAd0XXI TnmVdmDYtO6vfNwpYNY8OhQwH7NX5j6K43BBX2PkPjf/ZoYdDhtPuHj6xc7vFQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by tcberner: URL: https://cgit.FreeBSD.org/ports/commit/?id=4dfab55231f8dbc0ed6832b9c9d66912b4e3162f commit 4dfab55231f8dbc0ed6832b9c9d66912b4e3162f Author: Tobias C. Berner AuthorDate: 2022-03-17 04:57:19 +0000 Commit: Tobias C. Berner CommitDate: 2022-03-17 05:23:22 +0000 astro/kstars: update to 3.5.8 --- astro/kstars/Makefile | 5 +- astro/kstars/distinfo | 6 +- .../bef3940aaceb1ba574687a4817ef829a04d49dd4.patch | 1237 -------------------- 3 files changed, 4 insertions(+), 1244 deletions(-) diff --git a/astro/kstars/Makefile b/astro/kstars/Makefile index 4a0c3f494438..cfec1bfdb448 100644 --- a/astro/kstars/Makefile +++ b/astro/kstars/Makefile @@ -1,6 +1,5 @@ PORTNAME= kstars -DISTVERSION= 3.5.7 -PORTREVISION= 5 +DISTVERSION= 3.5.8 PORTEPOCH= 1 CATEGORIES= astro kde MASTER_SITES= KDE/stable/${PORTNAME} @@ -10,8 +9,6 @@ COMMENT= KDE desktop planetarium LICENSE= GPLv2 -EXTRA_PATCHES= ${PATCHDIR}/bef3940aaceb1ba574687a4817ef829a04d49dd4.patch:-p1 - LIB_DEPENDS= libcfitsio.so:astro/cfitsio \ libindidriver.so:devel/indi \ libqt5keychain.so:security/qtkeychain \ diff --git a/astro/kstars/distinfo b/astro/kstars/distinfo index 556b5ca1ccd9..e34c6f56725b 100644 --- a/astro/kstars/distinfo +++ b/astro/kstars/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1642759464 -SHA256 (kstars-3.5.7.tar.xz) = aa8f122ee9b8e81334433191eab276c361112b9dcb9bcf8dfa0851e87a100d06 -SIZE (kstars-3.5.7.tar.xz) = 86749048 +TIMESTAMP = 1647460756 +SHA256 (kstars-3.5.8.tar.xz) = 660d902837b7abf3810d6e24f72fd84f0444a29bd7d43e1896b19fece1c88c3f +SIZE (kstars-3.5.8.tar.xz) = 86831012 diff --git a/astro/kstars/files/bef3940aaceb1ba574687a4817ef829a04d49dd4.patch b/astro/kstars/files/bef3940aaceb1ba574687a4817ef829a04d49dd4.patch deleted file mode 100644 index 5b252c7466dd..000000000000 --- a/astro/kstars/files/bef3940aaceb1ba574687a4817ef829a04d49dd4.patch +++ /dev/null @@ -1,1237 +0,0 @@ -From bef3940aaceb1ba574687a4817ef829a04d49dd4 Mon Sep 17 00:00:00 2001 -From: Jasem Mutlaq -Date: Fri, 4 Mar 2022 12:54:11 +0300 -Subject: [PATCH] Make it work with StellarSolver 2.0 - ---- - CMakeLists.txt | 2 +- - Tests/kstars_ui/test_ekos_align.cpp | 17 +- - .../kstars_ui/test_ekos_meridianflip_base.cpp | 63 ++-- - kstars/auxiliary/ksutils.cpp | 11 + - kstars/ekos/align/align.cpp | 22 +- - kstars/ekos/align/opsalign.ui | 7 +- - kstars/ekos/align/opsprograms.cpp | 30 +- - kstars/ekos/align/opsprograms.ui | 30 +- - .../ekos/auxiliary/stellarsolverprofile.cpp | 50 +-- - .../auxiliary/stellarsolverprofileeditor.cpp | 9 +- - .../auxiliary/stellarsolverprofileeditor.ui | 288 +++++++++++------- - kstars/fitsviewer/fitssepdetector.cpp | 6 +- - kstars/fitsviewer/structuredefinitions.h | 84 +++-- - kstars/kstars.kcfg | 5 + - 14 files changed, 387 insertions(+), 237 deletions(-) - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 5e83ddb47..aabba563e 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -215,7 +215,7 @@ MACRO_BOOL_TO_01(INDI_FOUND HAVE_INDI) - set_package_properties(INDI PROPERTIES DESCRIPTION "Astronomical instrumentation control" URL "https://www.indilib.org" TYPE OPTIONAL PURPOSE "Support for controlling astronomical devices on Linux with KStars.") - - if (INDI_FOUND AND NOT ANDROID) -- find_package(StellarSolver REQUIRED) -+ find_package(StellarSolver REQUIRED 2.0) - endif(INDI_FOUND AND NOT ANDROID) - MACRO_BOOL_TO_01(StellarSolver_FOUND HAVE_STELLARSOLVER) - -diff --git a/Tests/kstars_ui/test_ekos_align.cpp b/Tests/kstars_ui/test_ekos_align.cpp -index 4e5a9f482..a04aff562 100644 ---- a/Tests/kstars_ui/test_ekos_align.cpp -+++ b/Tests/kstars_ui/test_ekos_align.cpp -@@ -266,7 +266,7 @@ void TestEkosAlign::prepareTestCase() - // select StellarSolver - Options::setSolverType(SSolver::SOLVER_LOCALASTROMETRY); - // select fast solve profile option -- Options::setSolveOptionsProfile(SSolver::Parameters::FAST_SOLVING); -+ Options::setSolveOptionsProfile(SSolver::Parameters::DEFAULT); - // select the "Slew to Target" mode - KTRY_SET_RADIOBUTTON(ekos->alignModule(), slewR, true); - // reduce the accuracy to avoid testing problems -@@ -305,7 +305,8 @@ void TestEkosAlign::init() - image_count = 0; - } - --void TestEkosAlign::cleanup() { -+void TestEkosAlign::cleanup() -+{ - Ekos::Manager *ekos = Ekos::Manager::Instance(); - Ekos::Scheduler *scheduler = ekos->schedulerModule(); - // press stop button if running -@@ -440,10 +441,13 @@ bool TestEkosAlign::executeAlignment(SkyObject *targetObject) - bool TestEkosAlign::verifyAlignmentTarget(SkyObject *targetObject) - { - QList alignmentTarget = Ekos::Manager::Instance()->alignModule()->getTargetCoords(); -- KVERIFY2_SUB(std::abs(alignmentTarget[0] - targetObject->ra0().Hours()) < 0.005, // difference small enough to capture JNow/J2000 errors -- QString("RA target J2000 deviation too big: %1 received, %2 expected.").arg(alignmentTarget[0]).arg(targetObject->ra0().Hours()).toLocal8Bit()); -+ KVERIFY2_SUB(std::abs(alignmentTarget[0] - targetObject->ra0().Hours()) < -+ 0.005, // difference small enough to capture JNow/J2000 errors -+ QString("RA target J2000 deviation too big: %1 received, %2 expected.").arg(alignmentTarget[0]).arg( -+ targetObject->ra0().Hours()).toLocal8Bit()); - KVERIFY2_SUB(std::abs(alignmentTarget[1] - targetObject->dec0().Degrees()) < 0.005, -- QString("DEC target J2000 deviation too big: %1 received, %2 expected.").arg(alignmentTarget[1]).arg(targetObject->dec0().Degrees()).toLocal8Bit()); -+ QString("DEC target J2000 deviation too big: %1 received, %2 expected.").arg(alignmentTarget[1]).arg( -+ targetObject->dec0().Degrees()).toLocal8Bit()); - // success - return true; - } -@@ -460,7 +464,8 @@ bool TestEkosAlign::alignWithScheduler(SkyObject *targetObject, QString fitsTarg - const QString sequenceFile = TestEkosSchedulerHelper::getDefaultEsqContent(); - const QString esqFile = testDir->filePath(QString("test.esq")); - // create the scheduler file -- const QString schedulerFile = TestEkosSchedulerHelper::getSchedulerFile(targetObject, startupCondition, 1, {true, false, true, false}, false, false, 30, fitsTarget); -+ const QString schedulerFile = TestEkosSchedulerHelper::getSchedulerFile(targetObject, startupCondition, 1, {true, false, true, false}, -+ false, false, 30, fitsTarget); - const QString eslFile = testDir->filePath(QString("test.esl")); - // write both files to the test directory - KVERIFY_SUB(TestEkosSchedulerHelper::writeSimpleSequenceFiles(schedulerFile, eslFile, sequenceFile, esqFile)); -diff --git a/Tests/kstars_ui/test_ekos_meridianflip_base.cpp b/Tests/kstars_ui/test_ekos_meridianflip_base.cpp -index ea58b07fa..c97486558 100644 ---- a/Tests/kstars_ui/test_ekos_meridianflip_base.cpp -+++ b/Tests/kstars_ui/test_ekos_meridianflip_base.cpp -@@ -23,7 +23,8 @@ - #include "ekos/guide/internalguide/gmath.h" - #include "Options.h" - --TestEkosMeridianFlipBase::TestEkosMeridianFlipBase(QObject *parent) : TestEkosMeridianFlipBase::TestEkosMeridianFlipBase("Internal", parent){} -+TestEkosMeridianFlipBase::TestEkosMeridianFlipBase(QObject *parent) : -+ TestEkosMeridianFlipBase::TestEkosMeridianFlipBase("Internal", parent) {} - - TestEkosMeridianFlipBase::TestEkosMeridianFlipBase(QString guider, QObject *parent) : QObject(parent) - { -@@ -88,7 +89,7 @@ bool TestEkosMeridianFlipBase::startEkosProfile() - // select StellarSolver - Options::setSolverType(SSolver::SOLVER_LOCALASTROMETRY); - // select fast solve profile option -- Options::setSolveOptionsProfile(SSolver::Parameters::FAST_SOLVING); -+ Options::setSolveOptionsProfile(SSolver::Parameters::DEFAULT); - // select the "Slew to Target" mode - KTRY_SET_RADIOBUTTON_SUB(ekos->alignModule(), slewR, true); - -@@ -245,8 +246,9 @@ void TestEkosMeridianFlipBase::cleanup() - * - * ********************************************************************************* */ - --void TestEkosMeridianFlipBase::prepareTestData(double exptime, QList locationList, QList culminationList, QList filterList, -- QList focusList, QList autofocusList, QList guideList, QList ditherList) -+void TestEkosMeridianFlipBase::prepareTestData(double exptime, QList locationList, QList culminationList, -+ QList filterList, -+ QList focusList, QList autofocusList, QList guideList, QList ditherList) - { - #if QT_VERSION < QT_VERSION_CHECK(5,9,0) - QSKIP("Bypassing fixture test on old Qt"); -@@ -321,7 +323,7 @@ bool TestEkosMeridianFlipBase::positionMountForMF(int secsToMF, bool fast) - // calculate a feasible declination depending to the location's latitude - // for the upper culmination, we use an azimuth of 45 deg, for the lower culmination half way between pole and horizont - double lat = KStarsData::Instance()->geo()->lat()->Degrees(); -- target = new SkyPoint(range24(meridianRA + delta), culmination ? (lat-45) : (90-lat/2)); -+ target = new SkyPoint(range24(meridianRA + delta), culmination ? (lat - 45) : (90 - lat / 2)); - - if (fast) - { -@@ -414,7 +416,7 @@ bool TestEkosMeridianFlipBase::prepareCaptureTestcase(int secsToMF, bool initial - } - - bool TestEkosMeridianFlipBase::prepareSchedulerTestcase(int secsToMF, bool useFocus, -- SchedulerJob::CompletionCondition completionCondition, int iterations) -+ SchedulerJob::CompletionCondition completionCondition, int iterations) - { - #if QT_VERSION < QT_VERSION_CHECK(5,9,0) - QSKIP("Bypassing fixture test on old Qt"); -@@ -453,18 +455,19 @@ bool TestEkosMeridianFlipBase::prepareSchedulerTestcase(int secsToMF, bool useFo - Options::setStopEkosAfterShutdown(false); - - // set the completion condition -- switch (completionCondition) { -- case SchedulerJob::FINISH_REPEAT: -- // repeat the job for a fixed amount -- KTRY_SET_RADIOBUTTON_SUB(scheduler, repeatCompletionR, true); -- KTRY_SET_SPINBOX_SUB(scheduler, repeatsSpin, iterations); -- break; -- case SchedulerJob::FINISH_LOOP: -- KTRY_SET_RADIOBUTTON_SUB(scheduler, loopCompletionR, true); -- break; -- default: -- QWARN(QString("Unsupported completion condition %1!").arg(completionCondition).toStdString().c_str()); -- return false; -+ switch (completionCondition) -+ { -+ case SchedulerJob::FINISH_REPEAT: -+ // repeat the job for a fixed amount -+ KTRY_SET_RADIOBUTTON_SUB(scheduler, repeatCompletionR, true); -+ KTRY_SET_SPINBOX_SUB(scheduler, repeatsSpin, iterations); -+ break; -+ case SchedulerJob::FINISH_LOOP: -+ KTRY_SET_RADIOBUTTON_SUB(scheduler, loopCompletionR, true); -+ break; -+ default: -+ QWARN(QString("Unsupported completion condition %1!").arg(completionCondition).toStdString().c_str()); -+ return false; - } - // add scheduler job - KTRY_CLICK_SUB(scheduler, addToQueueB); -@@ -511,7 +514,8 @@ bool TestEkosMeridianFlipBase::checkRefocusing() - KVERIFY_EMPTY_QUEUE_WITH_TIMEOUT_SUB(m_CaptureHelper->expectedFocusStates, 30000); - // check if focus completion is reached (successful or not) - if (refocus_checked || autofocus_checked) -- KTRY_VERIFY_WITH_TIMEOUT_SUB(m_CaptureHelper->getFocusStatus() == Ekos::FOCUS_COMPLETE || m_CaptureHelper->getFocusStatus() == Ekos::FOCUS_FAILED || -+ KTRY_VERIFY_WITH_TIMEOUT_SUB(m_CaptureHelper->getFocusStatus() == Ekos::FOCUS_COMPLETE -+ || m_CaptureHelper->getFocusStatus() == Ekos::FOCUS_FAILED || - m_CaptureHelper->getFocusStatus() == Ekos::FOCUS_ABORTED, 120000); - // focusing might have suspended guiding - if (m_CaptureHelper->use_guiding) -@@ -554,7 +558,8 @@ bool TestEkosMeridianFlipBase::stopAligning() - // stop alignment - KTRY_GADGET_SUB(Ekos::Manager::Instance()->alignModule(), QPushButton, stopB); - KTRY_CLICK_SUB(Ekos::Manager::Instance()->alignModule(), stopB); -- KTRY_VERIFY_WITH_TIMEOUT_SUB(m_CaptureHelper->getAlignStatus() == Ekos::ALIGN_IDLE || m_CaptureHelper->getAlignStatus() == Ekos::ALIGN_ABORTED || -+ KTRY_VERIFY_WITH_TIMEOUT_SUB(m_CaptureHelper->getAlignStatus() == Ekos::ALIGN_IDLE -+ || m_CaptureHelper->getAlignStatus() == Ekos::ALIGN_ABORTED || - m_CaptureHelper->getAlignStatus() == Ekos::ALIGN_FAILED || m_CaptureHelper->getAlignStatus() == Ekos::ALIGN_COMPLETE, 5000); - // all checks succeeded - return true; -@@ -581,8 +586,10 @@ bool TestEkosMeridianFlipBase::startCapturing() - KWRAP_SUB(KTRY_SWITCH_TO_MODULE_WITH_TIMEOUT(Ekos::Manager::Instance()->captureModule(), 1000)); - - // check if capture is in a stopped state -- KWRAP_SUB(QVERIFY(m_CaptureHelper->getCaptureStatus() == Ekos::CAPTURE_IDLE || m_CaptureHelper->getCaptureStatus() == Ekos::CAPTURE_ABORTED -- || m_CaptureHelper->getCaptureStatus() == Ekos::CAPTURE_SUSPENDED|| m_CaptureHelper->getCaptureStatus() == Ekos::CAPTURE_COMPLETE)); -+ KWRAP_SUB(QVERIFY(m_CaptureHelper->getCaptureStatus() == Ekos::CAPTURE_IDLE -+ || m_CaptureHelper->getCaptureStatus() == Ekos::CAPTURE_ABORTED -+ || m_CaptureHelper->getCaptureStatus() == Ekos::CAPTURE_SUSPENDED -+ || m_CaptureHelper->getCaptureStatus() == Ekos::CAPTURE_COMPLETE)); - - // press start - m_CaptureHelper->expectedCaptureStates.enqueue(Ekos::CAPTURE_CAPTURING); -@@ -599,7 +606,8 @@ bool TestEkosMeridianFlipBase::startCapturing() - bool TestEkosMeridianFlipBase::stopCapturing() - { - // check if capture is in a stopped state -- if (m_CaptureHelper->getCaptureStatus() == Ekos::CAPTURE_IDLE || m_CaptureHelper->getCaptureStatus() == Ekos::CAPTURE_ABORTED || -+ if (m_CaptureHelper->getCaptureStatus() == Ekos::CAPTURE_IDLE -+ || m_CaptureHelper->getCaptureStatus() == Ekos::CAPTURE_ABORTED || - m_CaptureHelper->getCaptureStatus() == Ekos::CAPTURE_COMPLETE) - return true; - -@@ -629,7 +637,8 @@ bool TestEkosMeridianFlipBase::startScheduler() - - // switch to the scheduler module and start - KWRAP_SUB(KTRY_SWITCH_TO_MODULE_WITH_TIMEOUT(scheduler, 1000)); -- KVERIFY_SUB(m_CaptureHelper->getSchedulerStatus() == Ekos::SCHEDULER_IDLE || m_CaptureHelper->getSchedulerStatus() == Ekos::SCHEDULER_ABORTED); -+ KVERIFY_SUB(m_CaptureHelper->getSchedulerStatus() == Ekos::SCHEDULER_IDLE -+ || m_CaptureHelper->getSchedulerStatus() == Ekos::SCHEDULER_ABORTED); - KTRY_CLICK_SUB(scheduler, startB); - - // check mount slew and tracking -@@ -648,7 +657,8 @@ bool TestEkosMeridianFlipBase::stopScheduler() - Ekos::Scheduler *scheduler = Ekos::Manager::Instance()->schedulerModule(); - // switch to the capture module - KWRAP_SUB(KTRY_SWITCH_TO_MODULE_WITH_TIMEOUT(scheduler, 1000)); -- if (m_CaptureHelper->getSchedulerStatus() == Ekos::SCHEDULER_RUNNING || m_CaptureHelper->getSchedulerStatus() == Ekos::SCHEDULER_PAUSED) -+ if (m_CaptureHelper->getSchedulerStatus() == Ekos::SCHEDULER_RUNNING -+ || m_CaptureHelper->getSchedulerStatus() == Ekos::SCHEDULER_PAUSED) - KTRY_CLICK_SUB(scheduler, startB); - // all checks succeeded - return true; -@@ -705,7 +715,8 @@ bool TestEkosMeridianFlipBase::stopFocusing() - KTRY_GADGET_SUB(Ekos::Manager::Instance()->focusModule(), QPushButton, stopFocusB); - if (stopFocusB->isEnabled()) - KTRY_CLICK_SUB(Ekos::Manager::Instance()->focusModule(), stopFocusB); -- KTRY_VERIFY_WITH_TIMEOUT_SUB(m_CaptureHelper->getFocusStatus() == Ekos::FOCUS_IDLE || m_CaptureHelper->getFocusStatus() == Ekos::FOCUS_COMPLETE || -+ KTRY_VERIFY_WITH_TIMEOUT_SUB(m_CaptureHelper->getFocusStatus() == Ekos::FOCUS_IDLE -+ || m_CaptureHelper->getFocusStatus() == Ekos::FOCUS_COMPLETE || - m_CaptureHelper->getFocusStatus() == Ekos::FOCUS_ABORTED || m_CaptureHelper->getFocusStatus() == Ekos::FOCUS_FAILED, 15000); - - // all checks succeeded -diff --git a/kstars/auxiliary/ksutils.cpp b/kstars/auxiliary/ksutils.cpp -index 1b9b53f6a..81fd06134 100644 ---- a/kstars/auxiliary/ksutils.cpp -+++ b/kstars/auxiliary/ksutils.cpp -@@ -1165,6 +1165,17 @@ QString getDefaultPath(const QString &option) - #endif - return prefix + "/bin/solve-field"; - } -+ else if (option == "WatneyBinary") -+ { -+ #if defined(ASTROMETRY_PREFIX) -+ return QString(ASTROMETRY_PREFIX "/bin/watney-solver"); -+ #elif defined(Q_OS_OSX) -+ return "/usr/local/bin/watney-solver"; -+ #elif defined(Q_OS_WIN) -+ return "C:/Program Files/watney-solve-win-x64-1/watney-solve.exe"; -+ #endif -+ return prefix + "/bin/watney-solver"; -+ } - else if (option == "SextractorBinary") - { - #if defined(SEXTRACTOR_PREFIX) -diff --git a/kstars/ekos/align/align.cpp b/kstars/ekos/align/align.cpp -index 859ac6b01..2abcbb663 100644 ---- a/kstars/ekos/align/align.cpp -+++ b/kstars/ekos/align/align.cpp -@@ -1867,7 +1867,7 @@ void Align::startSolving() - - if (solverModeButtonGroup->checkedId() == SOLVER_LOCAL) - { -- if(Options::solverType() != SSolver::SOLVER_ASTAP) //You don't need astrometry index files to use ASTAP -+ if(Options::solverType() != SSolver::SOLVER_ASTAP && Options::solverType() != SSolver::SOLVER_WATNEYASTROMETRY) //You don't need astrometry index files to use ASTAP or Watney - { - bool foundAnIndex = false; - for(QString dataDir : astrometryDataDirs) -@@ -1916,16 +1916,20 @@ void Align::startSolving() - m_StellarSolver->setParameters(m_StellarSolverProfiles.at(Options::solveOptionsProfile())); - - const SSolver::SolverType type = static_cast(m_StellarSolver->property("SolverType").toInt()); -- if(type == SSolver::SOLVER_LOCALASTROMETRY || type == SSolver::SOLVER_ASTAP) -+ if(type == SSolver::SOLVER_LOCALASTROMETRY || type == SSolver::SOLVER_ASTAP || type == SSolver::SOLVER_WATNEYASTROMETRY) - { - QString filename = QDir::tempPath() + QString("/solver%1.fits").arg(QUuid::createUuid().toString().remove( - QRegularExpression("[-{}]"))); - alignView->saveImage(filename); - m_StellarSolver->setProperty("FileToProcess", filename); -- m_StellarSolver->setProperty("SextractorBinaryPath", Options::sextractorBinary()); -- m_StellarSolver->setProperty("SolverPath", Options::astrometrySolverBinary()); -- m_StellarSolver->setProperty("ASTAPBinaryPath", Options::aSTAPExecutable()); -- m_StellarSolver->setProperty("WCSPath", Options::astrometryWCSInfo()); -+ ExternalProgramPaths externalPaths; -+ externalPaths.sextractorBinaryPath = Options::sextractorBinary(); -+ externalPaths.solverPath = Options::astrometrySolverBinary(); -+ externalPaths.astapBinaryPath = Options::aSTAPExecutable(); -+ externalPaths.watneyBinaryPath = Options::watneyBinary(); -+ externalPaths.wcsPath = Options::astrometryWCSInfo(); -+ m_StellarSolver->setExternalFilePaths(externalPaths); -+ - - //No need for a conf file this way. - m_StellarSolver->setProperty("AutoGenerateAstroConfig", true); -@@ -2011,10 +2015,6 @@ void Align::startSolving() - m_StellarSolver->setSSLogLevel(SSolver::LOG_OFF); - } - -- //Unless we decide to load the WCS Coord, let's turn it off. -- //Be sure to set this to true instead if we want WCS from the solve. -- m_StellarSolver->setLoadWCS(false); -- - // Start solving process - m_StellarSolver->start(); - } -@@ -2047,7 +2047,7 @@ void Align::solverComplete() - { - FITSImage::Solution solution = m_StellarSolver->getSolution(); - // Would be better if parity was a bool field instead of a QString with "pos" and "neg" as possible values. -- const bool eastToTheRight = solution.parity == "pos" ? false : true; -+ const bool eastToTheRight = solution.parity == FITSImage::POSITIVE? false : true; - solverFinished(solution.orientation, solution.ra, solution.dec, solution.pixscale, eastToTheRight); - } - } -diff --git a/kstars/ekos/align/opsalign.ui b/kstars/ekos/align/opsalign.ui -index b472917a2..808b05e8c 100644 ---- a/kstars/ekos/align/opsalign.ui -+++ b/kstars/ekos/align/opsalign.ui -@@ -6,7 +6,7 @@ - - 0 - 0 -- 444 -+ 470 - 179 - - -@@ -108,6 +108,11 @@ - Local ASTAP - - -+ -+ -+ Local Watney -+ -+ - - - Online Astrometry -diff --git a/kstars/ekos/align/opsprograms.cpp b/kstars/ekos/align/opsprograms.cpp -index ff76214a5..f0e7e467b 100644 ---- a/kstars/ekos/align/opsprograms.cpp -+++ b/kstars/ekos/align/opsprograms.cpp -@@ -43,37 +43,15 @@ void OpsPrograms::slotApply() - - void OpsPrograms::loadDefaultPaths(int option) - { -- ExternalProgramPaths paths; -- -- switch(option) -- { -- case 0: -- return; -- break; -- case 1: -- paths = StellarSolver::getLinuxDefaultPaths(); -- break; -- case 2: -- paths = StellarSolver::getLinuxInternalPaths(); -- break; -- case 3: -- paths = StellarSolver::getMacHomebrewPaths(); -- break; -- case 4: -- paths = StellarSolver::getWinANSVRPaths(); -- break; -- case 5: -- paths = StellarSolver::getWinCygwinPaths(); -- break; -- default: -- paths = StellarSolver::getLinuxDefaultPaths(); -- break; -- } -+ if(option == 0) -+ return; -+ ExternalProgramPaths paths = StellarSolver::getDefaultExternalPaths((SSolver::ComputerSystemType) (option - 1)); - - kcfg_SextractorBinary->setText(paths.sextractorBinaryPath); - kcfg_AstrometryConfFile->setText(paths.confPath); - kcfg_AstrometrySolverBinary->setText(paths.solverPath); - kcfg_ASTAPExecutable->setText(paths.astapBinaryPath); -+ kcfg_WatneyBinary->setText(paths.watneyBinaryPath); - kcfg_AstrometryWCSInfo->setText(paths.wcsPath); - - defaultPathSelector->setCurrentIndex(0); -diff --git a/kstars/ekos/align/opsprograms.ui b/kstars/ekos/align/opsprograms.ui -index fcf59bcea..032d56af8 100644 ---- a/kstars/ekos/align/opsprograms.ui -+++ b/kstars/ekos/align/opsprograms.ui -@@ -7,7 +7,7 @@ - 0 - 0 - 658 -- 481 -+ 517 - - - -@@ -169,6 +169,32 @@ - - - -+ -+ -+ -+ Watney Solver -+ -+ -+ -+ -+ -+ Watney binary: -+ -+ -+ -+ -+ -+ -+ Astrometry.net solve-field binary -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - -@@ -262,4 +288,4 @@ - - - -- -+ -\ No newline at end of file -diff --git a/kstars/ekos/auxiliary/stellarsolverprofile.cpp b/kstars/ekos/auxiliary/stellarsolverprofile.cpp -index 909ae58ed..7109df6e4 100644 ---- a/kstars/ekos/auxiliary/stellarsolverprofile.cpp -+++ b/kstars/ekos/auxiliary/stellarsolverprofile.cpp -@@ -24,8 +24,8 @@ QList getDefaultFocusOptionsProfiles() - focusDefault.keepNum = 100; - focusDefault.minarea = 20; - focusDefault.maxEllipse = 1.5; -- // JM 2021.10.03: Seems to be a lot more reliable than 2 FWHM -- StellarSolver::createConvFilterFromFWHM(&focusDefault, 1); -+ focusDefault.convFilterType = SSolver::CONV_GAUSSIAN; -+ focusDefault.fwhm = 1; - focusDefault.r_min = 5; - focusDefault.maxSize = 10; - focusDefault.removeBrightest = 10; -@@ -37,7 +37,8 @@ QList getDefaultFocusOptionsProfiles() - stars.listName = "2-AllStars"; - stars.description = i18n("Profile for the source extraction of all the stars in an image."); - stars.maxEllipse = 1.5; -- StellarSolver::createConvFilterFromFWHM(&stars, 1); -+ stars.convFilterType = SSolver::CONV_GAUSSIAN; -+ stars.fwhm = 1; - stars.r_min = 2; - profileList.append(stars); - -@@ -45,7 +46,8 @@ QList getDefaultFocusOptionsProfiles() - smallStars.listName = "3-SmallSizedStars"; - smallStars.description = i18n("Profile optimized for source extraction of smaller stars."); - smallStars.maxEllipse = 1.5; -- StellarSolver::createConvFilterFromFWHM(&smallStars, 1); -+ smallStars.convFilterType = SSolver::CONV_GAUSSIAN; -+ smallStars.fwhm = 1; - smallStars.r_min = 2; - smallStars.maxSize = 5; - smallStars.initialKeep = 500; -@@ -57,7 +59,8 @@ QList getDefaultFocusOptionsProfiles() - mid.description = i18n("Profile optimized for source extraction of medium sized stars."); - mid.maxEllipse = 1.5; - mid.minarea = 20; -- StellarSolver::createConvFilterFromFWHM(&mid, 4); -+ mid.convFilterType = SSolver::CONV_GAUSSIAN; -+ mid.fwhm = 4; - mid.r_min = 5; - mid.removeDimmest = 20; - mid.minSize = 2; -@@ -71,7 +74,8 @@ QList getDefaultFocusOptionsProfiles() - big.description = i18n("Profile optimized for source extraction of larger stars."); - big.maxEllipse = 1.5; - big.minarea = 40; -- StellarSolver::createConvFilterFromFWHM(&big, 8); -+ big.convFilterType = SSolver::CONV_GAUSSIAN; -+ big.fwhm = 8; - big.r_min = 20; - big.minSize = 5; - big.initialKeep = 500; -@@ -101,7 +105,8 @@ QList getDefaultGuideOptionsProfiles() - stars.listName = "2-AllStars"; - stars.description = i18n("Profile for the source extraction of all the stars in an image."); - stars.maxEllipse = 1.5; -- StellarSolver::createConvFilterFromFWHM(&stars, 1); -+ stars.convFilterType = SSolver::CONV_GAUSSIAN; -+ stars.fwhm = 1; - stars.r_min = 2; - profileList.append(stars); - -@@ -109,7 +114,8 @@ QList getDefaultGuideOptionsProfiles() - smallStars.listName = "3-SmallSizedStars"; - smallStars.description = i18n("Profile optimized for source extraction of smaller stars."); - smallStars.maxEllipse = 1.5; -- StellarSolver::createConvFilterFromFWHM(&smallStars, 1); -+ smallStars.convFilterType = SSolver::CONV_GAUSSIAN; -+ smallStars.fwhm = 1; - smallStars.r_min = 2; - smallStars.maxSize = 5; - smallStars.initialKeep = 500; -@@ -121,7 +127,8 @@ QList getDefaultGuideOptionsProfiles() - mid.description = i18n("Profile optimized for source extraction of medium sized stars."); - mid.maxEllipse = 1.5; - mid.minarea = 20; -- StellarSolver::createConvFilterFromFWHM(&mid, 4); -+ mid.convFilterType = SSolver::CONV_GAUSSIAN; -+ mid.fwhm = 4; - mid.r_min = 5; - mid.removeDimmest = 20; - mid.minSize = 2; -@@ -135,7 +142,8 @@ QList getDefaultGuideOptionsProfiles() - big.description = i18n("Profile optimized for source extraction of larger stars."); - big.maxEllipse = 1.5; - big.minarea = 40; -- StellarSolver::createConvFilterFromFWHM(&big, 8); -+ big.convFilterType = SSolver::CONV_GAUSSIAN; -+ big.fwhm = 8; - big.r_min = 20; - big.minSize = 5; - big.initialKeep = 500; -@@ -152,8 +160,8 @@ QList getDefaultAlignOptionsProfiles() - SSolver::Parameters defaultProfile; - defaultProfile.listName = "1-Default"; - defaultProfile.description = i18n("Default profile. Generic and not optimized for any specific purpose."); -- // JM 2021.10.03: Seems to help in cases where solver fails to solve any images. -- StellarSolver::createConvFilterFromFWHM(&defaultProfile, 1); -+ defaultProfile.convFilterType = SSolver::CONV_GAUSSIAN; -+ defaultProfile.fwhm = 1; - profileList.append(defaultProfile); - - SSolver::Parameters fastSolving; -@@ -165,7 +173,8 @@ QList getDefaultAlignOptionsProfiles() - fastSolving.keepNum = 50; - fastSolving.initialKeep = 500; - fastSolving.maxEllipse = 1.5; -- StellarSolver::createConvFilterFromFWHM(&fastSolving, 4); -+ fastSolving.convFilterType = SSolver::CONV_GAUSSIAN; -+ fastSolving.fwhm = 4; - profileList.append(fastSolving); - - SSolver::Parameters parLargeSolving; -@@ -176,7 +185,8 @@ QList getDefaultAlignOptionsProfiles() - parLargeSolving.keepNum = 50; - parLargeSolving.initialKeep = 500; - parLargeSolving.maxEllipse = 1.5; -- StellarSolver::createConvFilterFromFWHM(&parLargeSolving, 4); -+ parLargeSolving.convFilterType = SSolver::CONV_GAUSSIAN; -+ parLargeSolving.fwhm = 4; - profileList.append(parLargeSolving); - - SSolver::Parameters fastSmallSolving; -@@ -187,7 +197,8 @@ QList getDefaultAlignOptionsProfiles() - fastSmallSolving.keepNum = 50; - fastSmallSolving.initialKeep = 500; - fastSmallSolving.maxEllipse = 1.5; -- StellarSolver::createConvFilterFromFWHM(&fastSmallSolving, 4); -+ fastSmallSolving.convFilterType = SSolver::CONV_GAUSSIAN; -+ fastSmallSolving.fwhm = 4; - profileList.append(fastSmallSolving); - - return profileList; -@@ -205,7 +216,8 @@ QList getDefaultHFROptionsProfiles() - - hfrDefault.minarea = 20; - hfrDefault.maxEllipse = 1.5; -- StellarSolver::createConvFilterFromFWHM(&hfrDefault, 2); -+ hfrDefault.convFilterType = SSolver::CONV_GAUSSIAN; -+ hfrDefault.fwhm = 2; - hfrDefault.r_min = 5; - hfrDefault.maxSize = 10; - -@@ -224,7 +236,8 @@ QList getDefaultHFROptionsProfiles() - - big.minarea = 40; - big.maxEllipse = 1.5; -- StellarSolver::createConvFilterFromFWHM(&big, 8); -+ big.convFilterType = SSolver::CONV_GAUSSIAN; -+ big.fwhm = 8; - big.r_min = 20; - big.maxSize = 0; - -@@ -242,7 +255,8 @@ QList getDefaultHFROptionsProfiles() - - most.minarea = 10; - most.maxEllipse = 0; -- StellarSolver::createConvFilterFromFWHM(&most, 1); -+ most.convFilterType = SSolver::CONV_GAUSSIAN; -+ most.fwhm = 1; - most.r_min = 3.5; - most.minSize = 0; - most.maxSize = 0; -diff --git a/kstars/ekos/auxiliary/stellarsolverprofileeditor.cpp b/kstars/ekos/auxiliary/stellarsolverprofileeditor.cpp -index c80b7725a..e33c1da30 100644 ---- a/kstars/ekos/auxiliary/stellarsolverprofileeditor.cpp -+++ b/kstars/ekos/auxiliary/stellarsolverprofileeditor.cpp -@@ -241,14 +241,16 @@ SSolver::Parameters StellarSolverProfileEditor::getSettingsFromUI() - params.kron_fact = kron_fact->text().toDouble(); - params.subpix = subpix->text().toInt() ; - params.r_min = r_min->text().toFloat(); -- //params.inflags - params.magzero = magzero->text().toFloat(); -+ params.threshold_bg_multiple = threshMultiple->text().toFloat(); -+ params.threshold_offset = threshOffset->text().toFloat(); - params.minarea = minarea->text().toFloat(); - params.deblend_thresh = deblend_thresh->text().toInt(); - params.deblend_contrast = deblend_contrast->text().toFloat(); - params.clean = (cleanCheckBox->isChecked()) ? 1 : 0; - params.clean_param = clean_param->text().toDouble(); -- StellarSolver::createConvFilterFromFWHM(¶ms, fwhm->value()); -+ params.convFilterType = (SSolver::ConvFilterType) convFilter->currentIndex(); -+ params.fwhm = fwhm->value(); - - //Star Filter Settings - params.resort = resort->isChecked(); -@@ -289,11 +291,14 @@ void StellarSolverProfileEditor::sendSettingsToUI(SSolver::Parameters a) - r_min->setText(QString::number(a.r_min)); - - magzero->setText(QString::number(a.magzero)); -+ threshMultiple->setText(QString::number(a.threshold_bg_multiple)); -+ threshOffset->setText(QString::number(a.threshold_offset)); - minarea->setText(QString::number(a.minarea)); - deblend_thresh->setText(QString::number(a.deblend_thresh)); - deblend_contrast->setText(QString::number(a.deblend_contrast)); - cleanCheckBox->setChecked(a.clean == 1); - clean_param->setText(QString::number(a.clean_param)); -+ convFilter->setCurrentIndex(a.convFilterType); - fwhm->setValue(a.fwhm); - - //Star Filter Settings -diff --git a/kstars/ekos/auxiliary/stellarsolverprofileeditor.ui b/kstars/ekos/auxiliary/stellarsolverprofileeditor.ui -index 54e475cbd..c5d6ea85f 100644 ---- a/kstars/ekos/auxiliary/stellarsolverprofileeditor.ui -+++ b/kstars/ekos/auxiliary/stellarsolverprofileeditor.ui -@@ -347,7 +347,7 @@ - - 3 - -- -+ - - - The minimum radius for stars for flux calculations. -@@ -357,43 +357,47 @@ - - - -- -- -- -- -- 0 -- 0 -- -+ -+ -+ -+ A variable to store the fwhm in pixels used to generate the convolution filter for star detection. - -- -- <a href = "https://sep.readthedocs.io/en/v1.0.x/api/sep.extract.html" >Extraction Params</a> -+ -+ 1 - -- -- true -+ -+ 10 - - - -- -- -- -- <a href="https://sep.readthedocs.io/en/v1.0.x/api/sep.extract.html">Deblending Params</a> -+ -+ -+ -+ This is the 'zero' magnitude used for setting the magnitude scale for the stars in the image during sextraction. - -- -- true -+ -+ 20 - - - -- -- -+ -+ - -- This is the 'zero' magnitude used for setting the magnitude scale for the stars in the image during sextraction. -+ The percentage of flux a separate peak must have to be considered a separate object. - - -- 20 -+ 1 -+ -+ -+ -+ -+ -+ -+ Min Cont. - - - -- -+ - - - This sets the Kron Factor for use with the kron radius for flux calculations. -@@ -403,47 +407,131 @@ - - - -- -- -+ -+ - -- Min Area -+ Kron Factor - - - -- -- -- -- Attempts to 'clean' the image to remove artifacts caused by bright objects -+ -+ -+ -+ Conv FWHM - -+ -+ -+ -+ - -- Clean? -+ magzero - -- -- true -+ -+ -+ -+ -+ -+ Whether to use the SEP_SUM_ELLIPSE method or the SEP_SUM_CIRCLE method or automatically choose. NOTE: Circle is usually better at the moment - -+ -+ 0 -+ -+ -+ -+ Default -+ -+ -+ -+ -+ Custom -+ -+ -+ -+ -+ Gaussian -+ -+ -+ -+ -+ Mexican Hat -+ -+ -+ -+ -+ Top Hat -+ -+ - - -- -- -+ -+ - -- This is the minimum area in pixels for a star detection, smaller stars are ignored. -+ The number of thresholds the intensity range is divided up into. - - -- 5 -+ 32 - - - -- -- -+ -+ -+ -+ -+ 0 -+ 0 -+ -+ -+ -+ <a href = "https://sep.readthedocs.io/en/v1.0.x/api/sep.extract.html" >Extraction Params</a> -+ -+ -+ true -+ -+ -+ -+ -+ -+ -+ r_min -+ -+ -+ -+ -+ - -- The subpixel sampling factor for star extraction -+ Whether to use the SEP_SUM_ELLIPSE method or the SEP_SUM_CIRCLE method or automatically choose. NOTE: Circle is usually better at the moment -+ -+ -+ 1 - -+ -+ -+ Auto -+ -+ -+ -+ -+ Circle -+ -+ -+ -+ -+ Ellipse -+ -+ -+ -+ -+ -+ - -- 5 -+ <a href="https://sep.readthedocs.io/en/v1.0.x/api/sep.extract.html">Deblending Params</a> -+ -+ -+ true - - - -- -+ - - - Thresh -@@ -466,38 +554,34 @@ - - - -- -- -+ -+ - -- Sub Pix -+ Conv Filter - - - -- -- -- -- The number of thresholds the intensity range is divided up into. -- -+ -+ - -- 32 -+ Shape - - - -- -- -- -- Kron Factor -+ -+ -+ -+ Attempts to 'clean' the image to remove artifacts caused by bright objects - -- -- -- -- - -- magzero -+ Clean? -+ -+ -+ true *** 305 LINES SKIPPED ***