Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Steppir Widget #444

Open
wants to merge 31 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
c1a3f92
DX Filter
aa5sh Jul 31, 2024
3446edb
Fix for MacOS Layout Geometry Restore
aa5sh Jul 31, 2024
a378b1b
DX Filter: Spot Dedup setting - using default macros and units for TI…
foldynl Aug 2, 2024
42d0993
DX Filter: Improved Time and Freq Settings
foldynl Aug 2, 2024
26733b5
Awards
aa5sh Jul 31, 2024
939eaf2
Awards: SOTA/POTA/WWFF modifications
foldynl Aug 9, 2024
c3b487d
Awards: Reworked Dynamic SQL statement; POTA supports list of POTAs a…
foldynl Aug 9, 2024
3f11d0f
Update .gitignore
aa5sh Aug 18, 2024
01b0351
Steppir
aa5sh Aug 19, 2024
98dff70
trybuild
aa5sh Aug 19, 2024
26b0227
Update macOSBuild.yml
aa5sh Aug 19, 2024
c174ca0
alert widget spacing
aa5sh Aug 22, 2024
a843c61
Merge branch 'Steppir-Feature' of https://github.com/aa5sh/QLog into …
aa5sh Aug 22, 2024
897056b
Added more Steppir integrations
aa5sh Aug 24, 2024
091ebd2
Update macOSBuild.yml
aa5sh Aug 25, 2024
ead65b8
Update macOSBuild.yml
aa5sh Aug 25, 2024
dc0efdf
Update macOSBuild.yml
aa5sh Aug 25, 2024
2e566b5
Merge remote-tracking branch 'upstream/AA5SH_DXFilter' into Steppir-F…
aa5sh Aug 25, 2024
6be311c
Merge remote-tracking branch 'upstream/AA5SH_FixLayoutGeo' into Stepp…
aa5sh Aug 25, 2024
232f5ac
Merge remote-tracking branch 'upstream/AwardsPOTASOTAWWFF' into Stepp…
aa5sh Aug 25, 2024
5b8f85b
Update macOSBuild.yml
aa5sh Aug 25, 2024
d59de45
Update macOSBuild.yml
aa5sh Aug 26, 2024
a2bc04f
Update macOSBuild.yml
aa5sh Aug 26, 2024
4acd490
Update entitlements.xml
aa5sh Aug 26, 2024
b859727
Update macOSBuild.yml
aa5sh Aug 27, 2024
f614688
Update macOSBuild.yml
aa5sh Aug 27, 2024
846dcad
Update macOSBuild.yml
aa5sh Aug 27, 2024
e9f49e5
rig caps fix
aa5sh Aug 27, 2024
06c8495
Merge branch 'Steppir-Feature' of https://github.com/aa5sh/QLog into …
aa5sh Aug 27, 2024
c12f486
Update HamlibRigDrv.cpp
aa5sh Aug 27, 2024
ab3eb66
Update HamlibRigDrv.cpp
aa5sh Aug 27, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added .DS_Store
Binary file not shown.
138 changes: 125 additions & 13 deletions .github/workflows/macOSBuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
name: MacOS Build
strategy:
matrix:
os: [macos-12, macos-13]
os: [macos-13]

runs-on: ${{ matrix.os }}

Expand All @@ -32,11 +32,30 @@ jobs:
brew install brotli
brew install icu4c
brew install pkg-config
brew install automake
brew install autoconf
brew install libtool
brew install libusb-compat

- name: Checkout Code
uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: recursive
- name: Checkout Code
uses: actions/checkout@v4
with:
repository: hamlib/hamlib
path: ./hamlib

- name: Configure and compile
run: |
cd ./hamlib
./bootstrap
./configure --prefix=/Users/runner/work/QLog/QLog/hamlib
make -j 4
make check
make install
- name: Get version from tag
run : |
TAGVERSION=$(git describe --tags)
Expand All @@ -46,23 +65,116 @@ jobs:
run: |
mkdir build
cd build
qmake -config release ..
qmake "HAMLIBINCLUDEPATH = /Users/runner/work/QLog/QLog/hamlib/include" "HAMLIBLIBPATH = /Users/runner/work/QLog/QLog/hamlib/lib" "HAMLIBVERSION_MAJOR = 4" "HAMLIBVERSION_MINOR = 6" "HAMLIBVERSION_PATCH = 0" -config release ..
make -j4
- name: Build dmg
run: |
cd build
macdeployqt qlog.app -executable=./qlog.app/Contents/MacOS/qlog
macdeployqt qlog.app
cp `brew --prefix`/lib/libhamlib.dylib qlog.app/Contents/Frameworks/libhamlib.dylib
cp `brew --prefix`/lib/libqt6keychain.dylib qlog.app/Contents/Frameworks/libqt6keychain.dylib
cp `brew --prefix`/lib/libdbus-1.dylib qlog.app/Contents/Frameworks/libdbus-1.dylib
cp `brew --prefix brotli`/lib/libbrotlicommon.1.dylib qlog.app/Contents/Frameworks/libbrotlicommon.1.dylib
cp `brew --prefix`/opt/icu4c/lib/libicui18n.74.dylib qlog.app/Contents/Frameworks/libicui18n.74.dylib
install_name_tool -change `brew --prefix`/lib/libhamlib.dylib @executable_path/../Frameworks/libhamlib.dylib qlog.app/Contents/MacOS/qlog
install_name_tool -change `brew --prefix`/lib/libqt6keychain.dylib @executable_path/../Frameworks/libqt6keychain.dylib qlog.app/Contents/MacOS/qlog
install_name_tool -change @loader_path/libbrotlicommon.1.dylib @executable_path/../Frameworks/libbrotlicommon.1.dylib qlog.app/Contents/MacOS/qlog
install_name_tool -change /usr/local/opt/icu4c/lib/libicui18n.74.dylib @executable_path/../Frameworks/libicui18n.74.dylib qlog.app/Contents/MacOS/qlog
otool -L qlog.app/Contents/MacOS/qlog
macdeployqt qlog.app -dmg
- name: Codesign app bundle
# Extract the secrets we defined earlier as environment variables
env:
MACOS_CERTIFICATE: ${{ secrets.PROD_MACOS_CERTIFICATE }}
MACOS_CERTIFICATE_PWD: ${{ secrets.PROD_MACOS_CERTIFICATE_PWD }}
MACOS_CERTIFICATE_NAME: ${{ secrets.PROD_MACOS_CERTIFICATE_NAME }}
MACOS_CI_KEYCHAIN_PWD: ${{ secrets.PROD_MACOS_CI_KEYCHAIN_PWD }}
run: |
# Turn our base64-encoded certificate back to a regular .p12 file
echo $MACOS_CERTIFICATE | base64 --decode > certificate.p12
# We need to create a new keychain, otherwise using the certificate will prompt
# with a UI dialog asking for the certificate password, which we can't
# use in a headless CI environment
security create-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
security import certificate.p12 -k build.keychain -P "$MACOS_CERTIFICATE_PWD" -T /usr/bin/codesign
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$MACOS_CI_KEYCHAIN_PWD" build.keychain
# We finally codesign our app bundle, specifying the Hardened runtime option
sudo codesign --deep --force --verify --verbose --sign "$MACOS_CERTIFICATE_NAME" --options runtime /Users/runner/work/QLog/QLog/build/qlog.app
sudo codesign --force --verify --verbose --sign "$MACOS_CERTIFICATE_NAME" --entitlements /Users/runner/work/QLog/QLog/entitlements.xml --options runtime /Users/runner/work/QLog/QLog/build/qlog.app/Contents/Frameworks/QtWebEngineCore.framework/Helpers/QtWebEngineProcess.app/Contents/MacOS/QtWebEngineProcess
sudo codesign --force --verify --verbose --sign "$MACOS_CERTIFICATE_NAME" --options runtime /Users/runner/work/QLog/QLog/build/qlog.app/Contents/MacOS/qlog
- name: "Notarize app bundle"
# Extract the secrets we defined earlier as environment variables
env:
PROD_MACOS_NOTARIZATION_APPLE_ID: ${{ secrets.PROD_MACOS_NOTARIZATION_APPLE_ID }}
PROD_MACOS_NOTARIZATION_TEAM_ID: ${{ secrets.PROD_MACOS_NOTARIZATION_TEAM_ID }}
PROD_MACOS_NOTARIZATION_PWD: ${{ secrets.PROD_MACOS_NOTARIZATION_PWD }}
run: |
# Store the notarization credentials so that we can prevent a UI password dialog
# from blocking the CI

echo "Create keychain profile"
xcrun notarytool store-credentials "notarytool-profile" --apple-id "$PROD_MACOS_NOTARIZATION_APPLE_ID" --team-id "$PROD_MACOS_NOTARIZATION_TEAM_ID" --password "$PROD_MACOS_NOTARIZATION_PWD"

echo "Creating temp notarization archive"
ditto -c -k --keepParent "/Users/runner/work/QLog/QLog/build/qlog.app" "notarization.zip"

# Here we send the notarization request to the Apple's Notarization service, waiting for the result.
# This typically takes a few seconds inside a CI environment, but it might take more depending on the App
# characteristics. Visit the Notarization docs for more information and strategies on how to optimize it if
# you're curious

echo "Notarize app"
xcrun notarytool submit "notarization.zip" --keychain-profile "notarytool-profile" --wait

echo "Attach staple"
xcrun stapler staple "/Users/runner/work/QLog/QLog/build/qlog.app"
- name: make dmg
run: |
mkdir out
cp -R "/Users/runner/work/QLog/QLog/build/qlog.app" out
cd out
ln -s /Applications/ Applications
cd ..
hdiutil create -volname "QLog Installer" -srcfolder out -ov -format UDZO "/Users/runner/work/QLog/QLog/build/qlog.dmg"
- name: Codesign dmg bundle
# Extract the secrets we defined earlier as environment variables
env:
MACOS_CERTIFICATE: ${{ secrets.PROD_MACOS_CERTIFICATE }}
MACOS_CERTIFICATE_PWD: ${{ secrets.PROD_MACOS_CERTIFICATE_PWD }}
MACOS_CERTIFICATE_NAME: ${{ secrets.PROD_MACOS_CERTIFICATE_NAME }}
MACOS_CI_KEYCHAIN_PWD: ${{ secrets.PROD_MACOS_CI_KEYCHAIN_PWD }}
run: |
# Turn our base64-encoded certificate back to a regular .p12 file
##echo $MACOS_CERTIFICATE | base64 --decode > certificate.p12
# We need to create a new keychain, otherwise using the certificate will prompt
# with a UI dialog asking for the certificate password, which we can't
# use in a headless CI environment
##security create-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
##security default-keychain -s build.keychain
##security unlock-keychain -p "$MACOS_CI_KEYCHAIN_PWD" build.keychain
##security import certificate.p12 -k build.keychain -P "$MACOS_CERTIFICATE_PWD" -T /usr/bin/codesign
##security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$MACOS_CI_KEYCHAIN_PWD" build.keychain
# We finally codesign our app bundle, specifying the Hardened runtime option
/usr/bin/codesign --timestamp -s "$MACOS_CERTIFICATE_NAME" --options runtime --deep -f /Users/runner/work/QLog/QLog/build/qlog.dmg
- name: "Notarize app bundle"
# Extract the secrets we defined earlier as environment variables
env:
PROD_MACOS_NOTARIZATION_APPLE_ID: ${{ secrets.PROD_MACOS_NOTARIZATION_APPLE_ID }}
PROD_MACOS_NOTARIZATION_TEAM_ID: ${{ secrets.PROD_MACOS_NOTARIZATION_TEAM_ID }}
PROD_MACOS_NOTARIZATION_PWD: ${{ secrets.PROD_MACOS_NOTARIZATION_PWD }}
run: |
# Store the notarization credentials so that we can prevent a UI password dialog
# from blocking the CI

echo "Create keychain profile"
xcrun notarytool store-credentials "notarytool-profile" --apple-id "$PROD_MACOS_NOTARIZATION_APPLE_ID" --team-id "$PROD_MACOS_NOTARIZATION_TEAM_ID" --password "$PROD_MACOS_NOTARIZATION_PWD"

echo "Creating temp notarization archive"
ditto -c -k --keepParent "/Users/runner/work/QLog/QLog/build/qlog.dmg" "notarization.zip"

# Here we send the notarization request to the Apple's Notarization service, waiting for the result.
# This typically takes a few seconds inside a CI environment, but it might take more depending on the App
# characteristics. Visit the Notarization docs for more information and strategies on how to optimize it if
# you're curious

echo "Notarize app"
xcrun notarytool submit "notarization.zip" --keychain-profile "notarytool-profile" --wait

echo "Attach staple"
xcrun stapler staple "/Users/runner/work/QLog/QLog/build/qlog.dmg"

- name: Copy artifact
uses: actions/upload-artifact@v4
with:
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -49,3 +49,4 @@ compile_commands.json

# QtCreator local machine specific files for imported projects
*creator.user*
/build
3 changes: 3 additions & 0 deletions QLog.pro
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ SOURCES += \
ui/SettingsDialog.cpp \
ui/ShowUploadDialog.cpp \
ui/StatisticsWidget.cpp \
ui/Steppir.cpp \
ui/SwitchButton.cpp \
ui/WebEnginePage.cpp \
ui/WsjtxFilterDialog.cpp \
Expand Down Expand Up @@ -297,6 +298,7 @@ HEADERS += \
ui/QrzDialog.h \
ui/ShowUploadDialog.h \
ui/SplashScreen.h \
ui/Steppir.h \
ui/StyleItemDelegate.h \
ui/RigWidget.h \
ui/RotatorWidget.h \
Expand Down Expand Up @@ -349,6 +351,7 @@ FORMS += \
ui/SettingsDialog.ui \
ui/ShowUploadDialog.ui \
ui/StatisticsWidget.ui \
ui/Steppir.ui \
ui/WsjtxFilterDialog.ui \
ui/WsjtxWidget.ui

Expand Down
4 changes: 3 additions & 1 deletion core/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -562,6 +562,8 @@ int main(int argc, char* argv[])
w.setWindowIcon(icon);

w.show();

#ifdef Q_OS_OSX
w.setLayoutGeometry();
#endif
return app.exec();
}
Binary file added devtools/.DS_Store
Binary file not shown.
11 changes: 11 additions & 0 deletions entitlements.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key><true/>
<key>com.apple.security.cs.disable-library-validation</key><true/>
<key>com.apple.security.cs.allow-jit</key><true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
</dict>
</plist>
33 changes: 32 additions & 1 deletion rig/drivers/HamlibRigDrv.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -577,7 +577,7 @@ bool HamlibRigDrv::checkFreqChange()
}

if ( rigProfile.getFreqInfo
&& rig->caps->get_freq )
&& rig->caps->get_freq )
{
freq_t vfo_freq;
int status = rig_get_freq(rig, RIG_VFO_CURR, &vfo_freq);
Expand Down Expand Up @@ -605,6 +605,37 @@ bool HamlibRigDrv::checkFreqChange()
return false;
}
}
else if ( rigProfile.getFreqInfo
&& rig->caps->get_vfo )
{
freq_t vfo_freq;
vfo_t vfo;
rig_get_vfo(rig, &vfo);
int status = rig_get_freq(rig, vfo, &vfo_freq);

if ( status == RIG_OK )
{
qCDebug(runtime) << "Rig Freq: "<< QSTRING_FREQ(Hz2MHz(vfo_freq));
qCDebug(runtime) << "Object Freq: "<< QSTRING_FREQ(Hz2MHz(currFreq));

if ( vfo_freq != currFreq || forceSendState )
{
currFreq = vfo_freq;
qCDebug(runtime) << "emitting FREQ changed";
emit frequencyChanged(Hz2MHz(currFreq),
Hz2MHz(getRITFreq()),
Hz2MHz(getXITFreq()));
}
}
else
{
lastErrorText = hamlibErrorString(status);
emit errorOccured(tr("Get Frequency Error"),
lastErrorText);
qCWarning(runtime) << "Get Freq error" << lastErrorText;
return false;
}
}
else
{
qCDebug(runtime) << "Get Freq is disabled";
Expand Down
3 changes: 3 additions & 0 deletions rig/macros.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,8 @@
#ifndef MHz
#define MHz(f) ((double)((f)*(double)1000000))
#endif
#ifndef kHz
#define kHz(f) ((double)((f)*(double)1000))
#endif

#endif // RIG_MACROS_H
25 changes: 17 additions & 8 deletions ui/AlertWidget.ui
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
<item>
<widget class="QTableView" name="alertTableView">
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
<enum>Qt::FocusPolicy::ClickFocus</enum>
</property>
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
<set>QAbstractItemView::EditTrigger::NoEditTriggers</set>
</property>
<property name="tabKeyNavigation">
<bool>false</bool>
Expand All @@ -35,23 +35,32 @@
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum>
<enum>QAbstractItemView::SelectionMode::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
<enum>QAbstractItemView::SelectionBehavior::SelectRows</enum>
</property>
<property name="verticalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
<enum>QAbstractItemView::ScrollMode::ScrollPerPixel</enum>
</property>
<property name="horizontalScrollMode">
<enum>QAbstractItemView::ScrollPerPixel</enum>
<enum>QAbstractItemView::ScrollMode::ScrollPerPixel</enum>
</property>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>24</number>
</attribute>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderMinimumSectionSize">
<number>20</number>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>20</number>
</attribute>
</widget>
</item>
<item>
Expand Down Expand Up @@ -79,7 +88,7 @@
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
Expand All @@ -92,7 +101,7 @@
<item>
<widget class="QPushButton" name="clearAllButton">
<property name="focusPolicy">
<enum>Qt::ClickFocus</enum>
<enum>Qt::FocusPolicy::ClickFocus</enum>
</property>
<property name="text">
<string>Clear All</string>
Expand Down
Loading