Compare commits

...

18 Commits
v0.8 ... main

Author SHA1 Message Date
4be9fdbbe0 v0.11dev 2024-07-30 17:50:05 -07:00
76ddfeb253 v0.10 2024-07-30 17:43:16 -07:00
d846e28cd7 Remove old line from Windows build script 2024-07-30 17:41:50 -07:00
2a7e2ebea7 Remove all files for the release being built 2024-07-30 17:30:51 -07:00
65b5ffc2e0 Include version number in Linux build filenames 2024-07-30 10:15:31 -07:00
3f59791618 Merge branch 'main' of https://git.kj7rrv.com/kj7rrv/navpoint 2024-07-30 10:12:33 -07:00
f44e32a98a Fix separator 2024-07-30 10:12:03 -07:00
765e00446e Improve Windows installer 2024-07-30 10:05:32 -07:00
afdac88880 Show version number on About button 2024-07-30 09:40:00 -07:00
d54e44153d Add missing comma to README 2024-07-30 09:36:08 -07:00
1572244346 Put version number in Windows builds 2024-07-30 09:26:07 -07:00
f74c6ea380 Add version number to READE 2024-07-30 09:25:50 -07:00
e48d9039da Replace cmd build script with PowerShell script 2024-07-29 20:01:28 -07:00
1c40a5e418 Always run the about server 2024-07-29 09:46:36 -07:00
6d4855ff58 Better way to stop server 2024-07-29 09:42:37 -07:00
3d5aa298c9 Format Linux build script 2024-07-29 08:36:07 -07:00
950c052e3f Use local server instead of temporary file 2024-07-29 08:36:05 -07:00
84d05ac06e Give the browser more time to open the About page 2024-07-28 17:09:08 -07:00
7 changed files with 73 additions and 51 deletions

View File

@ -1,4 +1,4 @@
# Navpoint Desktop
# Navpoint Desktop v0.11dev
[Navpoint](https://git.kj7rrv.com/kj7rrv/navpoint) makes the user's current
location available in KML format over a local HTTP server (listening on
@ -20,7 +20,7 @@ recommended where possible, is from a USB GPS receiver that supports the [NMEA
0183](https://en.wikipedia.org/wiki/NMEA_0183) protocol. (A handheld GPS
receiver connected to a computer may or may not work; it does not work with my
Garmin GPSMAP 64st. Any common USB GPS dongle, such as [this one available from
Amazon](https://www.amazon.com/VK-162-G-Mouse-External-Navigation-Raspberry/dp/B01EROIUEW/)
Amazon](https://www.amazon.com/VK-162-G-Mouse-External-Navigation-Raspberry/dp/B01EROIUEW/),
should work, although, of course, I cannot guarantee that any particular device
will be compatible with Navpoint. On Windows, USB mode should work
out-of-the-box with a compatible GPS receiver; on Linux, your user account

View File

@ -1,18 +1,27 @@
#!/bin/sh
arch=$(uname -m)
distName=navpoint-linux-$arch
version=$(head -n 1 README.md | awk '{print $4}')
distName=navpoint-$version-linux-$arch
rm -rf dist/$distName-bundle
rm -rf dist/$distName-*
mkdir -p dist/$distName-bundle
pyinstaller -w -F --hidden-import tornado.web --add-data README.md:files --add-data GPL-3.0.txt:files --add-data CC-BY-SA-4.0.txt:files main.py
pyinstaller --windowed --onefile \
--hidden-import tornado.web \
--add-data README.md:files \
--add-data GPL-3.0.txt:files \
--add-data CC-BY-SA-4.0.txt:files \
main.py
cp dist/main dist/$distName-standalone
mv dist/main dist/$distName-bundle/navpoint
cp icon.png dist/$distName-bundle/navpoint.png
cp GPL-3.0.txt CC-BY-SA-4.0.txt dist/$distName-bundle/
pandoc -s --metadata "title=Navpoint Desktop" README.md | grep -v 'h1 id="navpoint-desktop"' > dist/$distName-bundle/README.html
pandoc -s --metadata "title=Navpoint Desktop" README.md |
grep -v 'h1 id="navpoint-desktop"' \
> dist/$distName-bundle/README.html
cat > dist/$distName-bundle/navpoint.desktop << HERE
[Desktop Entry]

View File

@ -1,4 +0,0 @@
pyinstaller -i=icon.ico --windowed --onefile --hidden-import tornado.web --add-data icon.ico:files --add-data README.md:files --add-data GPL-3.0.txt:files --add-data CC-BY-SA-4.0.txt:files --name=navpoint.exe main.py
"C:\Program Files (x86)\NSIS\makensis.exe" .\windows_installer.nsi
move "dist\navpoint.exe" "dist\navpoint-windows-%PROCESSOR_ARCHITECTURE%-portable.exe"
move "dist\NavpointInstaller.exe" "dist\navpoint-windows-%PROCESSOR_ARCHITECTURE%-installer.exe"

12
build-windows.ps1 Normal file
View File

@ -0,0 +1,12 @@
$version = (Get-Content -Path README.md -TotalCount 1).Split()[3]
$distName = "navpoint-$version-windows-$env:PROCESSOR_ARCHITECTURE"
Remove-Item -Path "dist\$distName-*"
pyinstaller --icon "icon.ico" --windowed --onefile --hidden-import "tornado.web" --add-data "icon.ico:files" --add-data "README.md:files" --add-data "GPL-3.0.txt:files" --add-data "CC-BY-SA-4.0.txt:files" --name "navpoint.exe" "main.py"
(Get-Content ".\windows_installer.nsi" -Raw).Replace("<<version>>", "$version").Replace("<<distName>>", "$distName") | Out-File ".\temp_installer.nsi"
& "C:\Program Files (x86)\NSIS\makensis.exe" ".\temp_installer.nsi"
Remove-Item -Path ".\temp_installer.nsi"
Move-Item -Path "dist\navpoint.exe" -Destination "dist\$distName-portable.exe"

View File

@ -1,30 +1,28 @@
import webbrowser
import tempfile
import time
import os
import threading
import asyncio
import markdown
import tornado.web
import navpoint.fix_path
class AboutHandler(tornado.web.RequestHandler):
def get(self):
with open(navpoint.fix_path.fix_path("README.md")) as f:
readme = markdown.markdown(
f.read()
.replace("https://www.gnu.org/licenses/gpl-3.0.en.html", "#gpl")
.replace(
"https://creativecommons.org/licenses/by-sa/4.0/", "#cc"
)
)
def about():
with open(navpoint.fix_path.fix_path("README.md")) as f:
readme = markdown.markdown(
f.read()
.replace("https://www.gnu.org/licenses/gpl-3.0.en.html", "#gpl")
.replace("https://creativecommons.org/licenses/by-sa/4.0/", "#cc")
)
with open(navpoint.fix_path.fix_path("GPL-3.0.txt")) as f:
gpl = f.read()
with open(navpoint.fix_path.fix_path("GPL-3.0.txt")) as f:
gpl = f.read()
with open(navpoint.fix_path.fix_path("CC-BY-SA-4.0.txt")) as f:
cc = f.read()
with open(navpoint.fix_path.fix_path("CC-BY-SA-4.0.txt")) as f:
cc = f.read()
fd, name = tempfile.mkstemp(suffix=".html")
os.close(fd)
with open(name, "w") as f:
f.write(
self.write(
f"""\
<!DOCTYPE html>
<html>
@ -46,6 +44,19 @@ def about():
"""
)
webbrowser.open(name)
time.sleep(0.5) # Give the browser time to open the file
os.remove(name)
async def _run():
app = tornado.web.Application(
[
("/", AboutHandler),
]
)
app.listen(9999, address="127.0.0.1")
await asyncio.Event().wait()
def run_server():
threading.Thread(target=asyncio.run, args=(_run(),), daemon=True).start()
def about():
webbrowser.open("http://127.0.0.1:9999/")

View File

@ -6,6 +6,9 @@ import navpoint.phone_server
import navpoint.usb
import navpoint.about
def _version():
with open(navpoint.fix_path.fix_path("README.md")) as f:
return f.readline().split()[3]
def run():
def _usb_clicked():
@ -34,10 +37,10 @@ def run():
window, text="Phone running Navpoint Mobile", command=_mobile_clicked
)
mobile_button.pack()
ttk.Separator(window, orient="horizontal").pack()
ttk.Separator(window, orient="horizontal").pack(fill="x", pady=3)
ttk.Label(window, text="Navpoint is free and open-source.").pack()
about_button = ttk.Button(
window, text="About Navpoint", command=navpoint.about.about
window, text="About Navpoint " + _version(), command=navpoint.about.about
)
about_button.pack()
@ -46,6 +49,7 @@ def run():
except tk.TclError:
pass
navpoint.about.run_server()
window.mainloop()
if mode == "mobile":

View File

@ -1,5 +1,5 @@
OutFile "dist\NavpointInstaller.exe"
# define installation directory
Name "Navpoint <<version>>"
OutFile "dist\<<distName>>-installer.exe"
InstallDir $PROFILE\Navpoint
RequestExecutionLevel user
@ -9,25 +9,15 @@ Section
SetOutPath $INSTDIR
File dist\navpoint.exe
# create the uninstaller
WriteUninstaller "$INSTDIR\uninstall.exe"
# create a shortcut named "new shortcut" in the start menu programs directory
# point the new shortcut at the program uninstaller
CreateShortcut "$SMPROGRAMS\Uninstall Navpoint.lnk" "$INSTDIR\uninstall.exe"
CreateShortcut "$SMPROGRAMS\Navpoint.lnk" "$INSTDIR\navpoint.exe"
CreateShortcut "$DESKTOP\Navpoint.lnk" "$INSTDIR\navpoint.exe"
WriteUninstaller "$INSTDIR\uninstall.exe"
CreateShortcut "$SMPROGRAMS\Uninstall Navpoint.lnk" "$INSTDIR\uninstall.exe"
SectionEnd
# uninstaller section start
Section "uninstall"
# Remove the link from the start menu
Delete "$SMPROGRAMS\Uninstall Navpoint.lnk"
# Delete the uninstaller
Delete $INSTDIR\uninstaller.exe
RMDir $INSTDIR
# uninstaller section end
SectionEnd