Skip to content

Applications

The desktop application (nmeasim::app, Qt Widgets) and the nmeasim command-line tool, both built on the libraries.

Namespaces

Namespace Description
nmeasim::app The Qt Widgets desktop application: the main window, its dock panels, the map, the instruments and the settings dialog, built on nmeasim::io.
nmeasim::app::map The slippy-map view of the desktop application, part of nmeasim::app.
nmeasim::app::theme The look of the desktop application: the Theme singleton with its night-bridge and daylight looks and the option to follow the desktop, and the code-painted icons.

Types

Type Description
(anonymous namespace){main.cpp}::RunOptions The options of the run subcommand, as CLI11 parsed them.
nmeasim::app::AppSettings Persistent application preferences (not the simulation profile), stored with QSettings in the platform's native location.
nmeasim::app::CompassDial North-up compass rose: the heading as a vessel-shaped pointer, the course over ground and the bearing to the destination as markers on the ring, and the three values as readouts.
nmeasim::app::ConsoleWidget Scrolling view of the sentences being sent, coloured like a protocol analyser.
nmeasim::app::DashboardWidget The instruments: a compass rose and a wind dial with the position, time and GNSS tiles on top, the grid of digital tiles below.
nmeasim::app::DialWidget Common look of the round instruments: a square widget with a bezel, a ring of ticks and a caption, painted in the colours of the current theme.
nmeasim::app::EngineTile One engine on the dashboard: its label, a running switch and editable revolutions and coolant temperature.
nmeasim::app::InstrumentTile One instrument on the dashboard: a caption, a large digital readout with its unit and, for controllable values, an override checkbox with a spin box.
nmeasim::app::MainWindow Top-level window: a dashboard in the centre, dockable console, outputs and map panels, and a toolbar that controls the profile, the simulation and the transport (pause, step, seek).
nmeasim::app::OutputsPage Settings tab with the list of outputs and an editor for the selected one.
nmeasim::app::OutputsWidget Table of the configured outputs with their live status.
nmeasim::app::SentenceHighlighter Colours the console like a protocol analyser, using sentence_spans and the colours of the current theme; it re-colours everything when the theme changes.
nmeasim::app::SentenceSpan A run of characters in one role.
nmeasim::app::SentencesPage Settings tab that lists every sentence in the registry with its enabled flag, talker and period, plus the position precision.
nmeasim::app::SettingsDialog Modal dialog that edits a copy of a profile in four tabs and applies the edits on OK.
nmeasim::app::SimulationPage Settings tab for the simulation mode, the profile name, the clock, the vessel seed values, their drift and the steering model.
nmeasim::app::StatusLed A coloured indicator light with a short upper-case caption, as on an instrument panel: the run state, recording and the outputs in the status bar.
nmeasim::app::VesselPage Settings tab for the engines and the AIS static data of the own vessel.
nmeasim::app::WindDial Wind instrument relative to the bow: port and starboard close-hauled sectors, the apparent wind as an arrow and the true wind as a hollow marker, with angles and speeds as readouts.
nmeasim::app::map::MapWidget A slippy map: raster tiles from a TileCache, the vessel with its heading and a vector of its course and speed, the track it has sailed, and mouse, touchpad and keyboard navigation.
nmeasim::app::map::MapWidget::Vessel The vessel as last placed with set_vessel.
nmeasim::app::map::ScaleBar Length and caption of the scale bar.
nmeasim::app::map::TileCache Serves map tiles from memory, then from a directory on disk, and finally by downloading them from a tile server.
nmeasim::app::map::TileCache::Failure A tile that failed to download.
nmeasim::app::map::TileKey Address of one tile: its zoom level and its column and row at that level.
nmeasim::app::theme::Colors Every colour of one look, by role.
nmeasim::app::theme::Theme Applies the looks to the application and tells custom-painted widgets when they change.

Files

File Description
src/app/app_settings.cpp Implementation of AppSettings: the QSettings keys and the default values read back when a key was never written.
src/app/app_settings.hpp AppSettings, the desktop application's preferences stored with QSettings.
src/app/dialogs/outputs_page.cpp Implementation of OutputsPage, the Outputs tab of the settings dialog.
src/app/dialogs/outputs_page.hpp The Outputs tab of the settings dialog: the list of a profile's outputs and an editor for the selected one.
src/app/dialogs/sentences_page.cpp Implementation of SentencesPage, the Sentences tab of the settings dialog.
src/app/dialogs/sentences_page.hpp The Sentences tab of the settings dialog, SentencesPage.
src/app/dialogs/settings_dialog.cpp Implementation of SettingsDialog: builds the tabs and buttons, and validates and stores the pages when OK is pressed.
src/app/dialogs/settings_dialog.hpp The settings dialog, which edits a copy of a profile in four tabs.
src/app/dialogs/simulation_page.cpp Implementation of SimulationPage, the Simulation tab of the settings dialog.
src/app/dialogs/simulation_page.hpp The Simulation tab of the settings dialog, SimulationPage.
src/app/dialogs/vessel_page.cpp Implementation of VesselPage, the Vessel tab of the settings dialog.
src/app/dialogs/vessel_page.hpp The Vessel tab of the settings dialog, VesselPage.
src/app/main.cpp Entry point of the desktop application, NMEASimulatorX.
src/app/main_window.cpp Implementation of MainWindow: building the actions, menus, toolbar, docks and status bar, wiring them to the io::SimulationRunner, and the slots behind every action.
src/app/main_window.hpp MainWindow, the top-level window of the desktop application.
src/app/map/map_widget.cpp Painting, view arithmetic and input handling of MapWidget, and the scale bar choice.
src/app/map/map_widget.hpp The map view of the desktop application, MapWidget, and the scale bar it draws.
src/app/map/tile_cache.cpp Memory, disk and network lookup, download queue, failure memory and disk writes of TileCache.
src/app/map/tile_cache.hpp Map tile cache: tiles from memory, then from disk, then downloaded from a tile server.
src/app/map/tile_math.cpp Web Mercator (EPSG:3857) projection formulas behind the slippy-map tile arithmetic.
src/app/map/tile_math.hpp Web Mercator (EPSG:3857) tile arithmetic for slippy maps, the scheme OpenStreetMap uses.
src/app/theme/icons.cpp The drawing code of the toolbar and menu icons and their rendering into pixmaps.
src/app/theme/icons.hpp The toolbar and menu icons of the desktop application, painted in code.
src/app/theme/theme.cpp The colour tables of the night-bridge and daylight looks, the style-sheet template and the Theme singleton that applies them.
src/app/theme/theme.hpp The Theme singleton that applies the night-bridge or daylight look, and the colour tables of both looks.
src/app/widgets/console_widget.cpp Implementation of ConsoleWidget: filtering, buffering and the timed flush into the view.
src/app/widgets/console_widget.hpp The ConsoleWidget dock panel that shows the sentences and messages being sent.
src/app/widgets/dashboard_widget.cpp Layout, readouts and override wiring of the dashboard and its engine tiles.
src/app/widgets/dashboard_widget.hpp The central dashboard of the main window: the compass and wind dials, the instrument tiles with their override controls and one tile per engine.
src/app/widgets/dials.cpp Painting of the compass rose and the wind dial, and the wind angle helpers.
src/app/widgets/dials.hpp The round instruments of the dashboard: a north-up compass rose and a wind dial relative to the bow, painted in code in the colours of the current theme.
src/app/widgets/instrument_tile.cpp Layout, fonts and override control of the dashboard's instrument tiles.
src/app/widgets/instrument_tile.hpp The digital instrument tile of the dashboard: a caption, a large readout with its unit and an optional override control.
src/app/widgets/outputs_widget.cpp Table and status lights of the Outputs panel.
src/app/widgets/outputs_widget.hpp The Outputs panel of the main window: one table row per output of the runner, with a coloured status light and live counters.
src/app/widgets/sentence_highlighter.cpp Implementation of sentence_spans and SentenceHighlighter.
src/app/widgets/sentence_highlighter.hpp The SentenceHighlighter that colours the console, and sentence_spans, the pure function that splits a console line into coloured runs.
src/app/widgets/status_led.cpp Implementation of StatusLed: its size, blinking and painting.
src/app/widgets/status_led.hpp The StatusLed indicator light with a caption, used in the status bar.
src/cli/main.cpp Entry point of nmeasim, the headless command-line simulator.