From 2b6ea7d533d043fc5c71dd5cddd72aa415cb9a8e Mon Sep 17 00:00:00 2001 From: Jason Mobarak Date: Tue, 29 Aug 2023 14:06:14 -0700 Subject: [PATCH 1/2] feat: enable running on NixOS --- resources/SolutionTab.qml | 11 +++++++- shell.nix | 56 +++++++++++++++++++++++++++++++++++++++ swiftnav_console/main.py | 11 ++++---- 3 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 shell.nix diff --git a/resources/SolutionTab.qml b/resources/SolutionTab.qml index 14125a7e7..7258ee71c 100644 --- a/resources/SolutionTab.qml +++ b/resources/SolutionTab.qml @@ -25,6 +25,7 @@ import QtCharts import QtQuick import QtQuick.Controls import QtQuick.Layouts + import "SolutionTabComponents" as SolutionTabComponents MainTab { @@ -57,7 +58,15 @@ MainTab { SolutionTabComponents.SolutionVelocityTab { } - SolutionTabComponents.SolutionMapTab { + Rectangle { + width: parent.width + height: parent.height + Loader { + sourceComponent: Globals.enableMap ? solutionMap : null + } + } + + property Component solutionMap: SolutionTabComponents.SolutionMapTab { } } } diff --git a/shell.nix b/shell.nix new file mode 100644 index 000000000..650b38470 --- /dev/null +++ b/shell.nix @@ -0,0 +1,56 @@ +{ pkgs ? import {} }: + +(pkgs.buildFHSUserEnv { + name = "swift-toolbox"; + targetPkgs = pkgs: (with pkgs; + [ imagemagick + libxcrypt-legacy + glib + capnproto + openssl + pkg-config + cmake + clang + libglvnd + libxkbcommon + nss + nspr + wayland + fontconfig + freetype + expat + alsa-lib + dbus + libkrb5 + zlib + gdb + ]) ++ (with pkgs.xorg; + [ libX11 + libXcursor + libXrandr + libxkbfile + libXcomposite + libXdamage + libXext + libXfixes + libXrender + libXtst + libxcb + xcbutilkeysyms + xcbutilimage + xcbutilwm + xcbutilrenderutil + libXi + libxshmfence + ]); + profile = '' + unset QT_QPA_PLATFORMTHEME + unset QT_STYLE_OVERRIDE + unset QTWEBKIT_PLUGIN_PATH + unset QT_PLUGIN_PATH + + export PKG_CONFIG_PATH="${pkgs.openssl.dev}/lib/pkgconfig" + export LIBCLANG_PATH="${pkgs.llvmPackages_11.libclang.lib}/lib" + ''; + runScript = "bash"; +}).env diff --git a/swiftnav_console/main.py b/swiftnav_console/main.py index e029cbd4a..6bc5f5d83 100644 --- a/swiftnav_console/main.py +++ b/swiftnav_console/main.py @@ -148,8 +148,6 @@ settings_rows_to_dict, ) -from .solution_map import SolutionMap - from .solution_position_tab import ( SolutionPositionModel, SolutionPositionPoints, @@ -261,7 +259,7 @@ capnp.remove_import_hook() # pylint: disable=no-member MAP_ENABLED = [False] - +SolutionMap = QObject class BackendMessageReceiver(QObject): # pylint: disable=too-many-instance-attributes _request_quit: Signal = Signal() @@ -493,12 +491,10 @@ def _process_message_buffer(self, buffer): up = m.statusBarStatus.ntripUpload down = m.statusBarStatus.ntripDownload down_units = "B/s" - if down >= 1000: down /= 1000 down = round(down, 1) down_units = "KB/s" - connected = m.statusBarStatus.ntripConnected if connected: data[Keys.NTRIP_DISPLAY] = f"{up}B/s ⬆ {down}{down_units} ⬇" @@ -798,6 +794,11 @@ def main(passed_args: Optional[Tuple[str, ...]] = None) -> int: QQuickStyle.setStyle("Material") # We specifically *don't* want the RobotoCondensed-Bold.ttf font so we get the right look when bolded. + if MAP_ENABLED[0]: + global SolutionMap # pylint: disable=global-statement + from .solution_map import SolutionMap as SolutionMap_ # pylint: disable=import-outside-toplevel + SolutionMap = SolutionMap_ # type: ignore + qmlRegisterType(ConnectionData, "SwiftConsole", 1, 0, "ConnectionData") # type: ignore qmlRegisterType(AdvancedImuPoints, "SwiftConsole", 1, 0, "AdvancedImuPoints") # type: ignore qmlRegisterType(AdvancedMagnetometerPoints, "SwiftConsole", 1, 0, "AdvancedMagnetometerPoints") # type: ignore From 7e7fa23eafe37bfa63dc914a5b14155cc3b27e9a Mon Sep 17 00:00:00 2001 From: Jason Mobarak Date: Wed, 30 Aug 2023 13:58:17 -0700 Subject: [PATCH 2/2] formatting --- resources/SolutionTab.qml | 1 - swiftnav_console/main.py | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/resources/SolutionTab.qml b/resources/SolutionTab.qml index 7258ee71c..86b074e63 100644 --- a/resources/SolutionTab.qml +++ b/resources/SolutionTab.qml @@ -25,7 +25,6 @@ import QtCharts import QtQuick import QtQuick.Controls import QtQuick.Layouts - import "SolutionTabComponents" as SolutionTabComponents MainTab { diff --git a/swiftnav_console/main.py b/swiftnav_console/main.py index 6bc5f5d83..5c57809e5 100644 --- a/swiftnav_console/main.py +++ b/swiftnav_console/main.py @@ -261,6 +261,7 @@ MAP_ENABLED = [False] SolutionMap = QObject + class BackendMessageReceiver(QObject): # pylint: disable=too-many-instance-attributes _request_quit: Signal = Signal() @@ -797,6 +798,7 @@ def main(passed_args: Optional[Tuple[str, ...]] = None) -> int: if MAP_ENABLED[0]: global SolutionMap # pylint: disable=global-statement from .solution_map import SolutionMap as SolutionMap_ # pylint: disable=import-outside-toplevel + SolutionMap = SolutionMap_ # type: ignore qmlRegisterType(ConnectionData, "SwiftConsole", 1, 0, "ConnectionData") # type: ignore