[general]
name=Military Cartography Tools
qgisMinimumVersion=3.44.0
qgisMaximumVersion=4.99.0
description=Military cartography, MIL-STD-2525D/E and APP-6D/E tactical graphics, MGRS, and terrain analysis tools for QGIS. Runs fully offline - no external services, no data ever leaves your machine.
author=Praveen Kumar
license=GPL-2.0+
email=kattapraveen.kr@gmail.com
version=1.1.0

changelog=1.1.0
    - Renamed in two Entity dropdowns: what the Land Installation and
      Activities layers called "Law Enforcement Vessel" is Coast Guard,
      which is what the standard prints for that code and what the
      plugin has always drawn. If you picked that entry before, your
      symbol is unchanged and was always correct - only the name in the
      list was wrong. The genuine Law Enforcement Vessel, on the Sea
      Surface layer, is untouched.
    - Land Equipment's law-enforcement entities were missing eight of
      their twelve: ATF, Department of Justice, FBI, Police, Secret
      Service, TSA, Coast Guard and US Marshals Service have been
      added alongside the Border Patrol, Customs and DEA entries that
      were already there.
    - Land Installation gained the two it was missing, ATF and Police,
      completing that layer's law-enforcement list as well.
    - Corrected two names that read "Agency" where the standard reads
      "Administration" - Drug Enforcement Administration (DEA) and
      Transportation Security Administration (TSA). Symbols unchanged.
    - The test suite now runs against QGIS 4.2.1 alongside 3.44.12.
    - Added MIL-STD-2525E and APP-6E tactical graphics support, alongside
      the existing MIL-STD-2525D/APP-6D symbology, via a new "Symbology
      Edition" toolbar menu. This picks which standard NEWLY added
      symbology layers are built against; a layer already in a project
      is never changed by switching it, and a layer created before this
      existed keeps working exactly as before (it is read as 2525D,
      which is what it always was). Adding the same layer type under
      both editions now works side by side in one project - they get
      distinct names, e.g. "Air (2525D/6D)" and "Air (2525E/6E)".
    - Land Unit's own Sector 1/Sector 2 modifier dropdowns are now
      available on the Land Unit layer (133 codes), matching the
      existing modifier dropdowns already on Land Civilian, Equipment
      and Installation.
    - Fixed a real, if narrow, correctness bug in a third-party library
      this plugin bundles: 8 of Land Unit's own Sector 1 modifiers
      (Airmobile/Air Assault, Node Center, Sensor Control Module, Single
      Shelter Switch, Accident, Other, Civilian, Antisubmarine Warfare)
      were drawing the wrong icon under MIL-STD-2525D. Picking one of
      these from the dropdown now draws the icon its own name describes.
    - Fixed the Boundary line's echelon marker (C2 Measures): choosing
      an echelon without also typing a unit designation used to leave
      it undrawn entirely, and choosing it alongside only one
      designation could draw it on the wrong side of the line. It now
      always appears where the standard's own template puts it.
    - Two label corrections: the Activities layer's "Law Enforcement"
      entity now reads "Law Enforcement Operation", matching the
      standard's own wording; several MIL-STD-2525E "(Generic)" entries
      that rendered as an unhelpful blank circle with nothing to
      distinguish them have been removed from the Entity dropdowns they
      appeared in.
    - Under MIL-STD-2525E, every Sector 1/Sector 2 Modifier dropdown
      that already existed now also offers that standard's 93 "common"
      modifiers (things like Robotic, Cargo or Command Post Node, which
      apply across many symbol types rather than one) alongside the
      symbol's own list. A symbol set with no MIL-STD-2525E modifiers of
      its own still has no dropdown, same as before.
    - Added an "Insert Symbol" button to every print layout window's own
      toolbar: pick an Affiliation, Symbol Set and Entity and it places
      that symbol directly on the layout page as a normal, draggable
      picture item - for a legend key or callout, without needing a
      georeferenced feature on the map.
    1.0.3
    - Correctness fix: the drawn UTM/GZD grid now honours the two
      exceptions the standard itself makes. Over south-west Norway
      (band V) zone 31V is 3 degrees wide and 32V is 9, not 6 each;
      over Svalbard (band X) zones 32X, 34X and 36X do not exist at
      all, with 31X, 33X, 35X and 37X widened to cover that ground.
      MGRS coordinate conversion already applied both, so the grid
      layer and the plugin's own MGRS readings had disagreed with
      each other in those two regions.
    - Three fixes to the GZD labels: they no longer pile up on top of
      one another at world scale and bury the grid lines; they no
      longer disappear when you pan inside a zone larger than the
      map view; and they no longer overhang into the neighbouring
      zone when only a narrow strip of a zone is on screen. Where a
      label switches placement is now decided from each cell's own
      size rather than one global scale for the whole world.
    - The user guide's "Getting a DEM" section now covers GMRT for
      bathymetry, including what to expect from below-sea-level
      elevations once loaded.
    1.0.2
    - The Bandit suppression added in 1.0.1 for the mine-scatter random
      number generator was one line too high to take effect, so that
      false positive came back on upload. Moved onto the flagged line
      itself, and the whole set verified by running Bandit locally
      rather than by another upload round-trip.
    1.0.1
    - Fixed the findings from 1.0.0's automated Plugin Repository
      review: the milsymbol.js bridge now imports QJSEngine through
      qgis.PyQt rather than PyQt5/PyQt6 directly, so it resolves to
      whichever Qt binding the running QGIS was built against. The
      remaining scanner findings were false positives (a deterministic,
      seeded random generator used for mine-symbol scatter, and four
      MIL-STD-2525D entity names containing the word "Secret" - the US
      Secret Service - read as credentials by keyword heuristics); each
      is now annotated in place rather than silently left to re-flag.
    1.0.0
    - First stable release. The plugin is no longer marked experimental.
    - Complete MIL-STD-2525D / APP-6 tactical graphics (Phase 10): the
      full control-measure set - manoeuvre, offensive, defensive,
      obstacle, fire support, target acquisition, airspace, maritime,
      CBRN defence, deception, intelligence, sustainment, command and
      control, field fortification, and mission tasks - plus entity
      symbols across the land, air, sea surface, subsurface, space,
      cyberspace, SIGINT and activities layers, all keyed to their own
      SIDC. Drawn as real QGIS symbology (geometry generators, data-
      defined properties, rule-based labelling), not stamped images, so
      every symbol scales, rotates and prints correctly at any map
      scale.
    - Viewshed gained a coverage colour picker and an outline-only
      rendering option, so several observers' coverage can be told
      apart and laid over terrain without hiding it.
    - Tanaka Contours now carries a caution about generation time,
      which can be long on a large DEM at a fine contour interval.
    0.3.0
    - New navigation and production tools (Phase 9): a Bearing/Range tool,
      GPX/KML waypoint import/export, and Map Sheet Series - batch-generate
      a numbered series of print sheets tiling a large area, each sheet
      named after the real UTM/MGRS grid square it falls in, not an
      invented numbering scheme.
    - Every print layout now includes an automatic grid-position diagram
      showing where the map sits in the UTM/MGRS grid hierarchy, with the
      map's own footprint outlined to scale.
    - Line of Sight and Viewshed dialogs now show MGRS alongside latitude/
      longitude.
    - Hypsometric Tint gained an optional stepped/discrete colour ramp
      (in addition to the existing smooth gradient), and the shared
      colour ramp it uses with Tanaka Contours was warmed from a dusty
      rose toward a proper orange/brown hue in the mid-to-high elevation
      bands.
    0.2.1
    - Fixed Plugin Repository validator findings from the 0.2.0 upload:
      3 Qt6 forward-compatibility enum-scoping errors in the new
      Line of Sight/Viewshed marker code, and a security finding
      (insecure tempfile.mktemp() usage, 9 call sites across the new
      terrain analysis modules) - all Processing algorithm outputs now
      use QgsProcessing.TEMPORARY_OUTPUT instead.
    0.2.0
    - New terrain analysis toolset (Phase 8), all fully offline/local:
      Tanaka (illuminated) contours, Hypsometric Tint, Line of Sight,
      Combined Hillshade, and Viewshed (dead-ground analysis) - each
      driven entirely by local GDAL/QGIS Processing against your own
      DEM, with no network access of any kind.
    0.1.2
    - Fixed MGRS 100km grid labels landing in the wrong square at some
      zoom levels, and the print-layout scale bar rendering too large
      at close-in scales (e.g. 1:1,000-1:2,000).
    0.1.1
    - Fixed Plugin Repository validator findings: fully-scoped QGIS enum
      access (Qt6 forward-compatibility) and one Flake8 lambda-assignment
      finding.
    0.1.0
    - Initial release: MGRS conversion, coordinate probe, military grid
      generation (UTM/GZD, MGRS 100km, 10/5/1km sub-grids), automated
      print-layout production, grid convergence and magnetic declination
      (WMM2025) expression functions.

about=Military Cartography Tools (MCT) is a QGIS plugin providing tools for military mapping, including MIL-STD-2525D/E and APP-6D/E tactical graphics (control measures and entity symbols, drawn as real QGIS symbology rather than stamped images, so they scale and print correctly at any map scale, with a per-layer edition switch to choose which standard a symbology layer is built against), MGRS coordinate handling, military grid generation, layout automation, coordinate conversion, cartographic utilities, terrain analysis (illuminated contours, hypsometric tint, line of sight, combined hillshade, and viewshed/dead-ground analysis), and navigation/production tools (bearing/range, GPX/KML waypoint import/export, and batch print-sheet generation tiling a large area). Every tool runs entirely offline against local data - GDAL/QGIS Processing, a bundled World Magnetic Model, and your own DEM - with no external services, API calls, or telemetry of any kind, making it suitable for use with sensitive or classified data.

tracker=https://github.com/kattapraveen/MilitaryCartographyTools/issues
repository=https://github.com/kattapraveen/MilitaryCartographyTools
homepage=https://github.com/kattapraveen/MilitaryCartographyTools

category=Cartography
icon=icons/icon.svg

experimental=False
deprecated=False

# Declared on the strength of real evidence, not intent: the full test
# suite runs against QGIS 4.2.1 (Qt6) on every change, alongside 3.44.12
# (Qt5), and both have to pass before anything ships. Without this flag
# the Plugin Repository cannot tell a Qt6-ready plugin from one that has
# simply never been tried, and presents it accordingly.
supportsQt6=True

hasProcessingProvider=False

tags=MGRS,military,cartography,grid,UTM,coordinates,layout,mapping,terrain,DEM,hillshade,viewshed,line of sight,offline,GPX,KML,waypoints,bearing,range,print layout,MIL-STD-2525,MIL-STD-2525E,APP-6,APP-6E,NATO,tactical graphics,control measures,symbology
